使用 **supervisor** 来管理 Tornado 服务
使用 supervisor 来管理 Tornado 服务
🧱 步骤概览
- 安装 supervisor
- 配置 supervisor 启动 Tornado 应用
- 配置 Nginx 做反向代理
- 配置 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_logfile 和 stdout_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
✅ 总结
- Supervisor 用来管理 Tornado 后台服务,确保它在崩溃后自动重启。
- Nginx 做反向代理,将外部请求转发到 Tornado 服务,增强了安全性和可扩展性。
- HTTPS 配置让你的网站更安全,防止中间人攻击。
如果后续有其他问题,比如日志管理、进程监控、性能优化等,可以随时告诉我!