代码部署规范

系统部署规范

1. OS

  • 系统基础工具、服务javascript

  • 系统配置优化前端

2. 业务系统

2.1 业务系统说明文档

  • 系统部署手册java

    • 系统使用语言以及版本node

    • 系统使用扩展库版本python

    • 系统使用中间件版本mysql

  • 系统维护手册nginx

2.2 管理员

  • 每个业务系统,都有一个独立的业务帐号,用来管理业务的代码、脚本、以及服务的上线与更新web

  • 每个业务系统,都有惟一的运维人员使用业务帐号,对系统进行操做管理sql

    • 目前由产品团队的技术人员负责,待运维体系创建后,移交由运维人员负责数据库

  • 业务系统使用到数据库服务的,请参照数据库相关规范【link】

2.3 代码目录

  • 系统代码要求部署在非系统分区

  • 代码目录结构说明

# 代码目录结构
# /cnicg/[group]/[project]/
#                             web/
#                             www/
#                             script/
#                             conf.d/
#                             other/
  • cnicg : 单位项目统一目录,位于非系统分区,经过软链接(ln -s /path /cnicg)到cnicg目录

    • 其目录权限为: 755 cnicg:cnicg

  • group : 小组名称,不一样的业务小组命名不一样

    • 其目录权限为: 700 group:group

  • project : 小组业务下的项目目录

  • web: 项目下的后端代码目录

  • www: 项目下的前端代码目录

  • script: 项目下的工具脚本

  • conf.d : 项目配置文档,或者位于web迷路下

  • other: 其余,待补充

2.4 日志

  • 日志目录要求位于非系统目录

  • 日志结构说明

# 日志目录说明
# #1. 业务系统日志
# /var/log/cnicg/[group]/[project]/port/
#                                         /service.log
#                                         /error.log
# #2. nginx日志
# /var/log/cnicg/[group]/[project]/nginx/
#                                         /access.log
#                                         /error.log
# #3. other日志
# ### 3.1 mysql
# ### 3.2 mongo
# ### 3.3 rabbitmq

2.5 nginx

  • nginx版本 (v1.10.0: 支持stream功能)

  • openssl 版本

  • nginx配置使用nginx默认的配置文件管理策略

  • 运维人员根据需求,能够修改/etc/nginx/nginx.conf 配置文档

    • 通用基本配置

    • 修改参数时,要明白知道修改的意义,以及带来的影响

  • 各项目配置文件位于代码目录中,并经过软链接,链接到/etc/nginx/conf.d 中,好比ln -s /cnicg/iot/示例项目/conf.d/示例项目.conf

  • nginx相关配置

    • proxy.conf

    • mime.types

    • conf.d/*.conf

    • favicon.ico

      • 服务图标,对于web服务,默认要求明确配置

    • robots.txt

      • 默认要求明确配置

      • 资讯类服务,容许特定爬虫爬取特定目录

      • 业务类服务,禁止全部爬虫爬取

    • log

      • 日志格式

      • 日志目录 nginx 模块

3. 附录

3.1 nginx.conf

# sudo adduser --system --no-create-home --disabled-password --group web
user    nginx nginx;
# 根据业务需求开启不一样的工做进程
worker_processes  4;
worker_rlimit_nofile 20480;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    use epoll;
    worker_connections  20480;
}

http {
    include       /etc/nginx/mime.types;
    # custom define proxy configuration
    include       /etc/nginx/proxy.conf; 
    default_type  application/octet-stream;

    # 日志格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    client_header_timeout       3m;
    client_body_timeout         3m;
    send_timeout                3m;

    client_header_buffer_size   1k;
    large_client_header_buffers 4 4k;

    gzip  on;
    gzip_disable        "msie6";
    gzip_min_length     1100;
    gzip_buffers        4 8k;
    gzip_types          text/plain text/ccs application/json application/x-javascript text/xml application/xml text/javascript;

    output_buffers  1 32k;
    postpone_output 1460;

    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;
    send_lowat      12000;

    keepalive_timeout  75;

    include /etc/nginx/conf.d/*.conf;
}

3.2 proxy.conf

proxy_redirect              off;
proxy_set_header            Host            $host;
proxy_set_header            Port            $server_port;
proxy_set_header            X-Real-IP       $remote_addr;
proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;

client_max_body_size        10m;
client_body_buffer_size     128k;
proxy_connect_timeout       90;
proxy_send_timeout          90;
proxy_read_timeout          90;
proxy_buffers               32 4k;
proxy_buffer_size           4k;
proxy_busy_buffers_size     64k;
proxy_temp_file_write_size  64k;

3.3 robots.txt

### BEGIN FILE ###
#
# allow baidu bing google spider
User-agent: Baiduspider
Disallow: /action/
Disallow: /admin/
Disallow: /my/
Disallow: /code/download_src
Disallow: /widgets/

User-agent: Googlebot
Disallow: /action/
Disallow: /admin/
Disallow: /my/
Disallow: /code/download_src
Disallow: /widgets/

User-agent: MSNBot
Disallow: /action/
Disallow: /admin/
Disallow: /my/
Disallow: /code/download_src
Disallow: /widgets/

# robots file disallow any robots access this site
User-Agent: *
Disallow: /

### END FILE ###