配置步骤
安装flask和uwsgi
bash
pip install Flask uwsgi
创建一个简单的flask应用(app.py)或者是自己的flask项目
python
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
配置uwsgi,这里我给出自己的配置
bash
[uwsgi]
socket = :5000
wsgi-file = /root/blog/start.py
master = true
callable = app
chdir = /root/blog/
module = start:app
harakiri = 30
vacuum = true
die-on-term = true
limit-as = 512
buffer-size=65535
- socket应该是和nginx通信的socket,注意不是http,因为uwsgi和nginx通信使用的是uwsgi协议
- wsgi-file是程序启动文件,也就是python xxx.py的那个文件,注意写绝对路径
- calllable是程序启动文件中应用的名字,一般就是app(xxx.run()那个xxx)
- chdir是项目的根目录,建议写绝对路径
- module的start是程序启动文件不带.py,app就是上面callable那个app
- 其余参数不用修改
启动uwsgi
bash
uwsgi --ini uwsgi.ini
配置Nginx (/etc/nginx/sites-available/default
)
bash
server {
listen 80;
server_name your_domain.com;
location / {
include uwsgi_params;
uwsgi_pass the_uwsgi_socket:port;
}
}
需要修改的是your_domain.com是域名,the_uwsgi_socket就写0.0.0.0,port和uwsgi配置中socket端口保持一致,我这里就是5000
启动nginx
bash
sudo systemctl start nginx
安装Cerbot
bash
sudo apt-get install certbot python3-certbot-nginx
使用certbot为nginx配置https
python
sudo certbot --nginx
问题及解决
- The -s/--socket option is missing and stdin is not a socket.
https://www.cnblogs.com/qiaoer1993/p/16282109.html
- unable to load configuration from uwsgi
https://stackoverflow.com/questions/34615743/unable-to-load-configuration-from-uwsgi
参考
How To Serve Flask Applications with uWSGI and Nginx on Ubuntu 22.04 | DigitalOcean