gunicorn的使用很是簡單 一條命令 -w 爲工做數量 -b爲綁定的host wsgi所在文件:實例名html
sudo pip3 intstall gunicorn
sudo gunicorn -w 4 -b 127.0.0.1:8000 Project.wsgi:application
gunicorn.conf文件也支持py文件python
# 並行工做進程數 workers = 4 # 指定每一個工做者的線程數 threads = 2 # 監聽內網端口5000 bind = '127.0.0.1:5000' # 設置守護進程,將進程交給supervisor管理 daemon = 'false' # 工做模式協程 worker_class = 'gevent' # 設置最大併發量 worker_connections = 2000 # 設置進程文件目錄 pidfile = '/var/run/gunicorn.pid' # 設置訪問日誌和錯誤信息日誌路徑 accesslog = '/var/log/gunicorn_acess.log' errorlog = '/var/log/gunicorn_error.log' # 設置日誌記錄水平 loglevel = 'warning'
使用配置文件中的參數啓動
gunicorn -c gunicorn.conf app:app
pip 安裝 uwsginginx
# 啓動命令 uwsgi --http :8000 --wsgi-file test.py http :8000: 使用http協議,端口8000 wsgi-file test.py: 加載指定的文件,test.py
uwsgi支持ini、xml等多種配置方式,本文以 ini 爲例, 在/etc/目錄下新建uwsgi_nginx.ini,添加以下配置: # mysite_uwsgi.ini file
# 配置
[uwsgi]
#配置文件路徑
chdir = /opt/mysite # wsgi文件路徑 module = mysite.wsgi # 環境目錄 home = /opt/venv # master master = true processes = 1 socket = 0.0.0.0:8000 vacuum = true
yum install nginx 默認安裝到/usr/local/nginx/目錄,進入目錄。
# 打開/usr/local/nginx/conf/nginx.conf文件 server { # 監聽80端口 listen 80; # 本機 server_name localhost; # 默認請求的url location / { #請求轉發到 項目服務器(gunicorn,uwsgi) proxy_pass http://127.0.0.1:5001; #設置請求頭,並將頭信息傳遞給服務器端 proxy_set_header Host $host; } }
#啓動 sbin/nginx #查看 ps aux | grep nginx #中止 sbin/nginx -s stop
worker_processes 1; error_log logs/error.log; pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; 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 logs/access.log main; sendfile on; keepalive_timeout 65; #nginx反向代理uwsgi server { listen 80; server_name 192.168.11.64; location / { #nginx自帶ngx_http_uwsgi_module模塊,起到nginx和uwsgi交互做用 #經過uwsgi_pass設置服務器地址和協議,講動態請求轉發給uwsgi處理 include /opt/nginx1-12/conf/uwsgi_params; uwsgi_pass 0.0.0.0:8000; root html; index index.html index.htm; } #nginx處理靜態頁面資源 location /static{ alias /opt/nginx1-12/static; } #nginx處理媒體資源 location /media{ alias /opt/nginx1-12/media; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
# 修改django配置 STATIC_ROOT='/opt/nginx1-12/static' STATIC_URL = '/static/' STATICFILES_DIRS=[ os.path.join(BASE_DIR,"static"), ]
經過python3 manage.py collectstatic 收集全部你使用的靜態文件保存到STATIC_ROOT!django
STATIC_ROOT 文件夾 是用來將全部STATICFILES_DIRS中全部文件夾中的文件,以及各app中static中的文件都複製過來 # 把這些文件放到一塊兒是爲了用nginx等部署的時候更方便