bash实现一键部署staging环境
最近在分离Staging和Production和环境,每次部署起来,很多事情都是在做重复的操作,之前一直在学习Linux,于是写了个简单的bash脚本来实现一键部署.
先讲下缺点:
目前需要手动将bash脚本scp到服务器上,在安装composer的时候需要提前将php环境配置好,不然就可能出现安装的失败的情况.
废话不多说,上代码.
文中xxx.com 等于 实际操作的项目路径,公司内部项目特做了替换处理.
#!/bin/bash
#创建staging目录 拉取项目
staging_path=/data/staging/
if [ ! -e ${staging_path} ];then
#创建staging目录
mkdir -p ${staging_path}
cd ${staging_path}
fi
#克隆项目
git clone http://sz001/web/xxxxxxx.com.git
cd xxxxx.com
#复制配置文件
cp .env.local .env
#相关依赖安装
composer install
#部署nginx
cd /usr/local/nginx/conf/vhost
//打印当前目录
pwd
#conf文件位置
nginx_conf_path=staging.xxxxxxx.com.conf
#创建conf文件
touch $nginx_conf_path
#nginx配置
nginx_conf="server {
server_name localhost;
root /data/staging/xxxxxxx.com/public;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 12h;
}
include enable-php.conf;
access_log off;
}"
#重定向输出到 conf文件中
echo "$nginx_conf" > $nginx_conf_path
#重新加载nginx配置
nginx -s reload
具体的代码讲解在bash中了,以上操作实现简单了克隆项目和nginx部署.
实战操作:
待改进的还有很多,如有错误,还请指出.
这个人暂时没有 freestyle