我的博客

Nginx + gunicorn部署django项目(https)

目录
  1. 编译安装nginx
  2. 配置nginx
    1. 80端口的设置
    2. 配置域名
    3. 配置转发
    4. 配置静态文件路径
    5. 配置ssl
    6. 把http重定向到https
    7. 示例
  3. 获取django静态文件并添加到nginx的静态目录下
  4. 部署django

测试环境

centos 7.6 nginx1.17.0

Ubuntu 16.04 nginx1.10.3

编译安装nginx

CentOS 7 下编译安装nginx并配置服务

配置nginx

80端口的设置

listen 80 default_server; listen [::]:80 default_server;

配置域名

server_name codeplot.top;

配置转发

1
2
3
4
5
6
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;
}

配置静态文件路径

1
2
3
location /static {
alias html/static/;
}

配置ssl

ssl_certificate cert/1539002028323.pem; ssl_certificate_key cert/1539002028323.key;

ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on;

把http重定向到https

return 301 https://$server_name$request_uri;

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
http {
server {
listen 443 ssl;
server_name codeplot.top;
ssl_certificate cert/cert.crt;
ssl_certificate_key cert/private.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /static {
alias html/static/;
}
}

server {
listen 80;
server_name codeplot.top;
return 301 https://$server_name$request_uri;
}
}

获取django静态文件并添加到nginx的静态目录下

1.在settings.py文件中添加配置; STATIC_ROOT 指示把静态文件放到哪里

例如 STATIC_ROOT = os.path.join(BASE_DIR, 'static_export')

2.执行命令,读取所有static文件到项目目录中

python3 manage.py collectstatic

3.把这些系统static文件连同项目的static文件一起拷贝到nginx的静态目录下(上一步设置的目录)

部署django

  • 安装依赖

pip install gevent gunicorn

  • 启动gunicorn

gunicorn --worker-class=gevent 应用名称.wsgi:application

评论无需登录,可以匿名,欢迎评论!