Nginx+uwsgi+Python3.6部署Django项目

  • 系统环境

    • centos7.3

    • python3.6.6

    • django2.2

    • uwsgi2.0.18

    • nginx1.14.2

  • 安装python3.6.6

    • 下载python安装包,wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tar.xz
    • 解压并进入解压文件夹,tar xvf Python-3.6.6.tar.xz && cd Python-3.6.6
    • 编译安装,依次输入以下命令
      • ./configure --prefix=/usr/local/python3 --with-ssl

      • make

      • make install

    • 创建python3的软连接

      • ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3

      • ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

      • 输入 python3 ,显示如下说明python3.6.6安装成功Nginx+uwsgi+Python3.6部署Django项目

      • 输入 exit() 退出python3.6.6

    • 安装django和uwsgi

      • pip3 install django

      • pip3 install uwsgi

    • 创建uwsgi的软连接

      • ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi3

    • 创建django项目,项目名为hello

      • django-admin startproject hello

      • cd hello/hello

      • 编辑 settings.py配置文件,vim settings.py,添加静态文件路径

        • STATIC_ROOT='/root/pyweb/hello'

        • 保存退出

      • 进入 manage.py 所在文件夹,执行以下命令把hello项目的静态文件收集到在nginx配置的指定文件夹中

        • python manage.py collectstatic

 

  • 安装nginx及配置

     

    • 添加nginx到yum源,rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    • 安装nginx,yum install -y nginx
    • 启动nginx,systemctl start nginx
    • 在浏览器输入服务器ip,看到如下页面说明nginx安装成功Nginx+uwsgi+Python3.6部署Django项目
    • 修改nginx配置文件,vim /etc/nginx/conf.d/default.conf
      • 在server标签中添加以下内容
      • location / {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:8008; # 转发到uwsgi监听的端口,和uwsgi的配置文件保持一致
        }
        location /static{
            alias /root/pyweb/static; # 对应django静态文件存放位置
        }
      • 注释掉其他的 location ,即在其每行的行首添加 #
      • 重启nginx,system restart nginx
  • 配置uwsgi

    • 进入hello文件夹
    • 创建配置文件,vim uwsgi_conf.ini,添加以下内容
    • [uwsgi]

      # the base directory (full path)
      chdir  = /root/pyweb/hello

      # Django's wsgi file
      module    = hello.wsgi

      # process-related settings
      # master
      master     = true

      # maximum number of worker processes
      processes = 4
      # ... with appropriate permissions - may be needed
      # clear environment on exit
      vacuum    = true

      # chmod-socket = 8008
      socket= :8008

      # add uwsgi log
      daemonize = /root/pyweb/hello/uwsgi.log
      # add uwsgi pid
      pidfile = /root/pyweb/hello/uwsgi.pid

    • 启动uwsgi,uwsgi --ini uwsgi_conf.ini
    • 停止uwsgi,uwsgi --stop uwsgi.pid
    • 启动uwsgi后,在浏览器地址栏输入服务器对应ip,即可访问django项目
    • 看到如下页面说明配置成功Nginx+uwsgi+Python3.6部署Django项目