系統部署規範
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 ###