nginx+uwsgi+djangorestframework+flower+celery+redis
- 2020 年 1 月 2 日
- 筆記
nginx+uwsgi+djangorestframework+flower+celery+redis配置如下:
nginx server配置, 沒有https,注釋掉ssl開頭配置即可.
server { listen 80; listen 443 ssl; server_name localhost; # 域名 ssl_certificate your crt; # 證書crt ssl_certificate_key your key; # 證書key ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; # 指定項目路徑uwsgi location / { include weixin_uwsgi_params; # 導入一個Nginx模組他是用來和uWSGI進行通訊的 uwsgi_connect_timeout 180; # 設置連接uWSGI超時時間 uwsgi_pass unix:/data/www/weixin_api/weixin.sock; # 指定uwsgi的sock文件所有動態請求就會直接丟給他 } # 指定靜態文件路徑 location /static/ { alias /data/www/weixin_api/static/; } }
安裝uwsgi
pip3 install uwsgi
創建一個uwsgi.ini配置文件,配置如下:
# uwsgi使用配置文件啟動 [uwsgi] # 項目目錄 chdir=/data/www/weixin_api/ # 指定項目的application wsgi-file=weixin_api/weixin/wsgi.py # 指定sock的文件路徑 socket=/data/www/weixin_api/weixin.sock # 進程個數 workers=8 pidfile=/data/www/weixin_api/script/uwsgi.pid # 指定IP埠 http=0.0.0.0:8006 # 指定靜態文件 static-map=/static=/data/www/weixin_api/static # 啟動uwsgi的用戶名和用戶組 uid=root gid=root # 啟用主進程 master=true # 自動移除unix Socket和pid文件當服務停止的時候 vacuum=true # 序列化接受的內容,如果可能的話 thunder-lock=true # 啟用執行緒 enable-threads=true # 設置自中斷時間 harakiri=30 # 設置緩衝 post-buffering=8192 # 設置日誌目錄 daemonize=/data/www/weixin_api/script/uwsgi.log wsgi-file = /data/www/weixin_api/weixin/wsgi.py
uwsgi的關閉與啟動,可以寫一個shell腳本來控制
創建一個uwsgi_restart.sh,如下:
#!/bin/bash API_INI="/data/www/API_rest_framework/script/uwsgi.ini" WEIXIN_INI="/data/www/weixin_api/script/uwsgi.ini" UWSGI="/usr/local/python36/bin/uwsgi" PSID="ps aux | grep "uwsgi"| grep -v "grep" | wc -l" if [ ! -n "$1" ] then content="Usages: sh uwsgiserver.sh [start|stop|restart]" echo -e "