CentOS7下部署Django+uWSGI+Nginx

    之前写PHP的时候自己一直没有手动操作在SERVER上部署项目~所以对PHP+fastcgi+Nginx的套路不是很熟悉~

    好吧~作为一个SERVER工程师,欠的债总是要还的(笑)!

   最近写python3的时候自己整了一发项目的SERVER部署,python框架用的是Django,SERVER部署的套路使用的是Django+uWSGI+Nginx这个套路~

     基于网上搜索到的资料有的版本比较陈旧,有的帖主思维比较跳跃,导致第一次部署之旅持续了两天,简直是头破血流,极度酸爽~

     本文对于Django框架的使用,uWSGI是啥,Nginx起到什么样的作用不做过多讲解!网上可以搜到很多相关资料!

     主要把Django+uWSGI+Nginx成功部署的流程记录一下!

 

 

准备工作

准备一台SERVER,当然你是本地的虚拟机也可以,但是案例以阿里云为例!

申请阿里云服务器时我们选择CentOS系统!

首先,在阿里云后台实例中,我们找到已开通的实例,选择网络与安全中的安全组,添加安全组信息!

然后开启8080端口的权限,像下图这样填写信息!

再开启8000/9000端口权限(再添加一个安全组,配置信息如上图,80/80改成8000/9000即可)

接着我们需要重置一下申请到阿里云的ssh密码(不要忘记设置好密码后重启一下实例)

 

 

安装所需软件

在做完准备工作后,我们可以在阿里云实例信息里获得服务器的ip和密码

使用ssh连接阿里云,像下面这样(当然,@后的ip应该改成你自己的)

输入密码后连接到服务器

接着我们来看一下系统的版本

是CentOS,没毛病~

 

 

然后我们开始正活!

因为CentOS只自带python2,并没有预配安装python3,所以我们首先需要安装python3到服务器。

【python3.6.5安装】

(1)安装python依赖包

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel python-devel

(2)安装python

#wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
#mkdir -p /usr/local/python365
#tar zxvf Python-3.6.5.tgz
#cd Python-3.6.5
#./configure --prefix=/usr/local/python365
#make
#make install
#ln -s /usr/local/python365/bin/python3 /usr/local/bin/python3
#ln -s /usr/local/python365/bin/pip3 /usr/local/bin/pip3
#pip3 install --upgrade pip  #更新pip
#pip3 install ipython  #安装ipython方便调试

上面用了ln -s指令做了两个软连(如果需要在CentOS命令行中执行,都可以软连到/usr/local/bin/这个目录底下)

(3)测试安装是否正常

 

python3.6.5安装完成后,我们接着整一下uWSGI~

【uWSGI安装】

(1)使用pip工具包安装

#pip3 install uwsgi

#ln -s /usr/local/python365/bin/uwsgi /usr/local/bin/uwsgi3  #建立软链接
#uwsgi --version  #检查安装成功
2.0.17

 

 

然后安装Django!

【Django安装】

(1)使用pip工具包安装

#pip3 install django==1.11.8

#ln -s /usr/local/python365/bin/django-admin /usr/local/bin/django-admin

这里我安装的是1.11.8版本的django~

 

 

最后把Nginx安装到我们的服务器上!

【Nginx安装】

(1)使用yum安装

#yum -y install nginx

 

 

 

到这里!我们就把Django+uWSGI+Nginx套路所需的软件都安装完毕了!

可以通过下图指令来查看安装软件的版本信息(我的nginx启动文件在/usr/sbin/目录下)

接下来就是修改和新建配置文件,使Django,uWSGI,Nginx联通在一起了!

 

 

#测试Nginx#

①启动nginx

如下图这样,使用 /usr/sbin/nginx 指令来启动nginx

这里如上图显示我的80端口已经被占用~不过没有关系!那是因为我现在阿里云正在跑着nginx!(如果你是首次安装nginx并启动应该不会这样)

使用 killall -9 nginx  指令来杀掉nginx的进程并再次启动nginx,像下图这样

不报错表示启动成功!

接着我们打开本地浏览器,使用ip进行访问!

如果返回上图页面,就表示我们的Nginx已经在Server上跑起来了!(注:这里nginx的配置文件我没有改,所以使用默认80端口)

 

 

#修改Nginx配置文件,创建Django项目及新建uwsgi.ini文件#

①首先我们找到Nginx的配置目录,如下图

进入conf.d目录下新建 jango_test.conf 文件,并写入配置信息,如下图

server{
        listen 8099;                               #监听8099端口
        server_name 39.106.27.2;
        charset utf-8;
        access_log /var/log/nginx/access.log;      #日志文件位置
        error_log  /var/log/nginx/error.log;

        client_max_body_size 75M;

        location / {                               #访问/时
          include         uwsgi_params;            #加载uwsgi模块
          uwsgi_pass      39.106.27.2:8000;        #将连接转到该IP
          uwsgi_read_timeout 2;
        }
        location /static/ {
            expires 30d;
            autoindex on;
            add_header Cache-Control private;
            alias  /server/Onlineshop/static;      #访问/static时直接访问到/project/static 
        }
}

然后wq保存退出即可!

 

②然后我们在服务器 / 目录下创建 server 路径,在server路径下创建django项目jango_test,像下图这样

在项目jango_test中新建app go_test,新建目录uwsgi,新建uwsgi启动文件myweb_uwsgi.ini,项目结构像下面这样

 

③写入myweb_uwsgi.ini配置文件信息

myweb_uwsgi.ini配置文件信息如下

[uwsgi]
# Django-related settings

socket = :8000

# the base directory (full path)
chdir           = /server/jango_test


# Django s wsgi file
module          = jango_test.wsgi

# process-related settings
# master
master          = true

# maximum number of worker processes
processes       = 4

# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

pidfile=uwsgi/uwsgi.pid
# 在后台运行, 信息保存的日志文件
daemonize=uwsgi/uwsgi.log

配置完wq退出即可

 

④用Django写一个简单的print用来测试

进入 /server/jango_test/jango_test/目录下

修改settings.py文件,添加服务器ip及新增的app,如下图红框处

修改urls.py文件,指定默认路由,如下图红框处

然后进入 /server/jango_test/go_test/ 目录下,修改views.py文件,return一个HttpResponse,如下图!

再到这里!所有的配置步骤就完成了!

 

最后使用 killall -9 先把nginx进程杀死

然后进入到 /server/jango_test/ 目录下,使用下图指令,开启uwsgi

再次启动Nginx!

打开本地浏览器,使用 ip:port ,访问阿里云上的Django项目!

如上图!就是刚才我们在Django中返回的HttpResponse!

大功告成!

 

 

 

 

参考帖子URL

https://www.cnblogs.com/zhangxinqi/p/9084126.html

https://blog.csdn.net/xunalove/article/details/76359890?utm_source=5ibc.net&utm_medium=referral

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值