程式碼部署規範

weixin_33840661發表於2017-11-17

系統部署規範

1. OS

  • 系統基礎工具、服務

  • 系統配置優化

2. 業務系統

2.1 業務系統說明文件

  • 系統部署手冊

    • 系統使用語言以及版本

    • 系統使用擴充套件庫版本

    • 系統使用中介軟體版本

  • 系統維護手冊

2.2 管理員

  • 每一個業務系統,都有一個獨立的業務賬號,用來管理業務的程式碼、指令碼、以及服務的上線與更新

  • 每一個業務系統,都有唯一的運維人員使用業務賬號,對系統進行操作管理

    • 目前由產品團隊的技術人員負責,待運維體系建立後,移交由運維人員負責

  • 業務系統使用到資料庫服務的,請參照資料庫相關規範【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 ###

相關文章