Django Nginx+uwsgi 安装配置
前言
当一个django项目完成基本功能后,下一步的工作就是它部署(deployment)到服务器上,django部署用到了两种webserver:
uWSGI: uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。
安装的系统为 centos7
安装 Nginx
在centos7中安装 nginx 十分简单,使用 yum install nginx 安装即可。
下面介绍一下 nginx 的常用命令:
- 启动:nginx
- 停止:nginx -s stop
- 重新启动:nginx -s reload
- 查看 nginx 进程:ps -ef | grep nginx
启动Django
这里我们先检查 Django 启动后能否正常访问,一开始用 python manage.py runserver 0.0.0:8000 用ip是不能访问的,之后发现是腾讯云的安全组没有开放 8000 端口,开放之后还要把服务器的ip地址写在 settings.py 里的 allowed_hosts[] (或者是写上 '*')里面,然后访问成功。
配置uwsgi.ini文件
在工程目录下建立 uwsgi.ini 文件,并写下如下内容:
[uwsgi] # 项目目录 chdir=/var/web/工程目录/ # 指定项目的application module=搞登陆的.wsgi:application # 进程个数 workers=5 pidfile=/var/web/工程目录/uwsgi.pid # 指定IP端口,以下是通过 uwsgi 访问的端口 http= :8010 # 转发给nginx的端口号 socket = 127.0.0.1:8001 # 指定静态文件 static-map=/static=/var/web/工程目录/static # 启动uwsgi的用户名和用户组 uid=root gid=root # 启用主进程 master=true # 自动移除unix Socket和pid文件当服务停止的时候 vacuum=true # 序列化接受的内容,如果可能的话 thunder-lock=true # 启用线程 enable-threads=true # 设置自中断时间 harakiri=30 # 设置缓冲 post-buffering=4096 # 设置日志目录 daemonize=/var/web/工程目录/uwsgi.log #目录中一旦有文件被改动就自动重启 touch-reload=/var/web/你的工程
然后测试 uwsgi 是否正常启动: 访问 ip地址:端口号
配置nginx相关文件
当我们运行 nginx 时仍然是初始页面,需要在相应的目录做配置。打开 /etc/nginx/conf.d 目录在其中新建文件 test.conf,并输入以下内容:
upstream django{ server 127.0.0.1:8001; } server { # 监听端口 可改 listen 80; # 修改为你的ip或者域名 server_name 你的ip地址; #编码方式 charset utf-8; # 日志记录, 可选 access_log /var/web/你的工程/nginx_access.log; error_log /var/web/工程/nginx_error.log; # 静态文件所在目录 location /static { alias /var/web/工程/static; } # 媒体所在目录 # 指定项目路径uwsgi location / { # 这个location就和咱们Django的url(r'^admin/', admin.site.urls), include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的 uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间 uwsgi_pass django; } }
现在在运行 nginx 然后访问 ip 地址就可以访问我们的项目了。