Django+Nginx+uWSGI项目部署


实验环境:

所需工具版本
Python3.6.3
CentOS7.5
Django2.2.3

提前编写好Python Django项目并可以运行

导入

将项目上传至CentOS7.5中
在这里插入图片描述

配置项目

修改项目主目录下的settings.py配置项,关闭调试功能和配置日志

日志级别记录描述:

级别描述
CRITICAL50关键错误/消息
ERROR40错误
WARNING30警告消息
INFO20通知消息
DEBUG10调试
NOTSET0无级别
DEBUG=False
ALLOWED_HOSTS = [‘*’]

LOGGING = {
 'version': 1,
 'disable_existing_loggers': True,
 'default': { },#记录到日志文件
  'level':'WARNING',
  'class':'logging.handlers.RotatingFileHandler',
  'filename': os.path.join(BASE_DIR, "log",'debug.log'),#日志输出文件
  'maxBytes':1024*1024*5,#文件大小 
  'backupCount': 5,#备份份数
}

在这里插入图片描述

关闭防火墙及SELinux

防火墙和SELinux不关闭外部浏览器是无法成功访问的

systemctl stop firewalld.service && systemctl disable firewalld.service 
setenforce 0 && sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

在这里插入图片描述

升级Python

安装相关依赖包

#安装wget、GCC编译环境和依赖组件
yum -y install wget gcc openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite*-devel mysql-devel

#成功安装依赖包后下载Python3、解压并编译到CentOS7系统中
wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
tar -zxvf Python-3.6.3.tgz
cd Python-3.6.3/
sudo ./configure
make && make install

验证

使用python3查看是否成功升级
在这里插入图片描述

升级sqlite3

sqlite3的版本需要升级到3.8.3以上版本,否则后续执行命令会报错

#下载源码并解压,编译
wget https://www.sqlite.org/2019/sqlite-autoconf-3300100.tar.gz
tar zxvf sqlite-autoconf-3300100.tar.gz
cd sqlite-autoconf-3300100/
./configure --prefix=/usr/local
make && make install

# 替换系统低版本sqlite3
mv /usr/bin/sqlite3  /usr/bin/sqlite3_old
ln -s /usr/local/bin/sqlite3   /usr/bin/sqlite3
echo "/usr/local/lib" > /etc/ld.so.conf.d/sqlite3.conf
ldconfig

验证

使用sqlite3 --version查看是否成功
在这里插入图片描述

安装Django

批量安装或直接使用以下命令安装

pip3 install Django==2.2.3 django-crispy-forms django-formtools django-import-export future httplib2 Pillow six

在这里插入图片描述

安装Uwsgi

uWSGI是遵循WSGI协议的Web服务器,在生产环境下可以通过uWSGI作为Web服务器进行使用;可使用以下命令一步到位安装。

pip3 install uwsgi

测试

创建并启动test.py测试uWSGI是否能正常使用,出现下图表明uWSGI服务器一切正常。

#test.py内容如下:
def application(env,start_response):
    start_response('200 OK',[('Content-Type','text/html')])
    return [b"Hello World"]

#启动命令
uwsgi --http :8001 --wsgi-file test.py

在这里插入图片描述

uWSGI启动项目

  • 使用uwsgi --http :8002 --chdir /home/kepro/ -w kepro.wsgi --static-map=/static=static启动项目,访问浏览器即可出现相关内容。
    在这里插入图片描述
  • 或配置服务器配置文件
    项目kepro根目录下创建linux.ini,内容如下:
[uwsgi]
 # 指定IP端口
http=0.0.0.0:8002
# 项目目录
chdir=/home/kepro
# 指定项目的
module=kepro.wsgi:application
# 启用主进程
master=true
# 指定静态文件
static-map=/static=/home/kepro/static

启动命令:uwsgi --ini linux.ini效果与上面是一样的。

安装Nginx

Nginx是一个 高性能的HTTP和反向代理web服务器,同时也提供IMAP/POP3/SMTP服务;其并发能力是同类型的网页服务器表现较好的。

#添加源并安装nginx
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install -y nginx

在这里插入图片描述

验证

启动Nginx服务查看是否成功
在这里插入图片描述

实现Django+Nginx+uWSGI上线部署

在这里插入图片描述

  1. 配置uWSGI的配置文件
    在项目主目录下使用vim nginx.ini创建nginx.ini并添加以下内容:
 # 指定IP端口
socket=0.0.0.0:8080    
# 项目目录
chdir=/home/kepro
# 指定项目的application
module=kepro.wsgi:application
# 启用主进程
master=true
# 指定静态文件
static-map=/static=/home/kepro/static
  1. 修改配置Nginx文件
#nginx.conf--/etc/nginx/nginx.conf;在nginx.conf中添加如下内容:
upstream django {
        server 192.168.183.101:8080;#“django”名称随便取,但是IP要与Nginx.ini中socket一致
}
server {
        listen 80;
        server_name 192.168.183.101 ;#IP地址或域名
        # 指定项目路径uwsgi
        location / {# 这个location就和Django中的url(r'^admin/', admin.site.urls),
            include /etc/nginx/uwsgi_params;# 导入一个Nginx模块他是用来和uWSGI进行通讯的
            uwsgi_pass django;# 指定uwsgi的sock文件所有动态请求就会直接丢给它;名字就是上面upstream的名字
        }

        # 指定静态文件路径
        location /static{
        alias /home/kepro/static;
         }
        }
}

  1. 重新启动服务并验证
#先启动nginx服务然后启动uwsgi服务
nginx -s reload
uwsgi --ini nginx.ini

在这里插入图片描述
无论是在内部还是外部浏览器中输入IP即可访问;外部浏览器不能访问查看防火墙和SELinux是否关闭。
在这里插入图片描述
到此,使用Nginx实现Django线上部署已完成。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值