|
|
# Web项目上线流程不完全指南
|
|
|
## 前提条件——遵循gitflow规范
|
|
|
|
|
|
1. 以前:有测试环境、预生产环境、线上正式环境,分别对应的分支是beta、stable、master。gitflow没有很好的执行。
|
|
|
2. 现在:有测试环境、线上灰度环境、线上正式环境,分别对应的分支是releaseXXX、master、master。现在严格按照gitflow来执行。
|
|
|
3. 差异点:beat、stable一直都存在,不符合gitflow规范,合并分支时,容易产生冲突,会导致很多的上线问题。
|
|
|
遵循gitflow规范的releaseXXX分支,在上线稳定后,生命周期结束,合并分支时,产生的冲突较少。
|
|
|
|
|
|
## 测试环境上线步骤
|
|
|
注: 以后测试环境由测试人员维护。
|
|
|
|
|
|
### 开发在本地提交代码
|
|
|
git fetch
|
|
|
git checkout -b release/4.3 在版本转测之前从develop拉一个分支,命名release/4.3
|
|
|
git merge --no-ff origin/master(建议有这一步,以免上线前合入master产生大量冲突导致最终上线的功能异常)(这一步有异议,gitflow上没有)
|
|
|
将package.json、application.developer.ini相关的4个文件的静态资源升1个版本
|
|
|
compile下新建一个该版本命名的文件夹用于存放缓存文件(强制提交git add -f)
|
|
|
cd static
|
|
|
gulp ge 产生的static/dist文件(强制提交git add -f)
|
|
|
git add XXXX
|
|
|
git commit -m “注释”
|
|
|
git push origin/release/4.3 提交上述所有的更新
|
|
|
|
|
|
合并遇到冲突的解决办法
|
|
|
a、命令 使用git checkout —theirs 文件路径, 这样接受远程某个目录的代码
|
|
|
git checkout —ours 文件路径 ,接收本地代码
|
|
|
要取两者合集的,手工进行合并。
|
|
|
|
|
|
b、IDE的git插件
|
|
|
Atom、PHPstorm、WebStorm都有相应的git插件,可以很直观的查看冲突的情况。
|
|
|
|
|
|
c、compare文件比对工具
|
|
|
|
|
|
### 测试在测试机拉代码
|
|
|
ssh root@测试机IP
|
|
|
再输入密码
|
|
|
|
|
|
git checkout -b release/4.3
|
|
|
git pull origin/release/4.3
|
|
|
如有需要,进入compile当前版本的文件夹,rm -rf * 删除所有的缓存文件。
|
|
|
|
|
|
注意:1、查看yohobuy.php文件是否是测试环境的接口
|
|
|
2、检查index-test.php中的use_cache的值为false
|
|
|
|
|
|
## 灰度环境上线步骤
|
|
|
灰度环境也是生产环境, 要求和生产环境一样严格。
|
|
|
十分重要,先检查yohobuy.php的接口是否是生产环境。(之前发生过测试环境接口的代码发送到生产环境了,还好及时发现了)
|
|
|
cd static
|
|
|
gulp ge 产生的static/dist文件(强制提交git add -f)
|
|
|
gulp dist 将静态资源推送到CDN
|
|
|
|
|
|
在master上打tag标记
|
|
|
git tag release4.3
|
|
|
git push --tags
|
|
|
|
|
|
通知测试发上线邮件或自己发邮件,邮件内容包括代码位置、nginx的修改(如有修改需提醒将线上文件备份)、发布到哪个服务器(目前PC及H5都要发腾讯云和亚马逊、node活动只发亚马逊)、host设置及其它有必要交代的事项。如果是node活动,邮件注明pm2重启的命令:pm2 restart yoho-activity-node
|
|
|
|
|
|
hosts设置如下,该地址是腾讯云灰度环境的外网IP:
|
|
|
123.206.1.107 5cm.m.yohobuy.com item.m.yohobuy.com login.m.yohobuy.com m.yohobuy.com new.m.yohobuy.com guang.m.yohobuy.com search.m.yohobuy.com list.m.yohobuy.com nike.m.yohobuy.com sale.m.yohobuy.com *.m.yohobuy.com 2percent.m.yohobuy.com huodong.yohobuy.com
|
|
|
|
|
|
## 生产环境上线步骤
|
|
|
十分重要,先检查yohobuy.php的接口是否是生产环境。(之前发生过测试环境接口的代码发送到生产环境了,还好及时发现了)
|
|
|
|
|
|
步骤与预生产环境上线步骤基本一致,区别:理论上测试时不指host,如特定要测试某个云还是要指hosts(找运维要IP)
|
|
|
|
|
|
如有必要,将版本升1个版本(升级版本compile下的文件夹也要新加一个并强制提交)。
|
|
|
如果必要,需要重新打tag标记,如release4.3.1
|
|
|
|
|
|
|
|
|
上线(包括上灰度环境)需要非常谨慎,仔细合代码,细心、细心、细心,重要的事情讲三遍。
|
|
|
由于上线时间一般比较晚,精神没有白天好,所以务必在白天做好准备工作,并提前想好上线失败的退路(代码和配置文件的备份是否正常),如上线失败要立即回滚,不能中断线上业务太长时间,然后排查上线时的代码、配置及日志文件。
|
|
|
|
|
|
## 上线成果确认
|
|
|
1、进行主流程验证:登录、浏览商品、搜索、加入购物车、提交订单、支付(包括微信支付)
|
|
|
2、如发现功能异常,登录堡垒机核实代码版本以及nginx配置是否正确,有时运维的操作可能遗漏部分机器。
|
|
|
3、上线稳定后,将release合入到develop分支,然后删除release分支。
|
|
|
|
|
|
## 其它注意事项
|
|
|
1 连接服务器的命令
|
|
|
ssh 用户名@密码
|
|
|
|
|
|
2 连接堡垒机的命令
|
|
|
旧堡垒机:ssh -p 6002 用户名@192.168.250.114
|
|
|
新的堡垒机机:ssh -p 222 用户名@54.222.221.24
|
|
|
|
|
|
Windows使用网站进行登陆堡垒机更方便。
|
|
|
|
|
|
3 测试nginx是否正常,启动,重启的命令
|
|
|
sudo nginx -t (测试nginx文件是否有语法错误)
|
|
|
./nginx (启动)
|
|
|
./nginx -s reload (修改nginx需要重启后才生效)
|
|
|
|
|
|
4 compile下以版本号命名的缓存文件文件夹要存在并且有读写权限,否则程序可能不能正常访问
|
|
|
查看读写权限:ls -l
|
|
|
修改文件权限:chmod 777 1.3.22 , 这里1.3.22是文件夹名
|
|
|
|
|
|
要避免上述操作,请确保推送到远程的代码已经有版本号命名的缓存文件夹。(正式环境以及灰度环境运维只拉代码,不会去新建文件夹的)
|
|
|
如在测试环境发现上述现象,及时补救,加上文件夹并推送远程。
|
|
|
|
|
|
5 查看进程是否启动的命令 ps -ef | grep 进程名
|
|
|
例如:一个502错误定位过程,是发现apache服务已经停掉了
|
|
|
|
|
|
|
|
|
|
|
|
6 与APP相关的nginx配置
|
|
|
|
|
|
|
|
|
有时候APP的同事会来让我们改一个其中的配置,请跟同事确认是改测试环境还是线上环境,如果是线上环境需要合入master
|
|
|
配置的文档路径:http://git.dev.yoho.cn/mobile/yohoapi/blob/master/
|
|
|
|
|
|
比如要开启DNS直连,文档如下:
|
|
|
|
|
|
|
|
|
去MD5在线网站:http://md5jiami.51240.com/ ,将kdl字符串进行加密, 取结果32位小写放在nginx文件中
|
|
|
|
|
|
|
|
|
|
|
|
7 如上线后回滚,再通过运维系统拉代码可能更新不到任何代码,登陆堡垒机核实是否真的没有拉到新代码,如果是,需要通知运维重新建一个文件夹,重新拉代码。
|
|
|
|
|
|
8 堡垒机用于查看线上服务器的代码和配置,信息如下:
|
|
|
亚马逊堡垒机 密码123456
|
|
|
172.31.23.111
|
|
|
172.31.21.139
|
|
|
172.31.22.1
|
|
|
172.31.20.56
|
|
|
172.31.31.146
|
|
|
172.31.16.147
|
|
|
172.31.25.17
|
|
|
|
|
|
腾讯云堡垒机
|
|
|
10.66.1.2
|
|
|
10.66.1.3
|
|
|
10.66.1.4
|
|
|
10.66.1.5
|
|
|
10.66.1.6
|
|
|
10.66.1.7
|
|
|
10.66.1.8
|
|
|
10.66.101.9(腾讯云灰度环境内网IP,其余是正式环境) |
|
|
\ No newline at end of file |
...
|
...
|
|