# 适用范围
* 本规范适用宝物交易事业部;
* 本规范适用于项目或需求,BUG修复或紧急上线不属于本规范范畴。
# 为什么要规范
* 避免漏传文件致重大问题;
* 避免上线顺序致重大问题;
# 上线前准备些什么
## 确认测试通过
> 必须通过测试工程师、研发负责人、项目负责人确认测试通过,否则不可进行上线操作。
## 数据库变更资料
### 新增表
> 由后端开发工程师以txt文件的方式整理并提供新表结构生成SQL语句。
### 表结构变更更
> 由后端开发工程师以txt文件的方式整理并提供表结构变更SQL语句。
### 原有数据变更
> 由后端开发工程师以txt文件的方式整理并提供数据变更SQL语句。
## 文件变更列表
### API
> * 由后端工程师以txt文件的方式整理后端变更程式列表;
> * 按svn文件路径归类,相同路径整理一起;
### 后端程序
> * 由后端工程师以txt文件的方式整理后端变更程式列表;
> * 按svn文件路径归类,相同路径整理一起;
### 前端程序
> * 由前端开发工程师以txt文件的方式整理前端端变更程式(CSS/CSS/图片)列表;
> * 按svn文件路径归类,相同路径整理一起;
### 自动执行程式
> * 由后端开发工程师整理;
> * 明确执行时间或频率。
# 上线步骤
|步骤|上线内容|备注|
|--|
|1|新增表、表结构更改|使用ThinkPHP框架的项目注意刷新字段缓存,如游戏宝、8591安卓版后端、主站API。|
|2|数据变更|同1|
|3|API程式||
|4|前端配置变更|如:JS配置|
|5|合并文件|注意步骤:<br>1.更新文件<br>2.合并文件<br>3.提交SVN|
|6|核对文件列表|与开发工程师核对上传文件列表|
|7|上传文件|步骤5-7要严格按部就班。|
|8|观察运行情况|包括:<br>1.PHP错误、慢日志;<br>2.SQL错误、慢日志;<br>3.服务器负载;<br>4.前端脚本错误;<br>5.数据正确性;<br>观察时间视项目大小,范围于30分钟至2小时|
# 什么时间可以上线
|序号|工作日|上线时间|
|--|
|1|周一至周四|10:30~17:00|
|2|周五|10:30~15:00|
# 怎么判断是否需要关站
|序号|内容|备注|
|--|
|1|数据表结构变动|包括:<br>增加字段;<br>更改字段类型、默认值;<br>增加或修改索引;<br>以上操作预计用时超过1分钟|
|2|数据备份|数据导出时,防止有新进数据未备份|
|3|新旧功能不兼容或重大功能变更|可能出现会员前部分操作是旧版,后部分是新版,从而导致数据出错|
|4|需要在线上测试|部分功能可能受环境影响,只能在线上测试通过后才可对会员开放|
# 文件上传完就完事了吗
> No!!请回头看“上线步骤-观察运行情况”部分。
# 附录
## 错误文件与位置
|错误|位置|
|--|
|NGINX错误|/usr/local/nginx/logs/error.log|
|PHP错误|/tmp/php-error.log<br>/usr/local/php5/var/log/error.log|
|PHP慢日志|/usr/local/php5/var/log/www.log.slow|
|MYSQL错误|/home/htdocs/new8591/8591/data/logs/sql/errorLogYYMMhtml<br>/home/htdocs/new8591/8591/data/logs/sql/pdo_errorLogYYMMhtml|
|MYSQL慢日志|SELECT * FROM mysql.slow_log|
|MYSQL进程|/usr/local/mysql/bin/mysqladmin –h[host] –u[user] –p[password] pr stat -v \| grep -v Sleep|
|API日志|/home/htdocs/new8591/api/App/Runtime/Logs/YY-MM-DD.log|
|JS错误日志|/home/htdocs/new8591/8591/data/logs/js_error.log|
## 项目上线确认表
|项目名称|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX项目|
|--|--|
|研发负责人||
|上线负责人||
|上线日期||
|流程|确认内容|负责人|签字|
|--|
|项目测试|确认测试环境通过测试|测试工程师||
|数据库|新增表SQL语句|开发工程师||
||原有表结构更改SQL语句|开发工程师||
||数据变更SQL语句|开发工程师||
|文件整理|后端程式变更列表|开发工程师||
||API文件变更列表|开发工程师||
||前端脚本/样式/图档变更列表|开发工程师||
|合并文件|合并并解决所有冲突|研发负责人||
|文件核对|确认无遗漏文件|开发工程师||
|文件上传|确认全部上传且成功|研发负责人||
|配置变更|确认配置更新成功|研发负责人||
|上线观察|确认无错误或已全部修复|研发负责人||
|项目验收|确认项目正确运行|项目负责人||