Supervisor&Gunicorn&Django

django

# 刚写的就不复制粘贴了
https://my.oschina.net/tianshl/blog/1611257

# 列一下目录结构
root@tianshl:~# cd server/
root@tianshl:~/server# tree server
server
├── db.sqlite3
├── manage.py
└── server
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

gunicorn

安装
pip install gunicorn
配置
# 修改django项目的settings.py

INSTALLED_APPS = [
    ......
    'gunicorn',
]
运行
root@tianshl:~# cd /root/server/server/
root@tianshl:~/server/server# gunicorn --pythonpath /root/server/venv/bin/python3 -w 3 -b 0.0.0.0:80 server.wsgi
# 测试能否正常运行, 然后ctrl+c结束进程

supervisor

安装
pip install supervisor
配置
# 默认配置 
# 使用echo_supervisord_conf命令查看默认配置
root@tianshl:~# echo_supervisord_conf

# 自定义配置
root@tianshl:~# mkdir /etc/supervisor
root@tianshl:~# mkdir /etc/supervisor/conf.d

root@tianshl:~# echo_supervisord_conf > /etc/supervisor/supervisor.conf

root@tianshl:~# vim /etc/supervisor/supervisor.conf

# 内容如下

[unix_http_server]
file=/tmp/supervisor.sock   ; the path to the socket file

[supervisord]
logfile=/tmp/supervisord.log ; main log file; default $CWD/supervisord.log
logfile_maxbytes=10MB        ; max main logfile bytes b4 rotation; default 50MB
logfile_backups=1            ; # of main logfile backups; 0 means none, default 10
loglevel=info                ; log level; default info; others: debug,warn,trace
pidfile=/tmp/supervisord.pid ; supervisord pidfile; default supervisord.pid
nodaemon=false               ; start in foreground if true; default false
minfds=1024                  ; min. avail startup file descriptors; default 1024
minprocs=200                 ; min. avail process descriptors;default 200

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL  for a unix socket

[include]
files = /etc/supervisor/conf.d/*.conf


# 自定义服务配置
root@tianshl:~# vim /etc/supervisor/conf.d/server.conf

内容如下:

[program:server]
directory = /root/server/server/
command = gunicorn --pythonpath /root/server/venv/bin/python3 -w 3 -b 0.0.0.0:80 server.wsgi
autostart = true
startsecs = 5
autorestart = true
startretries = 3
user = root
redirect_stderr = true
stdout_logfile_maxbytes = 10MB
stdout_logfile_backups = 1
stdout_logfile = /root/logs/server.log
启动
supervisord -c /etc/supervisor/supervisor.conf
常用指令
root@tianshl:~# supervisorctl -c /etc/supervisor/supervisor.conf reload         # 重新加载配置文件
root@tianshl:~# supervisorctl -c /etc/supervisor/supervisor.conf status         # 服务状态
root@tianshl:~# supervisorctl -c /etc/supervisor/supervisor.conf start server   # 启动某个服务(这里的server是服务名称,即program的名字)
root@tianshl:~# supervisorctl -c /etc/supervisor/supervisor.conf restart server # 重启某个服务
root@tianshl:~# supervisorctl -c /etc/supervisor/supervisor.conf stop server    # 停止某个服务

转载于:https://my.oschina.net/tianshl/blog/1611259

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nginx是一个高性能的HTTP和反向代理服务器,可以用来处理静态文件和动态请求。gunicorn是一个Python WSGI HTTP服务器,可以将Flask应用程序部署到生产环境中。supervisor是一个进程控制系统,可以用来管理和监控进程。这三个工具可以一起使用来部署Flask应用程序。 以下是使用nginx,gunicorn和supervisor部署Flask应用程序的步骤: 1. 安装nginx,gunicorn和supervisor。 2. 编写Flask应用程序,并使用工厂函数构建应用程序对象。 3. 创建一个gunicorn配置文件,例如gunicorn.conf.py,指定工作进程数和线程数。 4. 使用gunicorn启动Flask应用程序,例如: ```shell gunicorn -c gunicorn.conf.py "my_project:create_app()" ``` 这将启动一个gunicorn进程,监听8000端口,并将请求转发到Flask应用程序。 5. 配置nginx,将请求转发到gunicorn进程。例如,在nginx.conf文件中添加以下内容: ```nginx server { listen 80; server_name example.com; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 这将将所有请求转发到gunicorn进程,并将请求头中的一些信息传递给Flask应用程序。 6. 使用supervisor管理gunicorn进程。例如,在supervisor.conf文件中添加以下内容: ```ini [program:gunicorn] command=/path/to/gunicorn -c /path/to/gunicorn.conf.py "my_project:create_app()" directory=/path/to/project user=user autostart=true autorestart=true stopasgroup=true killasgroup=true ``` 这将启动一个名为gunicorn的进程,并在系统启动时自动启动该进程。如果该进程崩溃或被杀死,supervisor将自动重新启动该进程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值