使用 **supervisor** 来管理 Tornado 服务

使用 supervisor 来管理 Tornado 服务

🧱 步骤概览

  1. 安装 supervisor
  2. 配置 supervisor 启动 Tornado 应用
  3. 配置 Nginx 做反向代理
  4. 配置 supervisor 自动启动和管理 Tornado 服务

🧑‍💻 1. 安装 Supervisor

首先,在服务器上安装 supervisor,这是一个进程管理工具,能帮助你在后台运行 Tornado 应用,并确保它在崩溃时自动重启。

sudo apt update
sudo apt install supervisor

🧑‍💻 2. 创建 Supervisor 配置文件

supervisor 中,所有的服务配置都存储在 /etc/supervisor/conf.d/ 目录下。我们将为你的 Tornado 应用创建一个配置文件。

sudo nano /etc/supervisor/conf.d/hotdog.conf

内容如下:

[program:hotdog]
command=/opt/hotdog/venv/bin/python /opt/hotdog/app.py
directory=/opt/hotdog
autostart=true
autorestart=true
stderr_logfile=/opt/hotdog/logs/stderr.log
stdout_logfile=/opt/hotdog/logs/stdout.log
environment=PATH="/opt/hotdog/venv/bin"
user=ubuntu
  • command:执行 Tornado 应用的命令,确保使用虚拟环境中的 Python 解释器;
  • directory:Tornado 应用的根目录;
  • stderr_logfilestdout_logfile:日志输出文件,方便调试;
  • autostart:是否开机自动启动;
  • autorestart:程序崩溃后是否自动重启;
  • user:指定用哪个用户来运行,最好用一个普通用户,而不是 root。

🧑‍💻 3. 启动 Supervisor 服务

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start hotdog

这将启动你的 Tornado 应用,并将其纳入 supervisor 管理。你可以使用以下命令检查它的状态:

sudo supervisorctl status

你应该能看到类似如下的输出,说明服务正在运行:

hotdog                            RUNNING   pid 1234, uptime 0:00:30

🧑‍💻 4. 配置 Nginx 做反向代理

让我们使用 Nginx 将外部请求转发到 Tornado 应用上。确保你的 Tornado 应用监听在 127.0.0.1:8888 上,这样外部请求就不能直接访问到 Tornado 服务,而是通过 Nginx 转发。

安装 Nginx

sudo apt install nginx

创建 Nginx 配置文件

/etc/nginx/sites-available/ 目录下创建一个新的配置文件:

sudo nano /etc/nginx/sites-available/hotdog

配置内容如下:

server {
    listen 80;
    server_name hotdog.superlink.com;  # 替换为你自己的域名

    location / {
        proxy_pass http://127.0.0.1:8888;  # Tornado 监听的地址和端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

启用 Nginx 配置并重启

sudo ln -s /etc/nginx/sites-available/hotdog /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

这将使得 Nginx 在收到请求时,将流量转发到 Tornado 应用。


🧑‍💻 5. 配置 HTTPS(可选,推荐启用)

为了确保安全,推荐为你的应用配置 HTTPS。可以使用 Let’s Encrypt 免费 SSL 证书:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d hotdog.superlink.com

执行后,Certbot 会自动为你的域名申请和配置 SSL 证书,并且修改 Nginx 配置使其支持 HTTPS。


🧑‍💻 6. 启动和检查

至此,supervisor 已经在后台运行了你的 Tornado 应用,Nginx 将请求转发给 Tornado。如果你配置了 HTTPS,Nginx 会自动为你配置 SSL。

你可以通过访问你的域名来检查是否生效:

http://hotdog.superlink.com

如果配置了 HTTPS,可以访问:

https://hotdog.superlink.com

✅ 总结

  1. Supervisor 用来管理 Tornado 后台服务,确保它在崩溃后自动重启。
  2. Nginx 做反向代理,将外部请求转发到 Tornado 服务,增强了安全性和可扩展性。
  3. HTTPS 配置让你的网站更安全,防止中间人攻击。

如果后续有其他问题,比如日志管理、进程监控、性能优化等,可以随时告诉我!

posted @ 2025-07-14 14:35  pywjh  阅读(25)  评论(0)    收藏  举报
回到顶部