Deploy Falsk with uwsgi and nginx on Opensuse
Env
- 百度云
- Opensuse 42.3
- python 3.4.6 with virtualenv
- uwsgi
- nginx
Flask Demo
- flaskr: Flask Document demo
- notice: The simple flask app demo
Deploy project: FLASKR
同步github 项目 chepiao 到 /home目录下, 然后运行一下命令:
source venv/bin/activate
export FLASK_APP=flaskr
flaskr init-db
# 创建随机密钥
python -c 'import os; print(os.urandom(16))'
b'_5#y2L"F4Q8z\n\xec]/'
# 新建 config.py 存放 security key
mkdir -p venv/var/flaskr-instance
vim venv/var/flaskr-instance/config.py
"SECRET_KEY = b'_5#y2L"F4Q8z\n\xec]/'"
# 通过waitress 运行服务
waitress-serve --call 'flaskr:create_app'
Deploy project: NOTICE
- uwsgi 命令行
sudo uwsgi --socket 0.0.0.0:8080 --protocol=http -w notice:app --processes 2 --plugin python3
# uwsgi 可通过命令行指定参数,但是一般会写为配置文件,便于管理,参考目录下 notice_uwsgi.ini
sudo uwsgi --ini notice_uwsgi.ini
-
systemd 启动服务
# 在 /usr/lib/systemd/system 目录下添加 notice.service 配置文件 [Unit] Description=NOTICE SERVICES [Service] ExecStartPre=-/bin/bash -c 'mkdir -p /run/uwsgi; chown user:nginx /run/uwsgi' ExecStart=/bin/bash -c 'cd /home/chepiao; source venv/bin/activate; uwsgi --ini notice_uwsgi.ini' [Install] WantedBy=multi-user.target # 将该服务加入到 systemd 中 systemctl enable /etc/systemd/system/notice.service sudo systemctl daemon-reload sudo systemctl start notice sudo systemctl stop notice
-
Reference
Nginx Reverse Proxy
在Opensuse 要配置在nginx.conf中
```
# creating a new server block configuration file in Nginx's sites-available directory.
sudo nano /etc/nginx/sites-available/myproject
替换:
/ext/nginx/sites-available/default
server {
listen 80;
server_name 106.13.38.86;
location / {
include uwsgi_params;
uwsgi_pass unix:/home/chepiao/notice.sock;
charset utf-8;
uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间
}
}
sudo service nginx restart
```