supervisor管理nginx和gunicorn

Linux系统 2024-01-12 159

我使用电视盒子刷了armbian系统,装上nginx,经常出现盒子重启后nginx无法自动重启问题,于是采用supervisor管理nginx

1.安装supervisor

sudo apt-get install supervisor

2. 创建Nginx配置文件

创建一个Supervisor的Nginx配置文件,通常在/etc/supervisor/conf.d/目录下创建一个以.conf结尾的配置文件,比如nginx.conf

sudo nano /etc/supervisor/conf.d/nginx.conf
[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
user=root
autostart=true
autorestart=true
stderr_logfile=/var/log/nginx/error.log
stdout_logfile=/var/log/nginx/access.log

commad=取决于你的nginx安装地址,可以使用whereis nginx来查看地址

3.重新加载Supervisor配置

当你创建了新的Supervisor配置文件后,需要重新加载Supervisor以应用新的配置:

sudo supervisorctl reread
sudo supervisorctl update

4.启动Nginx

现在,你可以启动Nginx并将其交给Supervisor来管理:

sudo supervisorctl start nginx

这将启动Nginx并将其添加到Supervisor的进程监控列表中。

5.检查Nginx状态:

你可以使用以下命令检查Nginx的状态:

sudo supervisorctl status

6.重新启动Nginx:

如果需要重新启动Nginx,可以使用以下命令:

sudo supervisorctl restart nginx

踩坑:

成功运行nginx后,在supervisor管理后台看到nginx在不停的重启,使用命令查看日志:

tac -n 50 /var/log/nginx/error.log

发现端口被占用,这是很奇怪的事情,因为我使用命令关闭过nginx,关闭过supervisor的服务,但是依然不好使,查看nginx依然存在。

解决方式使用以下命令,关闭后,再次启动supervisor nginx服务,没有发现问题

nginx -s quit

管理gunicorn

在没有使用docker管理web应用之前,我一直采用gunicorn管理服务,但是无法自动重启,也许是我配置不正确

  1. 在虚拟环境中安装 Gunicorn:

    在你的虚拟环境中安装 Gunicorn:

    /home/venv/bin/pip install gunicorn
  2. 更新 Supervisor 配置文件:

    /etc/supervisor/conf.d/ 目录下创建一个配置文件,例如 fastapi_app.conf。使用 Gunicorn 启动 FastAPI 应用程序:

    [program:fastapi_app]
    command=/home/venv/bin/gunicorn -w 4 -k uvicorn.workers.UvicornWorker mul_admin:app -b 0.0.0.0:8000
    directory=/home/python_project/mul_admin
    autostart=true
    autorestart=true
    stderr_logfile=/var/log/fastapi_app.err.log
    stdout_logfile=/var/log/fastapi_app.out.log
    

    替换 your_app_module:app 为你的 FastAPI 应用程序的模块路径。在这个例子中,-w 4 表示使用 4 个 worker 进程,你可以根据需要调整。

  3. 更新 Supervisor 配置:

    更新 Supervisor 配置并重新加载配置文件:

    sudo supervisorctl reread sudo supervisorctl update
  4. 启动 FastAPI 应用程序:

    启动 FastAPI 应用程序:

    sudo supervisorctl start fastapi_app

     

这个配置假设你的 FastAPI 应用程序模块是 your_app_module,而且 Gunicorn 已经安装在你的虚拟环境中。确保根据你的实际情况更新配置文件。如果有其他配置项需要调整,可以根据需要进行修改。

标签:Linux系统

文章评论

评论列表

已有0条评论