• Centos 7 下部署Django + uWSGI + Nginx


    1、废话

    之前利用Django写了些测试工具,一直是直接 python manage.py runserver 8081这么来用的。用户量不大,倒也不影响什么。uWSGI+Nginx的性能肯定要好,so 研究了一下

    2、环境:

    Python: 3.5

    Django: 1.8

    OS: CentOS 7 x86_64

    uwsgi: 2.0.17

    3、安装Python3.5 

    • 不要删除自带的python2.7,否则会出问题,因为centos许多软件需要依赖系统自带python
    • 安装依赖工具 yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
    • 下载 wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
    • 解压 tar -zxvf Python-3.5.1.tgz
    • 移动至规范的放软件的目录下 mv Python-3.5.1 /usr/local
    • 安装:
    • cd /usr/local/Python-3.5.1/
    • ./configure
    • make & make install
    • 更新python的软连接:

    rm -rf /usr/bin/python

    ln -s /usr/local/bin/python3.5 /usr/bin/python

    • 验证

    python -V

    4、安装uWSGI

    • 安装 pip install uwsgi 
    • 验证 
    • def application(env, start_response):
          start_response('200 OK', [('Content-Type','text/html')])
          return [b"Hello Django"]
      uwsgi --http :8001 --wsgi-file test.py

      浏览器访问,网页能显示 Hello Django 那么就没问题

    5、安装Nginx

    • 配置源

              vi /etc/yum.repos.d/nginx.repo 添加下面内容

    • [nginx]
      name=nginx repo
      baseurl=http://nginx.org/packages/mainline/centos/7/x86_64/
      gpgcheck=0
      enabled=1

       gpkcheck=0 表示对从这个源下载的rpm包不进行校验;
       enable=1 表示启用这个源。

    • yum install nginx

    • 启动nginx:

      systemctl start nginx

             此处如果报错,可以查看系统日志来分析,本人遇到的问题如下:

    nginx: [emerg] bind() to 0.0.0.0:8089 failed (13: Permission denied)

             权限拒绝,度娘,发现是,经检查发现是开启selinux 导致的。 直接关闭:

       方法一:临时关闭  setenforce 0
    方法二:用户关闭 修改
    /etc/selinux/config 文件 将SELINUX=enforcing改为SELINUX=disabled 重启机器即可
    • 修改默认端口号(默认为80)
      vim /etc/nginx/conf.d/default.conf

      server {
          listen 8089;

          listen [::]:8089;
          ...

          ...

      }

    • systemctl restart nginx 重启nginx,直接访问http://ip:8089 能看到nginx的欢迎界面即可。

    6、配置

    配置uwsgi启动django的参数

    vim django_uwsgi.ini
    
    [uwsgi]
    # 通过uwsgi访问django需要配置成http
    # 通过nginx请求uwsgi来访问django 需要配置成socket
    # 9000 是django的端口号
    socket = :9000
    
    # web项目根目录
    chdir = /home/root/pydj/django_one
    
    # module指定项目自带的的wsgi配置文件位置
    module = django_one.wsgi
    
    # 允许存在主进程
    master = true
    
    # 开启进程数量
    processes = 3
    
    # 服务器退出时自动清理环境
    vacuum = true

    7、配置nginx

            

    vi /etc/nginx/conf.d/default.conf
    
    # 在文件最后,新加一个server
    
    server {
        listen       8089;
        listen      [::]:8089;
        server_name 127.0.0.1 192.168.10.114;
    
        location / {
            include /etc/nginx/uwsgi_params;
            uwsgi_pass 127.0.0.1:9000;
        }
        location /index/ {
            root /index/;
        }
        location /static{
            alias /home/root/pydj/django_one/sign/static;
        }
    
    }
    # 8089 是对外的端口号
    # server_name nginx代理uwsgi对外的ip
    # 绿色高亮的是核心, 127.0.0.1:9000 即当nginx收到8089端口的请求时,直接将请求转发给
    127.0.0.1:9000
    
    

    8、uwsgi启动django

    # 进入项目根目录
    /home/root/pydj/django_one
    
    # 启动
    uwsgi --ini django_uwsgi.ini

    9、重启Nginx

    systemctl restart nginx

    此时,环境搭建完毕,使用浏览器访问 http://ip:8089/index/ 即可显示出django的index路由对应的页面了

     

  • 相关阅读:
    修改某路径下的文件名
    关于提取字符串中数字
    解决采集知乎数据时由于账号被封遗漏的账号重爬问题(python代码)
    project proposal写作框架
    PHP实现生成透明背景的PNG缩略图函数
    PHP中的绝对和相对路径解析
    js设置页面锚点
    列表顺序储存
    c++修饰符重载
    c++配置文件读取、修改、添加
  • 原文地址:https://www.cnblogs.com/byron0918/p/8724999.html
Copyright © 2020-2023  润新知