完整的 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 应用部署的参考指南。