Redhat6.5部署Django(Nginx + uWSGI)

说明:

  • 项目名称:mysite
  • 项目路径:/mysite
  • 主应用:mysite
  • python版本:python3.6.8
  • django版本:2.2
  • 项目数据库:mysql 8.0.15

1. 运行测试服务器确保项目能正常启动

cd /mysite
python manage.py runserver

查看项目是否能正常启动,如果出现RuntimeError: cryptography is required for sha256_password or caching_sha2_password 错误,则需要安装cryptography,然后重启服务:

pip install cryptography

2. 安装Nginx

sudo yum install epel-release
sudo yum install python-devel
sudo yum install nginx

SELinux设置为宽容模式

如果不讲SELinux设置为宽容模式,Nginx会出现403 forbidden 错误。

  • 通过命令设置
sudo setenforce 0
  • 通过修改配置文件设置
vi /etc/selinux/config
SELINUX=enforcing #将enforcing修改为disabled或enforcing或permissive

修改完后需要重新启动。

3. 安装uWSGI

3.1 安装

sudo pip install uwsgi

3.2 测试项目

uwsgi --http :8080 --chdir /mysite --home=/mysite/env --module mysite.wsgi

3.3 使用UNIX socket代替TCP端口

在/mysite目录下创建mysite.sock并赋予777权限

touch mysite.sock
chmod 777 mysite.sock

使用socket启动uWSGI

uwsgi --socket mysite.sock --module mysite.wsgi [--chmod-socket=666]

3.4 使用配置文件启动uWSGI

在/mysite 下新建mysite_uwsgi.ini,并写入以下内容

[uwsgi]
chdir = /mysite
module = mysite.wsgi
home = /mysite/venv/

master = true
processes = 2
threads = 4

socket = /mysite/mysite.sock
chmod-socket = 664

vacuum = true

使用ini文件启动uWSGI

uwsgi --ini mysite_uwsgi.ini

4. 安装supervisor来管理Nginx

supervisor是一个专门用来管理进程的工具,uwsgi可以后台运行但其启动与关闭很不方便,因此我们用supervisor来管理uWSGI进程。

4.1 安装

sudo pip install supervisor

4.2 配置

  • 生成默认配置文件
sudo echo_supervisord > /ect/supervisord.conf
  • 修改配置文件
[program:demo]
command=/usr/local/bin/uwsgi --http :8080 --chdir /mysite --module mysite.wsgi
 #如果使用配置文件启动则使用command=/usr/local/bin/uwsgi --ini /mysite/mysite_uwsgi.ini
directory=/mysite
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
  • supervisor启动
supervisord -c /etc/supervisord.conf 
  • 管理项目进程(启动、重启、停止)
supervisorctl -c /ect/supervisord.conf [start|stop|restart] [program-name|all]
  • 设置supervisor自启动
    修改 /etc/rc.d/rc.local 文件,在文件最后增加一行:
usr/local/bin/supervisord -c /etc/supervisord.conf

5.配置Nginx

  • 修改/etc/nginx/nginx.conf,在http模块中增加server:
server {
    listen      8080;
    server_name 127.0.0.1;  #或者配置为域名 server_name www.example.com;
    charset     utf-8;
    client_max_body_size 75M;
    location /media  {
        alias /mysite/media;
    }
    location /static {
        alias /mysite/static;
    }
    location / {
        uwsgi_pass  unix:///mysite/mysite.sock;
        include     /etc/nginx/uwsgi_params;
    }
}
  • 测试配置
sudo service nginx configtest 
或 /path/to/nginx -t
  • **重启Nginx服务
sudo service nginx reload 
或 sudo service nginx restart 
或 /path/to/nginx -s reload
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值