python3.6+sanic+gunicorn+nginx 部署

概要:

我使用的是cento7
本文主要阐述的是服务的部署
先附上sanic的中文文档
https://sanic-cn.readthedocs.io/zh/latest/sanic/deploying.html

配置过程

Supervisor
安装:

yum install supervisor 

supervisor 配置:
配置文件是 /etc/supervisord.conf,直接编辑这个文件,在最后添加我们的项目配置

[program:app] #app是你自己命名的
command=gunicorn -c /home/project/gunicorn_c app:app #这个是gunicorn的命令
directory=/home/project
startsecs=0
stopwaitsecs=0
autostart=true #随着supervisor启动
autorestart=true #自动重启项目服务
stdout_logfile=/home/project/logs/supervisor.log #日志
stderr_logfile=/home/project/logs/supervisor.err #错误日志

附supervisor命令:

supervisord -c /etc/supervisord.conf   启动服务
supervisorctl status #查看所有进程的状态
supervisorctl stop app#停止app,app就是你的项目在supervisor的命名
supervisorctl start app#启动app
supervisorctl restart app# 重启app
supervisorctl update #配置文件修改后可以使用该命令加载新的配置
supervisorctl reload #重新启动配置中的所有程序

gunicorn
安装:

pip install gunicorn 

直接命令启动:

gunicorn app:app --bind 127.0.0.1:9090 --worker-class sanic.worker.GunicornWorker

app:app 前一个app是项目启动的入口文件名就是类似yourapp:app,后一个app是你python入口文件里面那个app.run()的app,没记错的话是这样的,有一个问题就是这样只能运行app的内容像下面,里面的进程是没有启动的,大家可以找别的方法解决

通过配置文件的命令启动:

gunicorn -c gunicorn.conf app:app   #gunicorn.conf是你的配置文件的名字

配置文件我是命名为 gunicorn_c的无后缀的,也可以其他命名

import multiprocessing
reload = True
# 并行工作进程数
workers = multiprocessing.cpu_count() * 2 + 1
# 指定每个工作者的线程数
threads = 2
# 监听内网端口9090
bind = '127.0.0.1:9090'
# 设置守护进程,将进程交给supervisor管理
daemon = 'false'
# 工作模式协程
worker_class = 'sanic.worker.GunicornWorker'
# 设置最大并发量
worker_connections = 2000
# 设置进程文件目录
pidfile = '/home/yssj/run/gunicorn.pid'
# 设置访问日志和错误信息日志路anic.worker.GunicornWorker
accesslog = '/home/yssj/logs/gunicorn_acess.log'
errorlog = '/home/yssj/logs/gunicorn_error.log'
# 设置日志记录水平
loglevel = 'warning'

nginx

安装就不详细写了
修改配置文件,nginx安装路径下的nginx/conf/nginx.conf
反向代理

server {
        listen       8080;
        listen       你对外的ip地址;
        #server_name  somename  alias  another.alias;
        location / {
                     proxy_pass http://127.0.0.1:9090; #转接到你python启动的地址和端口
                     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的反向代理和负载均衡,大家可以了解一下
下面代码出自 https://www.cnblogs.com/Miss-mickey/p/6734831.html

upstream webservers {
        server 172.18.144.23:4789 weight=10;
        server 172.18.144.23:5789 weight=10;
    }
server {
        listen       80;
        server_name  test.nginx.com;
        
        location / {
            proxy_pass   http://webservers;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

未完待续…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Django是一个优秀的Web框架,可以帮助开发者快速构建Web应用程序。但是,当我们需要将Django应用程序部署到生产环境时,我们需要考虑很多方面,例如性能、安全、可靠性等。本文将介绍如何使用GunicornNginx将Django应用程序部署到生产环境中。 ## 准备工作 在开始之前,我们需要在服务器上安装一些必要的软件包和库。 ### 安装Python和pip 首先,我们需要在服务器上安装Python和pip。如果您已经安装了它们,请跳过此步骤。 ```shell # Ubuntu sudo apt-get update sudo apt-get install python3 python3-pip # CentOS sudo yum update sudo yum install python3 python3-pip ``` ### 创建虚拟环境 为了避免与其他Python应用程序的依赖项冲突,我们建议在服务器上使用虚拟环境。在此过程中,我们将使用venv创建一个虚拟环境。 ```shell python3 -m venv myenv source myenv/bin/activate ``` ### 安装Django和Gunicorn 一旦我们进入虚拟环境,我们可以使用pip安装Django和Gunicorn。 ```shell pip install django gunicorn ``` ## 配置Gunicorn Gunicorn是一个Python WSGI HTTP服务器,可以处理Django应用程序的并发请求。下面是如何配置Gunicorn。 ### 创建Gunicorn配置文件 我们可以为Gunicorn创建一个配置文件。在此过程中,我们将创建一个名为`gunicorn_config.py`的文件。 ```python bind = "127.0.0.1:8000" workers = 3 user = "myuser" ``` 在这个配置文件中,我们定义了以下几个参数: - `bind`:指定Gunicorn绑定的IP地址和端口号。 - `workers`:指定Gunicorn启动的工作进程数。 - `user`:指定Gunicorn运行的用户。 请注意,我们将Gunicorn绑定到`127.0.0.1`地址,这意味着它只能在本地访问。如果您想让Gunicorn在公共IP地址上运行,请使用`0.0.0.0`。 ### 启动Gunicorn 一旦我们创建了配置文件,我们可以使用以下命令启动Gunicorn。 ```shell gunicorn myproject.wsgi:application -c gunicorn_config.py ``` 在这个命令中,我们指定了Django的WSGI入口点`myproject.wsgi:application`,以及Gunicorn配置文件`gunicorn_config.py`。 ## 配置Nginx 现在我们已经成功启动了Gunicorn,我们需要将Nginx配置为反向代理,以便客户端可以通过Nginx访问我们的应用程序。 ### 安装Nginx 如果您还没有安装Nginx,请按照以下步骤进行安装。 ```shell # Ubuntu sudo apt-get update sudo apt-get install nginx # CentOS sudo yum update sudo yum install nginx ``` ### 创建Nginx配置文件 我们需要为Nginx创建一个配置文件。在此过程中,我们将创建一个名为`myproject.conf`的文件。 ```nginx server { listen 80; server_name example.com; access_log /var/log/nginx/access.log; 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; } } ``` 在这个配置文件中,我们定义了以下几个参数: - `listen`:指定Nginx监听的端口号。 - `server_name`:指定Nginx的域名。 - `access_log`:指定Nginx的访问日志路径。 - `location`:指定Nginx的URL匹配规则和反向代理设置。 请注意,我们将Nginx绑定到`example.com`域名,并将所有请求转发到Gunicorn运行的`127.0.0.1:8000`地址。 ### 重启Nginx 一旦我们创建了配置文件,我们可以使用以下命令重新启动Nginx。 ```shell sudo service nginx restart ``` ## 结论 现在我们已经成功地将Django应用程序部署到生产环境中。我们使用Gunicorn处理并发请求,并使用Nginx作为反向代理,以提高性能和安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值