Nginx + Gunicorn + Django 部署

2018-07-23
Django

Nginx 安装配置

Nginx安装

1
yum -y install nginx

设置nginx开机启动:

1
chkconfig nginx on

启动nginx:

1
service nginx start

Nginx配置

在/etc/nginx/conf.d下新建配置文件nginx.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
listen 80;

server_name _;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

location / {
proxy_pass http://127.0.0.1:8080;
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安装配置

Gunicorn安装

使用命令:

1
pip install gunicorn

Gunicorn配置

在Django的项目文件下启动:

1
nohup gunicorn -w 3 -b 127.0.0.1:8080 mysite.wsgi:application &

其中mysite为project名,关于project.wsgi:application的解释,前半截很容易理解,就是调用了project下的wsgi.py,而后面的application,我一开始以为这个application是要改成自己app的名字,后来才发现,这个实际上是wsgi.py中的变量,所以是固定的,不用改。

试着运行没问题之后,可以直接在根目录下创建gunicorn.conf.py

来配置位置,以后运行就用

1
gunicorn -c gunicorn.conf.py project.wsgi:appliction

也可以

  1. 在project下新建gunicorn的配置文件gunicorn.conf.py

    1
    2
    3
    4
    5
    6
    7
    8
    import multiprocessing

    bind = "127.0.0.1:8080"
    workers = 2
    errorlog = '/home/brad/xxx_project/gunicorn.error.log'
    #accesslog = './gunicorn.access.log'
    #loglevel = 'debug'
    proc_name = 'gunicorn_blog_project'
  2. 使用配置启动:

    1
    sudo nohup gunicorn xz1024_project.wsgi:application -c /home/brad/xz1024_project/gunicorn.conf.py&

Django安装

权限问题

  1. nginx启动的用户
  2. selinux置为disabled
    查看当前selinux的状态。

/usr/sbin/sestatus

将SELINUX=enforcing 修改为 SELINUX=disabled 状态。

vi /etc/selinux/config

#SELINUX=enforcing

SELINUX=disabled

重启生效。reboot。

reboot

参考1
参考2