1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 阿里云Ecs+Nginx+Gunicorn+Supervisor部署Django项目

阿里云Ecs+Nginx+Gunicorn+Supervisor部署Django项目

时间:2019-01-05 13:19:02

相关推荐

阿里云Ecs+Nginx+Gunicorn+Supervisor部署Django项目

概述:

我们开发了一套Django框架的web平台,需要放到生产环境上,并且可以实现公网访问,如何部署才能保证安全,稳定,高效,下边介绍一种阿里云ecs+nginx+gunicorn+supervisor部署Django项目的方式,此方式可永久复用。

环境说明:

阿里云ecs服务器系统版本:Centos 7.9

Python版本:3.6.5

Django版本:2.2.6

阿里云slb服务:配置域名与端口代理

nginx:前后端代理,http请求重定向https

supervisor:进程管理

gunicorn:web启动

安装所需软件以及项目依赖:

安装项目所需依赖包

pip install -r requirements.txt

安装Gunicorn

python3.6-m pip install gunicorn

安装Nginx

yum install nginx

安装Supervisor

yum install supervisor

注意:yum安装不成功考虑使用二进制方式安装,拷贝压缩包到服务器,解压编译安装。

部署启动项目:

(1)启动Django项目

# 必须进入到项目wsgi所在目录,wsgi文件如下:

## 启动项目,使用-b指定监听的地址和端口gunicorn mysite(项目名称).wsgi -b 0.0.0.0:8000## 启动成功[-03-24 09:50:33 +0800] [22849] [INFO] Starting gunicorn 19.8.1[-03-24 09:50:33 +0800] [22849] [INFO] Listening at: http://127.0.0.1:8000 (23345)[-03-24 09:50:33 +0800] [22849] [INFO] Using worker: sync[-03-24 09:50:33 +0800] [22852] [INFO] Booting worker with pid: 23344

(2)配置独角兽gunicorn配置文件

## 配置如下[program:one_click]directory= /data/mysite_login/ command = gunicorn mysite.wsgi -b 0.0.0.0:8000 user = rootautostart= trueautorestart= trueredirect_stderr = truestdout_logfile = /var/log/gunicorn.log## 配置说明[program:one_click]:其中one_click为要管理的子进程名称,此名称自定义,最好能明确区分directory:Django项目的根目录command:要执行的命令,这里为启动子进程的命令,子进程为gunicornuser:指定启动子进程的用户autostart :自动启动,也就是当父亲进程启动的时候,子进程也跟随启动。supervisor为父进程autorestart:自动重启,也就是当子进程挂掉的时候,父进程将会尝试自动去重启了进程redirect_stderr:当此选项为true的时候,错误日志也会写进stdout_logfile中stdout_logfile:定义stdout_logfile路径

3)启动进程管理工具supervisor

## 启动并设置开机自启动systemctl start supervisord.servicesystemctl enable supervisord.service## 如果更改过子进程的配置文件,这时候我们只需要reload下我们的Supervisor服务即可,不需要重启整个服务,这样会影响其它的服务supervisorctl reload

(4)nginx代理以及转发配置:

server {listen 5000;location / {# proxy_pass指定地址为访问gunicorn地址和端口proxy_pass http://127.0.0.1:8000;proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote_addr;}location ~.*\.(html|css|js|jpg|json|png|map|\ttf*|\woff2*|\woff*|eot|otf|ttf|json|cur|woff|svg|woff2|m3u8|ts|mp3)$ {# root指定Django项目的根目录root /data/mysite_login;proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote_addr;}}:wq!保存退出## 启动nginxsystemctl start nginxsystemctl enable nginx

备注:到这里如果不需要域名或者https访问的情形可以忽略步骤(5)之后的配置。

(5)配置阿里云slb服务,并设置监听

找到阿里云SLB服务点击创建ALB实例

实例网络类型私网vpc可用区选择实例具体使用的vpc以及可用区,IP模式一般选择使用固定IP,其他选项自由定义:

配置代理的端口以及权重:

传统型CLB服务里创建或找到已有域名的服务,监听配置向导,根据实际情况选择,我这里选择HTTPS:

下一步,HTTPS需要配置证书

选择第一步新建的服务器组:

配置安全状态检查以及其他配置:

配置审核,保存提交:

确定是否正常,域名访问页面试下:

nginx需要添加一条http请求全部重定向到https的配置:

rewrite $host(.*) https://域名:5000$request_uri;

测试平台功能,一切正常。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。