centOS7部署Django3项目(uWSGI+nginx)

一、背景学习

1.概念

WSGI:(Web Server Gateway Interface)服务器网关接口,是一种通信协议规范
uwsgi:是一种传输协议规范,是一种约定。
uWSGI:是实现了uwsgi和WSGI、http等协议的Web服务器。
我们现在需要记住,WSGI和uwsgi协议沟通的双方分别是wsgi server (比如uWSGI) 要和 wsgi application(比如django、flask ),实际上uWSGI作为python程序的web服务器和java程序的web应用服务器的tomcat一样,关于详细解释可以查看下面文章。
其中Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换
http://t.csdn.cn/USzO8

2、项目调用流程分析uWSGI+nginx+Django

1)首先客户端向服务器发送请求,请求资源
2)Nginx作为直接对外的服务接口,接受客户端发送过来的请求,会进行捷报、分析:
如果是静态文件请求,就根据配置的静态文件路径,返回请求的资源。
如果是动态请求,nginx就通过配置文件,将请求传递给uWSGI服务,uWSGI将接受到的包进行处理,并转发给web应用(如django);web应用根据返回值进行打包,转发给uWSGI
3)uWSGI接收到响应,转发给Nginx,nginx最终将返回值返回给客户端(如浏览器、app)

二、环境搭建

1、python环境搭建

可以查看此处链接,这里有python环境搭建,还有Django项目上传和解压,后续uWSGI+nginx配置文件的项目路径都是基于此Django的路径,所以前期必须确保这步搭建正确。
https://blog.csdn.net/qq_32304985/article/details/129114778

2、mysql搭建

可以查看此处链接
添加链接描述

3、nginx安装

yum方式安装nginx
yum -y install nginx

查看nginx版本
nginx -v

nginx命令
systemctl status nginx  ## 查看nginx状态
 
systemctl start nginx   ## 开启nginx服务
 
systemctl stp nginx     ## 关闭nginx服务
 

在这里插入图片描述
上述绿色代表nginx启动成功

4、uWSGI安装

## 1.安装uwsgi,正常python3已默认安装uwsgi
pip3 install uwsgi
 
## 2.安装后马上建立软链接
ln -s  /usr/local/python3/bin/uwsgi     /usr/bin/uwsgi
 
## 3.创建软链接后,执行下面命令查看uwsgi版本
uwsgi --version

在这里插入图片描述

5、uWSGI配置

这部分项目路径用到了第二部分环境搭建的django项目路径
(1)在django项目settings.py所在目录,使用vim新文件,如uwsgi.ini文件,直接复制粘贴如下内容,根据自身django项目进行修改

[uwsgi]
#服务启动端口,也可以指定为127.0.0.1:9000,这样就会监听到网络套接字
socket = 127.0.0.1:8091

# 项目的全路径
chdir = /var/www/mybankmanager-master/BankManageSystem/

# Django中wsgifile 项目中wsgi的位置
wsgi-file = BankManageSystem/wsgi.py

# Django中虚拟环境绝对路径
virtualenv=/var/www/mybankmanager-master/BankVirtualenv

#进程相关设置
# 进程数
processes = 4
#线程数
#threads = 2
#设置socket的监听队列大小(默认:100)
listen = 120
#指定静态文件绝对路径
#static-map = /var/www/mybankmanager-master/Static_Root

#主进程启动
master = true
#指定pid文件
pidfile = /var/www/mybankmanager-master/uwsgi.pid

#启用线程
enable-threads = True

#设置用于uwsgi包解析的内部缓存区大小为64k。默认是4k。
buffer-size = 32768

#设置后台运行
daemonize = /var/log/myappUwsgi.log

# 退出时清除虚拟环境
vacuum =True

(2)修改成功后保存如下图

在这里插入图片描述
(3)收集静态文件(如果前面已收集可不用执行)

python manage.py collectstatic

(4)启动uWSGI,查看日志

## 在当前目录启动
uwsgi  --ini  uwsgi.ini
 
## 启动之后查看进程
ps -ef | grep uwsgi

在这里插入图片描述
上图代表启动成功

6、nginx配置

这部分项目路径用到了第二部分环境搭建的django项目路径
(1)修改配置文件

vim /etc/nginx/nginx.conf

直接全部覆盖文件内容

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    keepalive_timeout  65;
    include /etc/nginx/conf.d/*.conf;
    server {
        listen 8092;  ##外网请求端口,即监听端口
        server_name  127.0.0.1:8092;   ##外网请求域名,无域名设置127.0.0.1:8092
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8091;   ##nginx转发内网的端口,必须和uWSGI设置socket端口一致
           uwsgi_param UWSGI_SCRIPT  BankManageSystem.wsgi;     ##wsgi.py文件相对路径
           uwsgi_param UWSGI_CHDIR  /var/www/mybankmanager-master/;          ##项目绝对路径
        }
        location /static/ {
        alias /var/www/mybankmanager-master/Static_Root/;    ##静态文件绝对路径
        }
    }
}

(2)保存且重启nginx

systemctl restart nginx

若执行命令后,无任何提示,即启动成功,可通过如下命令查看状态

systemctl status nginx  ## 查看nginx状态

(3)启动报错处理
若启动报错如“[emerg] 12559#12559: bind() to 0.0.0.0:8092 failed (13: Permission denied)”
此提示是权限操作文件,首先看下nginx的启动用户有没有对文件的操作权限, 如果权限有了还是报这个错误selinux 是否关闭了, 关闭之后再次启动nginx 就可以了,亲测有效。
使用:getenforce命令
一般会返回三种状态:
1,Enforcing (记录警告且阻止可疑行为)
2,Permissive (代表仅记录安全警告但不阻止可疑行为)
3,Disabled (禁用状态)
首先执行:若返回Enforcing ,则先临时进行修改
在这里插入图片描述
临时修改执行命令:setenforce 0设置Permissive 模式,setenforce 1设置Enforcing 模式
在这里插入图片描述
若重新启动nginx成功,则进行永久修改,将
SELINUX=enforcing改为SELINUX=disabled,报错后重启系统,SELinux状态更新为Disabled 。

vi  /etc/sysconfig/selinux 

在这里插入图片描述
重启系统,使用getenforce命令,查看SELinux状态更新为Disabled 。

在这里插入图片描述

7、重启uWSGI,访问成功

(1)必须修改Django项目的配置文件 settings.py。
ALLOWED_HOSTS = [‘*’]
(2)进入项目路径执行如下命令

##查看进程
ps -ef | grep uwsgi
##启动服务
uwsgi  --ini  uwsgi.ini

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值