由于每个团队都不太一样, 所以这里的规范仅供参考
服务器操作规范
账号
- 非必要情况下,以非
root
用户登录操作 - 多人操作环境,给定普通用户账号
- 非必要情况下,以非
口令
- 控制口令强度,修改频次为一个月或三个月 (当有拥有密码用户离职,立即更改口令)
磁盘使用
- 监控磁盘使用情况, 防止爆盘
重要文件管理
- 备份
- 添加不可更改位, 这样
root
用户修改也要指定参数
1 | chattr +i filename // 加 不可更改位 |
IP
、端口- 限制端口访问
- 禁止修改登录接口
- 禁止绑定任意程序到特定端口
- 进程不直接绑定在环路地址上面(0.0.0.0), 需要绑定内网
IP
监控
- 开启监控, 比如开启监控日志,
nginx
默认自带开启日志 - 系统或软件从官方渠道下载
- 系统命令禁止修改,如
rm
、mv
- 开启监控, 比如开启监控日志,
访问控制
- 禁用目录浏览、敏感文件数据禁止放在
web
目录下面
- 禁用目录浏览、敏感文件数据禁止放在
相关操作规范
服务器
- 危险操作前一定要备份
数据库
- 绑定内网
ip
- 设置登录密码
- 删除默认数据及用户
- 新建
mysql
用户和组,相关权限给到mysql
用户 - 库、表级别操作慎重(例如:
drop
、truncate
命令)
- 绑定内网
危险操作
rm -rf dir/filename
此命令强制删除文件或目录,操作前务必备份cp -r
kill -9 pid
此命令强制杀掉正在运行的进程,使当前进程对应程序立即退出,一般会丢失数据- 数据库相关 (
delete
,drop
,truncate
) 操作前一定备份数据,操作时最好有人确认
自动化
- 重要文件或数据库备份自动化 可通过
crontab
任务来定时执行 - 服务或程序本身属于定时任务,则对于重要数据、文件在服务或程序内部自行实现
- 重要文件或数据库备份自动化 可通过
团队编码规范
详细规范参考 PSR – PHP 标准规范
这里列举一些:
[强制] 采用
4
个空格缩进而不是2
个空格或tab
字符[强制] 所有的块状结构都要缩进
[强制]
switch
语句缩进要合理[强制] 注释时,注释符两边的空白符必不可少
[强制] 任何保留字(如
if
,while
,for
等等)与紧随其后的左括号之间要有一个空格[强制] 任何保留字(如
else
、catch
等)与其前面的右大括号之间要有一个空格[强制] 任何左大括号
{
前必须加一个空格[强制] 在任何二元或三元运算符的两侧必须有空格
1 | // good |
- [强制] 一元运算符与操作对象之间不允许有空格
1 | // good |
- [强制] 在
,
、:
、;
及右括号)
后必须空格
1 | for (int i = 0; i < 100; i++) { |
[强制] 行尾不得有多余的空格
[强制] 本规范没有要求的空格不要随便乱加
错误例子:
1 | // good |
- [强制] 列限制:
80
、100
还是120
?
一个项目可以选择一行80
个字符或100
个字符的列限制。
我推荐 80
个字符。
任何一行如果超过这个字符数限制,必须换行。
- [强制] 如果在非赋值运算符处断开,那么在该符号前断开
1 | // good |
- [强制] 如果在赋值运算符处断开,通常的做法是在该符号后断开
1 | // good,虽然在这里没必要换行 |
[强制] 非空块得换行遵守 K & R 风格
- 左大括号前不换行
- 左大括号后换行
- 右大括号前换行
- 如果右大括号是一个语句、函数体或类的终止,则右大括号后换行; 否则不换行。
例如,如果右大括号后面是else
或逗号,
, 则不换行。
[强制] 类名、接口名以
UpperCamelCase
风格编写
1 | // good |
- [强制] 测试类的命名以它要测试的类的名称开始,以
Test
结束
1 | class HashTest { |
- [强制] 常量名以 CONSTANT_CASE 风格编写
全部字母大写, 用下划线分隔单词。
- [强制] 常量必须用常量修饰符修饰
1 | // good |
- [强制] 非常量字段名、参数名、局部变量名以
lowerCamelCase
风格编写
版本控制规范
语义化版本
版本格式:
1 | 主版本号.次版本号.修订号 |
版本号递增规则如下:
- 主版本号:当你做了不兼容的 API 修改
- 次版本号:当你做了向下兼容的功能性新增
- 修订号:当你做了向下兼容的问题修正。
大中小版本
版本号希望遵循大中小版本号编制:
X.0
为大版本改版上线;X.X.0
为小版本优化升级;X.X.X
为同版本的bug修复更新;
比如:
blog2.0 为博客系统大改版V2.0的象征;
blog2.1 为博客系统小版本升级V2.1的象征
blog2.1.1为博客系统同版本bug修复优化的信号。