目录
1. 建立虚拟环境并安装配置uwsgi
建立和激活虚拟环境:
apt-get install python3-venv
python3 -m venv ~/pyenv/venv
. ~/pyenv/venv/bin/activate
安装wheel与uwsgi:
pip3 install wheel
pip3 install uwsgi
配置uwsgi:
1. 新建一个ini文件,nano /uwsgi/uwsgi.ini,写入:
[uwsgi]
socket = 0.0.0.0:7666
# 项目文件路径
chdir = /xx/xx/xx
# 启动文件路径
wsgi-file = /xxxx/xxxx.py
callable = app
processes = 4
threads = 2
# 设置程序随着python文件变动自动更新
py-autorelouad = 1
# 设置log文件的位置,存储http请求信息和error
logto = /xxxx/xxx.log
# 设置stats文件路径
stats = /uwsgi/uwsgi.status
# 设置pid文件路径(方便重启)
pidfile = /uwsgi/uwsgi.pid
2. 开启uwsgi:
uwsgi --ini /uwsgi/uwsgi.ini &
- 重启uwsgi:
uwsgi --reload /uwsgi/uwsgi.pid
如果顺序不对导致重启失败,则进入以下步骤:
1. 找到uwsgi的第一个pid,比如6666
ps -aux |grep uwsgi
2. nano /uwsgi/uwsgi.pid,把里面的东西改成刚刚的那个pid
3. 再次重启uwsgi
4. 再次开启uwsgi
如果未配置pidfile导致重启uwsgi失败,则更新配置文件后再次进入以上重启失败的步骤。
2. 安装与配置nginx
1. 安装nginx并启动:
sudo apt-get install nginx
nginx
2. 配置/etc/nginx/nginx.conf,在http{}中加入:
server{
listen 80;
# 监听443端口(默认安全连接)
listen 443 default ssl;
# 域名
server_name www.xxxx.com;
#ssl on;
#从腾讯云获取到的第一个文件的全路径
ssl_certificate ./cert/1_www.xxxx.com_bundle.crt;
#从腾讯云获取到的第二个文件的全路径
ssl_certificate_key ./cert/2_www.xxxx.com.key;
location / {
include uwsgi_params;
# 跳转到的端口
uwsgi_pass 0.0.0.0:7666;
# 虚拟环境
uwsgi_param UWSGI_PYTHON /home/pyenv/venv;
# 项目文件的名称
uwsgi_param UWSGI_CHDIR /etc/nginx/mylinks;
# 项目启动文件为run.py
uwsgi_param UWSGI_SCRIPT run:app;
}
}
- 重启nginx:
nginx -c /etc/nginx/nginx.conf
3. 启动app
nohup uwsgi --socket 0.0.0.0:7665 --protocol=http -p 3 -w run:app > &
在与app本身占用的不同的端口启动,不然会报错;这样log文件会在uwsgi配置中logto的位置
- 手动重启app:
ps -aux |grep uwsgi
然后kill掉所有--socket 0.0.0.0:7665 --protocol=http -p 3 -w run:app的进程并再次启动即可