设为首页 收藏本站
查看: 731|回复: 0

[经验分享] php代码上线,实现版本切换

[复制链接]

尚未签到

发表于 2018-12-18 11:20:28 | 显示全部楼层 |阅读模式
  以下为现有php业务,代码上线方式。实现:4套环境版本切换。
[root@hz-web-01 htdocs]# cat release.sh
#!/usr/bin/env bash
work_dir=/mnt/var/www/htdocs
release_dir=/var/www/htdocs
# app environment
app_env=$1
# build release file path
build_file_path=$2
help() {
   echo
   echo usage: ${0##*/} [app_env] [build_file_path]
   echo example: ${0##*/} int lvanclub_int_build_20150731_170557.tar.gz
   echo
   exit 0
}
# check the app_env variable value
case ${app_env} in
   dev)
       echo "ECHO: don't support dev environment present"
       help
       exit 1
       ;;
   int)
       user=apache
       group=apache
       ;;
   sandbox)
       user=apache
       group=apache
       ;;
   live)
       user=php-fpm
       group=php-fpm
       ;;
   *)
       echo "ERROR: invalid app_env value, should be dev, int, sandbox orlive!"
       help
       exit 1
       ;;
esac
# check the build_file_path variable value
if [ -z ${build_file_path} ]
then
   echo "ERROR: please specify the build file path"
   help
   exit 1
elif [ ! -f ${build_file_path} ]
then
   echo "ERROR: specified build file '${build_file_path}' is notfound"
   help
   exit 1
fi
# reference: linux shell 字符串操作(长度,查找,替换)详解 - http://www.cnblogs.com/chengmo/archive/2010/10/02/1841355.html
# only keep the build folder name
build_file_name=${build_file_path##*/}
build_name=${build_file_name%.tar.gz}
# if current build folder exists, justremove it
rm ${work_dir}/${build_name} -rvf
tar xzvf ${build_file_path}--directory=${work_dir}/
# make soft link for cpserver project
cd ${work_dir}/${build_name}/sdkserver/web
ln -s ../../cpserver cpserver
# copy log files
cd ${work_dir}
# appstore
cp${release_dir}/${app_env}/appstore/apps/api/var/logs ${work_dir}/${build_name}/appstore/apps/api/var/-rvf
# appstore dashboard
cp${release_dir}/${app_env}/appstore/apps/dashboard/var/logs${work_dir}/${build_name}/appstore/apps/dashboard/var/ -rvf
# sdkserver
cp${release_dir}/${app_env}/sdkserver/protected/logs${work_dir}/${build_name}/sdkserver/protected/ -rvf
cp${release_dir}/${app_env}/sdkserver/protected/runtime${work_dir}/${build_name}/sdkserver/protected/ -rvf
# cpserver
cp ${release_dir}/${app_env}/cpserver/logs${work_dir}/${build_name}/cpserver/ -rvf
# change file owners and permissions
chown ${user}:${group}${work_dir}/${build_name} -R
chmod 775 ${work_dir}/${build_name} -R
# make build as current release
rm ${release_dir}/${app_env} -vf
ln -s ${work_dir}/${build_name}${release_dir}/${app_env}
# restart php-fpm service
service php-fpm restart  

  以上脚本内容较少,没有注释。下面进行解读
  采用这种方式的原因:阿里云平台,挂载磁盘被分配在/mnt目录下
  

  实际目录:/mnt/var/www/htdocs
  软连接目录:/var/www/htdocs
  正如help所说  dev 环境   int环境   sandbox环境  live环境   四套环境的版本切换。live环境为线上正式环境。
  

  我已将思路共享,希望大家能给出改良方案!
  

  
  #2015-08-26      以下为每次代码上线的实施文档
  #此文档为暂时文档,后期部署jenkins 更换
  #1 检查tar.gz文件里面一级菜单内容
  #2 回滚操作:
  # 根据第三步,选择近期升级版本。
  

  第一步:
  把要升级的软件包,传送至服务器:hz-bf-01
  代码存放位置:/mnt/word
  第二布:
  分发软件包到相应的服务器
  sh /mnt/shell/fenfa.sh /mnt/word/lvanclub_live_build_20150826_111450.tar.gz /mnt/var/www/htdocs
  第三步:
  执行ansiable:
  ansible -i ./hosts  web -m command -a "sh /mnt/var/www/htdocs/release.sh live /mnt/var/www/htdocs/lvanclub_live_build_20150827_153156.tar.gz"
  






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-652800-1-1.html 上篇帖子: php设计模式下 下篇帖子: php防止快速刷屏留言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表