linux、nginx和uwsgi搭建django生产环境

操作系统:ubuntu14

** 1. 安装nginx和uwsgi **

sudo apt-get update  # 更新apt-get的软件列表
sudo apt-get install nginx  # 安装nginx
sudo apt-get install uwsgi  # 安装uwsgi

** 2. nginx的配置 **
依次执行如下命令:

cd /etc/nginx/sites-available  # 进入nginx的配置文件夹
touch sitename.conf  # 新建一个配置文件
vim sitename.conf

并输入以下内容:

server {
    listen 80;
    server_name domain.cn;  # 这里写自己解析到这台服务器的域名,没有的话就写0.0.0.0
    charset utf-8;

    client_max_body_size 75M;

    # 配置映射django项目的media文件
    # 配置后当你访问http://domain/media/1.pic时,nginx会自行处理,
    # 把你项目中的/home/web-sites/ProjectName/media/1.jpg给返回
    # 过去,同理,下面的static也是如此
    location /media {
        alias /home/web-sites/ProjectName/media; # django项目媒体文件目录
    }
    location /static {
        alias /home/web-sites/ProjectName/static; # django项目静态文件目录
    }
    location / {
        uwsgi_pass django-ProjectName;  # 自己写一个名字
        include uwsgi_params;
    }
}

将刚才的配置文件在sites-enabled建立一个软连接,执行命令如下:

ln -s /etc/nginx/sites-available/sitename.conf /etc/nginx/sites-enabled
service nginx restart  # 重启nginx

** 3. uwsgi的配置 **
依次执行如下命令:

cd /etc/uwsgi/apps-vailable
touch myapp.ini  # 新建一个配置文件。必须以ini为结尾
vim myapp.ini  # 编辑新建的配置文件

并输入以下内容:

[uwsgi]
master = true
chdir = /home/web-sites/ProjectName  # 项目目录
processes = 4  # 进程数
socket = /home/web-sites/ProjectName/ProjectName.sock
chmod-socket = 666
wsgi-file = /home/web-sites/ProjectName/ProjectName/wsgi.py
daemonize = /home/web-sites/logname.log  # 日志文件地址

同样将刚才的配置文件在apps-enabled建立一个软连接,执行命令如下:

ln -s /etc/uwsgi/apps-available/myapp.ini /etc/uwsgi/apps-enabled
service uwsgi restart  # 重启uwsgi

** 注意事项:**

  1. 新加的配置文件必须为*.ini格式且软连接到/etc/uwsgi/apps-enabled中
  2. 若有nginx或uwsgi启动失败的问题,可以查看/var/log/nginx.log和/var/log/uwsgi.log这两个日志文件

** 遇到的问题 **

  1. 启动uwsgi时出现以下错误:
Mon Aug  8 17:14:34 2016 - bind(): Permission denied [core/socket.c line 185]

解决方法为:

更改项目的最上层父目录的权限为755或以上
  1. 通过nginx访问出现如下错误:
Mon Aug  8 18:13:40 2016 - -- unavailable modifier requested: 0 --

解决方法为:

sudo apt-get install uwsgi-plugin-python

你可能感兴趣的:(linux、nginx和uwsgi搭建django生产环境)