在实际项目开发中,我们常常通过流程发布来实现项目代码部署; 当我们项目生产中有异常情况需要线上调试时才能保证git源代码不被污染。
基本流程为:
- 移除线上项目
- 拷贝git项目到线上项目
- 修改线上项目配置文件
- 进入线上项目,执行所需编译
- 权限赋予
- ...
以下便是在作者在nginx环境下发布laravel项目时的简单shell发布脚本, 文件名project.sh,代码如下:
#!/bin/bash
#read su
gitdir=/home/fidding/project
proddir=/var/www/html/project
\rm -rf ${proddir}
\cp -r $gitdir/. $proddir/
sed -i 's/DB_DATABASE=homestead/DB_DATABASE=sunbar_voice_qa/' ${proddir}/.env
sed -i 's/DB_USERNAME=homestead/DB_USERNAME=voice_qa/' ${proddir}/.env
sed -i 's/DB_PASSWORD=secret/DB_PASSWORD=voice2007#@!/' ${proddir}/.env
sed -i 's/APP_DEBUG=true/APP_DEBUG=true/' ${proddir}/.env
sed -i 's/APP_ENV=local/APP_ENV=test/' ${proddir}/.env
sed -i 's/BROADCAST_DRIVER=log/BROADCAST_DRIVER=redis/' ${proddir}/.env
cd ${proddir} && php artisan cache:clear
composer clear-cache
composer dump-autoload --optimize
php artisan clear-compiled
php artisan optimize --force
php artisan config:clear
php artisan config:cache
php artisan route:clear
php artisan route:cache
php artisan view:clear
chmod -R 777 ${proddir}/storage
发布指令
./project.sh
原文地址:http://www.fidding.me/article/39
happy coding!