Django Nginx+uwsgi 安装配置

前言

  当一个django项目完成基本功能后,下一步的工作就是它部署(deployment)到服务器上,django部署用到了两种webserver:

niginx: Nginx (engine x) 是一个高性能的HTTP反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务
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 地址就可以访问我们的项目了。

  

 

 

  

  

posted @ 2020-04-02 17:30  余独不觉  阅读(318)  评论(0编辑  收藏  举报