在django框架中,我們一般直接通過python manage.py runserver來啟動提供服務,但是如果生產環境此方法不可行,而且容易導致例外退出,于是需要借助uwsgi來作為守護行程,
操作思路:
- 服務器中安裝uwsgi插件
- 新建uwsgi.ini檔案,寫入uwsgi需要的引數
- 安裝nginx,并配置
uwsgi_pass 127.0.0.1:9496代理轉發 - 啟動nginx、uwsgi
安裝uwsgi插件
pip install uwsgi
新建uwsgi.ini檔案,寫入uwsgi需要的引數
可直接在代碼根目錄中創建uwsgi.ini檔案,參考如下:
[uwsgi]
socket = 127.0.0.1:9496
chdir = /home/dengzhixu/crawl_data
wsgi-file = /home/dengzhixu/crawl_data/yibo_crawl_data/wsgi.py
processes = 4
threads = 2
#stats = 0.0.0.0:9496
buffer-size = 65536
#daemonize = /var/log/uwsgi.log
安裝nginx,配置uwsgi_pass轉發
安裝nginx步驟省略,可直接去lnmp.org下載集成nginx
nginx添加vhost組態檔,參考如下
server
{
listen 9495;
#listen [::]:;
server_name crawl.com ;
index index.html index.htm default.html default.htm;
root /home/dengzhixu/crawl_data;
include rewrite/other.conf;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9496;
uwsgi_param UWSGI_SCRIPT ./yibo_crawl_data/demosite.wsgi;
uwsgi_param UWSGI_CHDIR /home/dengzhixu/crawl_data;
index index.html index.htm;
client_max_body_size 35m;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
access_log /home/wwwlogs/crawl.com.log;
啟動nginx、uwsgi
nginx
uwsgi -d --ini /home/dengzhixu/crawl_data/uwsgi.ini
配置systemd自啟動
創建一個systemd服務檔案/lib/systemd/system/uwsgi.service
[Unit]
Description=uWSGI Emperor
#After=syslog.target
After=network.target
[Service]
#PIDFile=/run/uwsgi.pid
ExecStart=/usr/local/bin/uwsgi --ini /home/dengzhixu/crawl_data/uwsgi.ini
#ExecStop=/usr/local/bin/uwsgi --stop $MAINPID
#ExecReload=/usr/local/bin/uwsgi -d --reload $MAINPID
# Requires systemd version 211 or newer
#RuntimeDirectory=uwsgi
Restart=always
KillSignal=SIGQUIT
Type=notify
#Type=forking
StandardError=syslog
NotifyAccess=all
[Install]
WantedBy=multi-user.target
開啟自啟動,并啟動
systemctl start uwsgi.service
systemctl enable uwsgi.service
參考文獻:
https://uwsgi-docs.readthedocs.io/en/latest/WSGIquickstart.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/385.html
標籤:Python
