这是一个比其他提到的更好的解决方案:http:
//stanlemon.net/2013/03/22/composer-on-openshift/
博文中提到的部署脚本
:如果没有作曲家,则下载作曲家并将其存储在数据目录中,以便它在 git pushs 中持续存在
b. 使 composer 可以使用 .composer 目录中存储在持久数据目录中的缓存版本的包,从而减少频繁推送所需的时间
脚本有一个小问题 - 它所指的 php 版本被作曲家抱怨为太旧
remote: #!/usr/bin/env php
remote: Some settings on your machine may cause stability issues with Composer.
remote: If you encounter issues, try to change the following:
remote:
remote: Your PHP (5.3.3) is quite old, upgrading to PHP 5.3.4 or higher is recommended.
remote: Composer works with 5.3.2+ for most people, but there might be edge case issues.
所以我更改了路径以使用系统上的最新版本
[domain.rhcloud.com action_hooks]\> php --version
PHP 5.4.16 (cli) (built: Dec 6 2013 01:17:01)
[domain.rhcloud.com 5316aa83e0b8cdb61b00023a]\> which php
/opt/rh/php54/root/usr/bin/php
我的 .openshift/action_hooks/deploy 中的脚本是
#!/bin/bash
# Run composer install
cd app-root/runtime/repo/
export COMPOSER_HOME="$OPENSHIFT_DATA_DIR/.composer"
if [ ! -f "$OPENSHIFT_DATA_DIR/composer.phar" ]; then
curl -s https://getcomposer.org/installer | /opt/rh/php54/root/usr/bin/php -- --install-dir=$OPENSHIFT_DATA_DIR
else
/opt/rh/php54/root/usr/bin/php $OPENSHIFT_DATA_DIR/composer.phar self-update
fi
( unset GIT_DIR ; cd $OPENSHIFT_REPO_DIR ; /opt/rh/php54/root/usr/bin/php $OPENSHIFT_DATA_DIR/composer.phar install )
正如博客文章所建议的那样 - 在标记子目录中创建一个空的 hot_deploy 文件,通过说在推送期间不应重新启动服务器来进一步加快速度 -
touch .openshift/markers/hot_deploy
git add .openshift/markers/hot_deploy
git add .openshift/action_hooks/deploy
git commit -m "Speeding up composer installs across pushes"
git push origin master
即使使用作曲家,也要注意你的 git 推送速度很快。