1. 程式人生 > >下載大發彩_票平臺

下載大發彩_票平臺

windows home backup quest bytes .py add conf follow

下載大發彩_票平臺
地址一:【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/

在真正的線上環境應該從git上拖代碼

安裝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‘)])

return [b"Hello World"]
在服務器上執行命令啟動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
    • 執行命令啟動程序

下載大發彩_票平臺