在前面我们已经了解了如何利用Django框架做一个小项目,但是一直是通过命令行来实现项目的运行的,显然这样不符合生产环境使用要求。那么下面这一阶段我们就来简单的了解一下如何部署Django项目
网上的方法用的最多的就是用uwsgi和nginx来实现项目的部署,这里也用这个方式实现。
为了模拟真实的使用环境,我打算把项目部署在腾讯的云服务器上。
系统和python的版本
python为3.6.8,是现装的,由于这个版本的Python用的比较多,就直接指定用这个版本的安装了
[root@VM-0-13-centos myfiles]# yum install python36
系统发行版为centos7.5
安装django
django和前面使用的版本一样,在安装完python3以后可以直接通过pip3安装
[root@VM-0-13-centos myfiles]# pip3 install django==2.0.13
创建新的项目
安装好django以后可以创建一个新的项目来备后面测试使用,注意项目的路径,我是在家目录下建立了一个code的文件夹,用来放代码
直接在目录下创建一个新的项目
[root@VM-0-13-centos code]# django-admin startproject blog
要通过ip访问这个项目,要先对配置文件settings.py文件进行修改,先用*来允许所有的IP地址访问(修改ALLOW_HOSTS列表)
ALLOWED_HOSTS = ['*']
然后运行程序,指定端口8000
[root@VM-0-13-centos blog]# python3 manage.py runserver 0.0.0.0:8000
这里要注意,运行前应该检查看看8000端口是否已经开启,如果没问题的话,在本机可以访问一下ip+端口号
红色字表示我们还未对数据库进行迁移,但并不影响程序的运行,
这样就准备好了Django的项目
uwsgi的用途我们后面再说,这里先把他准备好
安装
uwsgi可以通过pip直接安装
[root@VM-0-13-centos blog]# pip3 install uwsgi
但是很多时候下载完成后在安装时会报错
提示信息是没有<Python.h>文件,这是因为我们我们没有安装python开发包,通过yum安装一下
[root@VM-0-13-centos blog]# yum install python36-devel
这里一定要注意,开发包的版本要和python的版本一致
重新安装uwsgi就好了
uwsgi的测试
下面新建一个Python文件来测试uwsgi
##file name:uwsgi_test.py def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"]
就是一个简单的函数,用来发送一个字符串给前端页面
然后运行下面的代码
[root@VM-0-13-centos code]# uwsgi --http :9090 --wsgi-file uwsgi_test.py
同样在运行前应该检查端口的开启状态,这里我们指定的是9090端口,然后在本地访问这个地址
前端显示了我们通过函数发送到字符串Hello World,说明uwsgi的状态也是OK的。
nginx的准备稍微麻烦一些,我一步步来
安装nginx
nginx的安装有直接通过yum安装,也可以下载源代码直接自己安装,我在Ubuntu上也按装过,觉得方法都差不多,yum安装时会解决所有的依赖问题,但是装的路径比较分散,这里建议使用源文件安装
下载文件,这里直接下载1.16.1版本并解压
[root@VM-0-13-centos myfiles]# wget http://nginx.org/download/nginx-1.16.1.tar.gz [root@VM-0-13-centos myfiles]# tar -xzvf nginx-1.16.1.tar.gz
我们把nginx安装在/opt/nginx路径下,安装的时候指定了两个附加的功能,后期再说
[root@VM-0-13-centos nginx-1.16.1]# ./configure --prefix=/opt/nginx --with-http_ssl_module --with-http_stub_status_module
安装过程中首先报错,提示需要PCRE libiary
yum安装,注意安装的还是开发包
[root@VM-0-13-centos nginx-1.16.1]# yum install pcre-devel
继续执行配置文件,又出现错误
没有OpenSSL,继续yum安装
[root@VM-0-13-centos nginx-1.16.1]# yum install openssl-devel
配置完成以后,可以通过makefile进行安装
[root@VM-0-13-centos nginx-1.16.1]# make && make install
跳转到我们指定的安装路径下,运行nginx,也可以用绝对路径运行
[root@VM-0-13-centos /]# /opt/nginx/sbin/nginx
可以看一下nginx默认的配置文件,监听的端口是80,用浏览器访问一下,就能打开nginx的默认引导页面
说明nginx也已经正常安装。