初学Ubuntu:Django+uwsgi+nginx项目部署

Django项目部署

搭建生产环境思路

  • 安装环境
  • 测试环境
  • 测试uwsgi代理项目
  • 测试Nginx代理静态文件
  • uwsgi与nginx连接
  • 项目部署成功

环境介绍

  • Ubuntu 16.04
  • Nginx 1.10.3
  • uwsgi 2.0.12
  • Python 3.5.2

安装nginx 

  • 官方指定安装方式:
  • 先获取公钥 wget https://nginx.org/keys/nginx_signing.key
  • 再添加公钥 sudo apt-key add nginx_signing.key

  • 在源文件中添加 sudo vi /etc/apt/sources.list

  • deb http://nginx.org/packages/ubuntu/ xenial nginx
  • deb-src http://nginx.org/packages/ubuntu/ xenial nginx
  • 注意:xenial是Ubuntu的发布版本

  • 安装nginx

  • apt-get update
  • apt-get install nginx

  • 启动nginx:sudo nginx

  • 在浏览器中输入:127.0.0.1 进入nginx欢迎页,安装成功
  • 停止nginx服务:sudo nginx -s stop | quit

安装uwsgi

  • 楼主使用系统uwsgi,避免在每个虚拟python环境中安装uwsgi
  • 安装命令:apt install uwsgi
  • 说明:如果使用在python环境中安装uwsgi,可能会在uwsgi与nginx连接时出现无法连接的情况。

使用uwsgi代理项目

  • 编写配置文件 myproject.ini
  • 使用http代理

[uwsgi]
# 直接作为web服务器使用
http=0.0.0.0:8010

# 配置工程目录
chdir=/var/www/DjangoProject/p_name

# 配置项目的wsgi目录。相对于工程目录
wsgi-file=p_name/wsgi.py

#配置进程,线程信息
processes=2
threads=2

# 多线程开关
enable-threads=True

# 主进程,主线程模式
master=True

# 启动端口号
pidfile=uwsgi.pid

# 日志
daemonize=uwsgi.log
  • 启动uwsgi:uwsgi --ini myproject.ini

  • 浏览器测试项目运行正常

使用nginx代理静态文件

  • 复制出nginx的默认配置文件,cp /etc/nginx/nginx.conf
  • 修改location,server_name,root,添加静态资源的路径
  • myproject.conf


user  nginx;        # 用户,用户组
worker_processes  1;    # 工作组数量

error_log  /var/log/nginx/error.log warn;    # 日志文件
pid        /var/run/nginx.pid;           # nginx启动后生成的文件


events {
    worker_connections  1024;      # 工作链接数量
}


http {
    include       /etc/nginx/mime.types;     # mime什么鬼
    default_type  application/octet-stream;    # 默认类型

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;     # 响应超时设置

    #gzip  on;      # 支持压缩文件传输

    include /etc/nginx/conf.d/*.conf;     # 默认启动的配置文件

    # 需要添加的项目配置
    server {
        listen       80;       # 监听端口
        server_name  127.0.0.1;    # 域名,localhost,ip

        charset utf-8;

        root    /var/www/;     # 静态文件根目录

        #index    hello.html;

        location /static {            # 静态文件部署
            alias /var/www/static/;       # 指向地址
        } 
    }
}
  • 使用配置文件启动nginx:nginx -c conf_path(配置文件的绝对路径)

  • 浏览器访问:127.0.0.1/static,查看项目的静态资源,检测是否成功

uwsgi与nginx连接

  • 使用scoket
  • 在nginx配置文件中添加uwsgi_params的文件路径
# 需要添加的项目配置
server {
        listen       80;       # 监听端口
        server_name  120.120.120.120;    # 域名,本机ip

        charset utf-8;

        root    /var/www;     # 静态文件根目录

        location / {
            include /etc/nginx/uwsgi_params;     # 指向桥接文件
            uwsgi_pass 127.0.0.1:8010;           # 与uwsgi配置文件的scoket端口一致
        }

        location /static {            # 静态文件部署
            alias /var/www/static/;       # 指向静态文件地址
        } 
}
  • 说明:此文件是作为uwsgi和nginx的桥接作用,端口号设为一致。
  • 项目模式改为生产模式,即DEBUG=False

测试项目部署成功

  • 浏览器测试

猜你喜欢

转载自blog.csdn.net/qq_15260769/article/details/81483251