准备
- 搭建好宝塔的vps,我用的是 Vultr
- flask应用在本地运行成功
在宝塔界面添加网站
- 设置好域名,数据库,php版本不管,或者在软件管理中卸载php
- 创建的web文件在/www/wwwroot/目录下
- 在本地的flask应用文件打包上传到刚刚创建的web文件中,解压
创建Python环境
# 以下blog.itswcg.com是项目目录
$ cd /www/wwwroot/blog.itswcg.com
$ sudo apt install python3-venv
$ python3 -m venv venv
# 如果venv/bin/下没有activate,就表示没有成功,解决如下
$ export LC_ALL="en_US.UTF-8"
$ export LC_CTYPE="en_US.UTF-8"
$ sudo dpkg-reconfigure locales
# 进入虚拟环境
$ source venv/bin/activate
# 安装uWSGI和requirements
$ pip install uwsgi
$ pip install -r requirements.txt
# 退出虚拟环境
$ deactivate
配置uwsgi
在应用根目录创建config.ini
文件,内容如下
[uwsgi]
# uwsgi 启动时所使用的地址与端口
socket = 127.0.0.1:8386
# 指向网站目录
chdir = /www/wwwroot/blog.itswcg.com
# python 启动程序文件
wsgi-file = main.py
# python 程序内用以启动的 application 变量名
callable = app
# 处理器数
processes = 4
# 线程数
threads = 2
#状态检测地址
stats = 127.0.0.1:9191
配置nginx
在宝塔面板中,管理网站,设置,配置文件修改如下,
或者在/www/server/panel/vhost/nginx/<name>.conf
下修改
server {
listen 80; 如有多个web应用,都是80端口监听
server_name blog.itswcg.com; #地址
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8386; # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理
uwsgi_param UWSGI_PYHOME /www/wwwroot/blog.itswcg.com/venv; # 指向虚拟环境目录
uwsgi_param UWSGI_CHDIR /www/wwwroot/blog.itswcg.com; # 指向网站根目录
uwsgi_param UWSGI_SCRIPT main:app; # 指定启动程序
}
}
重启
$ sudo service nginx restart
这时候运行如下,不出错,输入网址就成功了
$ uwsgi config.ini
配置supervisor
supervisor能同时启动多个应用,能自动重启应用,保证可用性。
安装
$ sudo apt-get install supervisor
在/etc/supervisor/conf.d下添加<name>.conf
文件(如blog.conf),内容如下
[program:blog] #blog是<name>
##注意项目目录和uwsgi的配置文件地址
command=/www/wwwroot/blog.itswcg.com/venv/bin/uwsgi /www/wwwroot/blog.itswcg.com/config.ini
directory=/www/wwwroot/blog.itswcg.com
autostart=true
autorestart=true
user = root
##log文件的位置
stdout_logfile=/www/wwwroot/blog.itswcg.com/logs/uwsgi_supervisor.log
启动
supervisord -c /etc/supervisor/supervisord.conf
客户端管理
$ supervisorctl
这样你就不用每次重启时都运行$ uwsgi config.ini
,supervisor帮你自动重启
还有别忘了在宝塔面板安全中,放行端口
Tips
如果你是一名开发或想成为一名开发,请不要用宝塔,还是老老实实学习一下linux命令。 欢迎访问我的github:https://github.com/itswcg。