在实际项目开发中,我们常常通过流程发布来实现项目代码部署; 当我们项目生产中有异常情况需要线上调试时才能保证git源代码不被污染。

基本流程为:

  1. 移除线上项目
  2. 拷贝git项目到线上项目
  3. 修改线上项目配置文件
  4. 进入线上项目,执行所需编译
  5. 权限赋予
  6. ...

以下便是在作者在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

happy coding!!!