Django,UWSGI,NGINX部署的几个问题
1、Django 需要 sqlite3 版本升级的问题。
https://blog.csdn.net/sunt2018/article/details/90712063
wget https://www.sqlite.org/2019/sqlite-autoconf-3280000.tar.gz
tar -zxvf sqlite-autoconf-3280000.tar.gz
cd sqlite-autoconf-3280000
./configure --prefix=/usr/local
make && make install
find /usr/ -name sqlite3
#删除不必要的文件
rm -rf sqlite-autoconf-3280000*
mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
vim ~/.bashrc
export LD_LIBRARY_PATH="/usr/local/lib"
source ~/.bashrc
python
import sqlite3
sqlite3.sqlite_version
2、UWSGI和NGINX的配置问题
在有的教程中UWSGI的配置如下
[uwsgi]
socket = 127.0.0.1:9090
master = true //主进程
vhost = true //多站模式
no-site = true //多站模式时不设置入口模块和文件
workers = 2 //子进程数
reload-mercy = 10
vacuum = true //退出、重启时清理文件
max-requests = 1000
limit-as = 512
buffer-size = 30000
pidfile = /var/run/uwsgi9090.pid //pid文件,用于下面的脚本启动、停止该进程
daemonize = /website/uwsgi9090.log
其中,no-site = true的配置讲道理和下面的uwsgi_param是对应关系,但是uwsgi_param怎么改也不对。
server {
listen 80;
server_name localhost;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9090; //必须和uwsgi中的设置一致
uwsgi_param UWSGI_SCRIPT demosite.wsgi; //入口文件,即wsgi.py相对于项目根目录的位置,“.”相当于一层目录
uwsgi_param UWSGI_CHDIR /demosite; //项目根目录
index index.html index.htm;
client_max_body_size 35m;
}
}
其实 在uwsgi中配置下面的选项,就可以在nginx的配置中删掉 uwsgi_param的那两项。
[uwsgi]
chdir = /yourprojectpath/yourapppath/
module = yourmodule.wsgi
另外
socket = 127.0.0.1:9090
可以用
socket = /samepath/xxxx.sock
替代,然后nginx 配置
uwsgi_pass unix:/samepath/xxxx.sock
用文件接口替代端口工作,但要注意权限。文件权限要可以让nginx可以读写,如果改了还不行,记得把nginx的conf文件改一下不要nobody
user nobody