完整的 uWSGI 配置及服务启动说明文档
应用背景
本配置文档适用于基于 Flask 的 file_upload 应用。应用所在目录为 /opt/service/python_prj/fileUpload/upload/ver3,并使用 uWSGI 提供服务。通过系统服务管理器 systemd 启动和管理 uWSGI。
1. 安装 uWSGI
在虚拟环境 pictoHub.env 中安装 uWSGI:
source /opt/service/python_prj/pictoHub.env/bin/activate
pip install uwsgi
deactivate
2. 创建 uWSGI 用户
为 uWSGI 服务创建独立的运行用户 uwsgi:
sudo useradd -r -s /bin/false uwsgi
3. 授权相关目录
确保 uwsgi 用户对必要目录有权限:
sudo mkdir -p /var/log/uwsgi
sudo mkdir -p /run/uwsgi
sudo chown -R uwsgi:uwsgi /opt/service/python_prj/fileUpload/upload/ver3
sudo chown -R uwsgi:uwsgi /var/log/uwsgi
sudo chown -R uwsgi:uwsgi /run/uwsgi
4. 创建 uWSGI 配置文件
在 /opt/service/python_prj/fileUpload/upload/ver3/ 中创建 uwsgi.ini 文件,内容如下:
[uwsgi]
# uWSGI 运行用户和组
uid = uwsgi
gid = uwsgi
# 启动服务监听的地址和端口
http-socket = 0.0.0.0:8066
# 指定虚拟环境路径
virtualenv = /opt/service/python_prj/pictoHub.env
# 指定 Flask 应用文件的路径
wsgi-file = /opt/service/python_prj/fileUpload/upload/ver3/app.py
# 设置 Flask 的应用实例
callable = app
# 设置静态文件目录映射
static-map = /static=/opt/service/python_prj/fileUpload/upload/ver3/static
# 日志文件路径
logto = /var/log/uwsgi/uwsgi.log
# 设置进程数
processes = 4
# 确保应用正常启动
touch-reload = /opt/service/python_prj/fileUpload/upload/ver3/app.py
5. 创建 Systemd 服务文件
在 /etc/systemd/system/ 目录下创建 file_upload-uwsgi.service,内容如下:
[Unit]
Description=uWSGI for Flask File Upload
After=network.target
[Service]
User=uwsgi
Group=uwsgi
WorkingDirectory=/opt/service/python_prj/fileUpload/upload/ver3
ExecStart=/opt/service/python_prj/pictoHub.env/bin/uwsgi --ini /opt/service/python_prj/fileUpload/upload/ver3/uwsgi.ini
Restart=always
PIDFile=/run/uwsgi/uwsgi.pid
[Install]
WantedBy=multi-user.target
6. 启用并启动服务
执行以下命令以启用并启动服务:
重新加载 Systemd 配置
sudo systemctl daemon-reload
启用服务开机自启
sudo systemctl enable file_upload-uwsgi.service
启动服务
sudo systemctl start file_upload-uwsgi.service
7. 验证服务运行状态
查看服务运行状态和日志:
查看服务状态
sudo systemctl status file_upload-uwsgi.service
查看日志文件
sudo tail -f /var/log/uwsgi/uwsgi.log
8. 停止或重启服务
通过以下命令控制服务:
停止服务
sudo systemctl stop file_upload-uwsgi.service
重启服务
sudo systemctl restart file_upload-uwsgi.service
9. 注意事项
- 确保虚拟环境路径和 Flask 应用路径正确配置。
- 如果 uWSGI 服务未启动,请检查日志文件 /var/log/uwsgi/uwsgi.log。
- 静态文件目录 /static 必须正确映射,确保用户 uwsgi 有读取权限。
- 遇到问题可通过 journalctl -u file_upload-uwsgi.service 查看详细日志。
此文档记录了从安装到服务启动的完整步骤,可作为 file_upload 应用部署的参考指南。