Django+nginx+gunicorn部署网站


写在前面

试过了apache2,uwsgi,这次尝试下gunicorn,本文权当学习笔记。

安装

sudo apt-get install nginx
sudo apt-get install python3
sudo apt-get install python3-pip
sudo pip3 install virtualenv

虚拟环境

#创建
python3 -m virtualenv venv
#启动
source venv/bin/activate

安装python包

pip3 install -Ur requirements.txt

收集静态资源

#注意在settings.py中添加STATIC_ROOT路径
python manage.py collectstatic --no-input

配置nginx

#创建文件
sudo vim /etc/nginx/sites-available/myproject.conf

贴入以下内容,并根据实际进行修改

server {
  charset utf-8;
  listen 80;
  server_name 0.0.0.0;  # 改成你的 IP

  location /static {
    #修改成你的静态资源路径
    alias /home/user/myproject/collectedstatic;
  }

  location /media {
    #修改成你的media路径
    alias /home/user/myproject/media;
  }

  location / {
    proxy_set_header Host $host;
    proxy_pass http://unix:/tmp/0.0.0.0.socket;  # 改成你的 IP
  }
}

建立软连接

sudo ln -s /etc/nginx/sites-available/myproject.conf /etc/nginx/sites-enabled

启动服务

#安装gunicorn(虚拟环境下)
(venv) ../myproject$pip3 install gunicorn
#重启nginx
(venv) ../myproject$sudo service nginx restart
#启动gunicorn
(venv) ../myproject$gunicorn --bind unix:/tmp/0.0.0.0.socket my_blog.wsgi:application
#可选参数,前两个为创建日志文件,-D为后台运行
gunicorn --access-logfile access.log --error-logfile error.log -D --bind unix:/tmp/0.0.0.0.socket myblog.wsgi:application