写Django项目一段时间了,但是因为没有怎么操作过linux,所以自己没有尝试过上线,现在是时候Get 部署技能了!
首先介绍一下技术栈:
Centos7、python3、Django、uwsgi、Nginx、FileZilla
具体如何在安装Centos7,python3、FileZilla这里就不介绍了,跟着网上的教程,基本不会出错。
接下来就是部署uWSGI服务器:
uWSGI是一个Web服务器,它实现WSGI、uWSGI和HTTP等网络协议,而且Nginx的HttpUwsgiModule能与uWSGI服务器进行交互。WSGI是一种Web服务器网关接口,它是web服务器(如Nginx服务器)与Web应用(如Django框架实现的应用)通信的一种规范。
在部署uWSGI服务器之前,需要在Python3中安装相应的模块,直接用pip3安装就可以了:
这里需要注意一下,由于Centos7系统默认安装了python2,所以如果直接通过uwsgi指令启动的话,则会调用python2的uwsgi,从而导致报错,所以这里先要为python3对应的uwsgi创建软连接,具体操作如下。
1. 首先查看uwsgi的安装路径:
2.创建软链接:
此时再执行uwsgi就是启动的python3所安装的uwsgi
下面是对上图指令所使用的参数的解释:
--http 是使用uWSGI自带的http协议(这种情况下不需要nginx可以直接访问)。当和nginx一起使用时,指定socket或http-socket即可。
--chdir 是指Django项目所在的目录,要使用绝对路径。
--wsgi-file project/wsgi.py 指的是WSGI规范文件所在的位置,这个文件在创建项目时自动生成。project表示项目名称,在我的实例中为cloudms。
指令运行后,可以在本地的浏览器中输入虚拟系统的IP地址+8080端口查看测试结果,在浏览器上访问虚拟机ip(如http://192.168.88.120:8080/),我们可以看到cloudms的首页信息。至于怎么看自己虚拟机的ip,ifconfig就可以啦。
特别提醒:如果此时你访问浏览器,弹出:
不要慌,在自己的项目文件中的setting里将ALLOWED_HOSTS = [ ] 改成 ALLOWED_HOSTS = ["*"]即可。然后重新上传到Centos7。
uWSGI测试成功之后,下一步就是为项目cloudms编写配置文件。当项目运行上线时,只需执行uWSGI配置文件即可运行项目cloudms的uWSGI服务器。在项目cloudms的根目录下创建cloudms_uwsgi.ini配置文件,文件代码如下:
然后输入uwsgi(uwsgi --ini cloudms_uwsgi.ini)指令,通过配置文件启动uWSGI服务器,如下图所示:
注意:由于配置属性socket = :8080与只能用于UWSGI服务器与Nginx服务器之间的通信,所以不能通过访问浏览器检测是否成功。
最后安装Nginx部署项目
不多说看图,不会出错。
下一步就是设置Nginx的配置文件,经Nginx服务器与uWSGI服务器实现通信连接。将虚拟系统Centos的路径切换到/etc/nginx/conf.d,在当前路径中创建并编辑cloudms.conf配置文件,代码如下:
注意:部分地方改成自己项目的路径,灵活一点哈!
好啦!部署上线完成啦!快去浏览器访问虚拟机ip(如http://192.168.88.120:8090/)看看(这里8090是由Nginx的配置文件cloudms.conf设置的)