我使用电视盒子刷了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管理服务,但是无法自动重启,也许是我配置不正确
-
在虚拟环境中安装 Gunicorn:
在你的虚拟环境中安装 Gunicorn:
/home/venv/bin/pip install gunicorn
-
更新 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 进程,你可以根据需要调整。 -
更新 Supervisor 配置:
更新 Supervisor 配置并重新加载配置文件:
sudo supervisorctl reread sudo supervisorctl update
-
启动 FastAPI 应用程序:
启动 FastAPI 应用程序:
sudo supervisorctl start fastapi_app
这个配置假设你的 FastAPI 应用程序模块是 your_app_module
,而且 Gunicorn 已经安装在你的虚拟环境中。确保根据你的实际情况更新配置文件。如果有其他配置项需要调整,可以根据需要进行修改。
评论列表
已有0条评论