下載大發彩_票平臺
地址一:【hubawl.com】狐霸源碼論壇
地址二:【bbscherry.com】
項目開發完畢後,需要將代碼放到服務器上,這樣用戶才能訪問。接下來我們一步一步來進行一波部署操作
打包上傳代碼
項目開發完畢,在部署之前需要再配置文件中將 ALLOWED_HOSTS配置設置為:當前服務器IP或*,如:
ALLOWED_HOSTS = ["",]
這個配置就是允許別人通過哪個ip訪問你,表示所有ip
上線時還要將配置中的DEBUG改為False
不同系統如何傳代碼
windows:
yum install lrzsz
壓縮zip包,拖進來。
mac:
scp /home/xx/s8day145.zip [email protected]:/data/
安裝Python3
復制代碼
a. 下載Python:https://www.python.org/ftp/python/3.5.4/
b. 解壓 tar -xvf Python-3.5.4.tgz
c. cd Python-3.5.4
d. 先裝依賴:
- yum install openssl-devel
- yum install sqlite-devel
e. 編譯安裝 - ./configure
- make
-
make install
/usr/local/bin python3
f. 安裝django
pip3 install django==1.11.7
復制代碼
第一版本上線:簡單粗暴
進入python程序目錄
python3 manage.py runserver 0.0.0.0:8000
uwsgi
Django框架運行依賴wsgi(本質提供socket服務端),眾多模塊實現了wsgi規範,而django框架中默認使用wsigiref模塊來實現,他由於性能比較低,所以用於本地開發和測試,而線上部署時需要使用uwsgi來代替
在服務器上安裝uwsgi
pip3 install uwsgi
單文件使用uwsgi
在服務器上編寫一個Python文件app.py:
def application(env, start_response):
start_response(‘200 OK‘, [(‘Content-Type‘,‘text/html‘)])
在服務器上執行命令啟動Web服務器:
uwsgi --http :9001 --wsgi-file app.py
或
uwsgi --http :9002 --wsgi-file app.py --master --processes 4 # 啟動4個進程
PS: flask需要再加 --callable app
uwsgi --http :9002 --wsgi-file app.py --callable app
django程序
方式一
uwsgi --http :9003 --chdir /data/s8day145/ --wsgi-file s8day145/wsgi.py # chdir進入後面的項目目錄 然後wsgi-file找到項目中的wsgi.py文件
方式二
可以看到上面的方法參數很多,我們可以將參數寫到一個文件中
復制代碼
s8day145_uwsgi.ini
[uwsgi]
http = 0.0.0.0:9005
chdir = /data/s8day145/
wsgi-file = s8day145/wsgi.py
processes = 4 # 進程數
static-map = /static=/data/s8day145/allstatic # 靜態文件的目錄
復制代碼
啟動時
uwsgi --ini s8day145_uwsgi.ini
此時訪問時,會出現找不到靜態文件的錯誤。
想要uwsgi處理靜態文件,需要先將django的靜態文件收集到制定目錄,然後再設置對應關系。
收集django靜態文件
在django的配置文件中添加:STATIC_ROOT = os.path.join(BASE_DIR,"allstatic")
執行 python3 manage.py collectstatic 命令,至此django項目所有相關靜態文件都會收集到制定目錄。
設置uwsgi靜態文件對應關系
uwsgi --http :9005 --chdir /data/oldboy/ --wsgi-file oldboy/wsgi.py --master --processes 4 --static-map /static=/data/oldboy/allstatic
第三版本上線:uwsgi + nginx
nginx作用:
- 處理靜態文件
- 反向代理
- 負載均衡(LVS、haproxy)
uwsig作用: - 處理動態請求
nginx配置文件
復制代碼
user root;
worker_processes 4;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
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;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
include /etc/nginx/mime.types;
default_type application/octet-stream;
upstream django {
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}
server {
listen 80;
charset utf-8;
# max upload size
client_max_body_size 75M;
location /static {
alias /data/s8day145/allstatic;
}
location / {
uwsgi_pass django;
include uwsgi_params;
}
}
}
復制代碼
uwsgi配置:/data/s8day145/
復制代碼
s8day145_uwsgi_8001.ini
[uwsgi]
socket = 127.0.0.1:8001
chdir = /data/s8day145/
wsgi-file = s8day145/wsgi.py
processes = 1
s8day145_uwsgi_8002.ini
[uwsgi]
socket = 127.0.0.1:8002
chdir = /data/s8day145/
wsgi-file = s8day145/wsgi.py
processes = 1
復制代碼
啟動
復制代碼
nginx:
/etc/init.d/nginx start
/bin/systemctl restart nginx.service
/bin/systemctl start nginx.service
/bin/systemctl stop nginx.service
uwsgi:
uwsgi --ini s8day145_uwsgi_8001.ini &
uwsgi --ini s8day145_uwsgi_8002.ini &
復制代碼
如果進程掛了,supervisor幫助你自動將服務重新啟動
supervisor是一個對進程管理的軟件,可以幫助我們啟動uwsgi並維護(uwsgi進程關閉時,自動將其啟動起來)
安裝
yum install supervisor
配置/etc/supervisord.conf
復制代碼
[program:s8day145]
command=/usr/local/bin/uwsgi --ini /data/s8day145/s8day145_uwsgi_8001.ini ;命令
priority=999 ; 優先級(越小越優先)
autostart=true ; supervisord啟動時,該程序也啟動
autorestart=true ; 異常退出時,自動啟動
startsecs=10 ; 啟動後持續10s後未發生異常,才表示啟動成功
startretries=3 ; 異常後,自動重啟次數
exitcodes=0,2 ; exit異常拋出的是0、2時才認為是異常
stopsignal=QUIT ; 殺進程的信號
stopwaitsecs=10 ; 向進程發出stopsignal後等待OS向supervisord返回SIGCHILD 的時間。若超時則supervisord將
使用SIGKILL殺進程
user=root ; 設置啟動該程序的用戶
log_stdout=true ; 如果為True,則記錄程序日誌
log_stderr=false ; 如果為True,則記錄程序錯誤日誌
logfile=/var/log/cat.log ; 程序日誌路徑
logfile_maxbytes=1MB ; 日誌文件最大大小
logfile_backups=10 ; 日誌文件最大數量
復制代碼
啟動
systemctl start supervisord.service
公司正式上線流程
復制代碼
公司中的部署步驟及負責人:
- 開發提交代碼
- 測試人員開始測試
- 運維人員進行上線
使用軟件:jenkins+自己寫腳本,運維人員點點點。- 從git上啦代碼到一個服務器,在該服務器上對代碼進行編譯(c/vue/java)
- 通過以下工具 將代碼同步到每臺服務器上
- saltstack
- ansible
- 執行命令啟動程序
下載大發彩_票平臺