Ubuntu16.04+python3+django1.11+uWSGI+nginx部署django项目
相信很多的小伙伴都和我遇到过同样的问题,我们学习django后写好项目后把代码放到服务器上肯定不能使用django自带的服务器给用户来使用我们的网站呀,因为django自带的服务器性能有限所以我们在真正部署的时候是不用它的,那怎么办呢?不用担心我教大家使用nginx服务器来解决这个问题。
nginx
nginx是什么东西,就是和Apache,Tomcat类似的一款服务器软件,如果你真的不知道这是什么鬼东西那就真的没得必要往下面看了,建议先去弄弄清楚这个软件是什么东西,再回过来看就行了。上百度,谷歌搜一搜就好了,其实很简单的。
uWSGI
其实着也是一个服务器软件啦,下面我提供了一个大佬写的文章快去学习学习了。
https://blog.csdn.net/mnszmlcd/article/details/78819237
搭建的原理示意图
![](https://img.haomeiwen.com/i13859457/387a242cd870c92e.png)
我们的目的肯定是是打通浏览器访问我们django代码的通道,首先着条通道上我们要修建两座桥梁,首先是nginx,这是提供给我们浏览器访问的入口,通过nginx转发80端口进来的数据包到本地环回地址(127.0.0.1)的8010端口上(其他端口也是阔以的,这里只是拿8010举例子),然后我们通过uWSGI开启本地的8010供本地访问,这里不理解我可以举个例子,在这里相当于我们运行了
$ python manage.py runserver 127.0.0.1:8010
nginx则起到了一个转发端口的功能,说完了原理,接下来就正式开始我们的安装过程了
配置
安装nginx
首先进入/etc/apt目录下
$ cd /etc/apt
![](https://img.haomeiwen.com/i13859457/3fc12025182d1498.png)
下载公钥
(如果提示找不到命令wget,那就使用命令下载这个http工具:$ sudo apt-get install wget)
![](https://img.haomeiwen.com/i13859457/e97e092f8ea0132e.png)
加载公钥
$ sudo apt-key add nginx_signing.key
![](https://img.haomeiwen.com/i13859457/7754eb1d72e5c1d4.png)
然后把下载源添加在apt下载源的后面 如果你不会使用vim编辑器,也可以使用nano这个比较简单一些
$ sudo vim /etc/apt/sources.list
![](https://img.haomeiwen.com/i13859457/07bf0ebda4b0fbf4.png)
因为我使用的ubuntu系统是16.04版本的对应的发行版名称是xenial
- Version codename Supported Platforms
- 14.04 trusty x86_64, i386, aarch64/arm64
- 16.04 xenial x86_64, i386, ppc64el, aarch64/arm64
- 17.10 artful x86_64, i386
- 18.04 bionic x86_64
对应自己系统的版本选择对应的系统名
配置好源以后就开始下载安装了安装
$ apt-get update
$ apt-get install nginx
安装完成后我们就启动它
$ nginx
执行命令后没有任何回显 使用ps命令可以查看进程是否启动
$ ps aux | grep nginx
![](https://img.haomeiwen.com/i13859457/93fd53ff4b834e35.png)
nginx启动后然后在浏览器中输入你服务器的ip地址,回车,只要不出下如下这样无法链接到服务器,说明你nginx是安装成功的
![](https://img.haomeiwen.com/i13859457/f2d07516ae0772b5.png)
安装 uWSGI
uWSGI是python的一个第三方包,首先我们选择用python的虚拟环境来运行我们的项目
但是ubuntu16.04默认的是python3.5,首先我们需要更换为python3.6
加装含有python3.6.4的PPA
$ sudo add-apt-repository ppa:deadsnakes/ppa
![](https://img.haomeiwen.com/i13859457/c47f41957598a51d.png)
如果和我一样报错就可以运行如下命令,没有报错就可以不管了
$ sudo apt install software-properties-common
重新运行如下命令,如果你是root用户则不用加上sudo,否则会出错
$ add-apt-repository ppa:deadsnakes/ppa
![](https://img.haomeiwen.com/i13859457/f08b8c2d8f29251b.png)
$ sudo apt-get update
$ sudo apt-get install python3
到了这里,因为源的问题,可能有点慢,,,,
![](https://img.haomeiwen.com/i13859457/6fad74b9a366322a.png)
查看新安装的python版本
$ python3.6 -V
![](https://img.haomeiwen.com/i13859457/1aaf5cfc36087597.png)
我们使用python3命令会默认的访问python3.5的版本,接下来我们替换掉原先的软连接
列出系统当前存在的python版本及python默认的版本
$ ls -l /usr/bin | grep python
![](https://img.haomeiwen.com/i13859457/cd8043064b2375c0.png)
我们就是要替换掉途中的这个软连接
$ sudo rm /usr/bin/python3
$ sudo ln -s /usr/bin/python3.6 /usr/bin/python3
重新查看文件,发现多了图中的软连接,就说明成功了
![](https://img.haomeiwen.com/i13859457/87d60d047d8c929c.png)
然后我们再运行python3 就默认进入3.6
$ python3
![](https://img.haomeiwen.com/i13859457/341150ceab2bda76.png)
接着安装python虚拟环境
首先安装python3的pip下载工具
$ sudo apt-get install python3-pip
$ python3 -m pip -V
![](https://img.haomeiwen.com/i13859457/50992c80311012d8.png)
$ python3 -m pip install virtualenv
如果你在运行这天命令的时候出现了如下报错,
![](https://img.haomeiwen.com/i13859457/935852c4dc97cc33.png)
则在~/.bashrc 文件末尾加上
export PIP_REQUIRE_VIRTUALENV=false
$ source ~/.bashrc
$ python3 -m pip install virtualenvwrapper
![](https://img.haomeiwen.com/i13859457/70974cbdefd47fe4.png)
这样便安装成功
并把:
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
添加在~/.bashrc文件末尾
然后重新读取配置文件使得配置生效
![](https://img.haomeiwen.com/i13859457/430a39334245a3ee.png)
$ source ~/.bashrc
![](https://img.haomeiwen.com/i13859457/979bc65f52dcaf8e.png)
新建
$ mkvirtualenv py3.6
![](https://img.haomeiwen.com/i13859457/5ca3b83cf2cfe56a.png)
进入虚拟环境py3.5 前面出下(py3.6)表示已经进入虚拟环境 并安装django,uwsgi
$ workon py3.6
![](https://img.haomeiwen.com/i13859457/4e59a601d3d3d062.png)
$ pip install django==1.11
$ pip install uwsgi
如果安装uwsgi出现了如下错误
![](https://img.haomeiwen.com/i13859457/11be920120f3a8a6.png)
则安装依赖如下
$ sudo apt-get install libpython3.6-dev
然后重新安装uwsgi
$ pip install uwsgi
![](https://img.haomeiwen.com/i13859457/1026d215966d2fc1.png)
知道这里我们就把需要的东西的下载安装好了
django hello world
接下来我们使用django写一个简单的helloworld
![](https://img.haomeiwen.com/i13859457/cd2119ee0e332b47.png)
上传项目到服务器中, 如果不知道怎么上传可以试试pycharm的这个功能
![](https://img.haomeiwen.com/i13859457/b9b5bd46e18a8fd2.png)
并上传到/var/www目录中
![](https://img.haomeiwen.com/i13859457/fb59965e9d0a9f47.png)
配置nginx,uWSGI
配置文件 django.conf 并放到目录 /etc/nginx/conf.d/ 中
![](https://img.haomeiwen.com/i13859457/192928389d581a1a.png)
![](https://img.haomeiwen.com/i13859457/da33f673ee590455.png)
然后配置文件 uwsgi.ini 并放到/var/www/hello中
![](https://img.haomeiwen.com/i13859457/bd76e20fa308f4ff.png)
![](https://img.haomeiwen.com/i13859457/7a6530c324bcb2d1.png)
然后运行uwsgi
$ uwsgi --ini /var/www/hello/uwsgi.ini
$ nginx -s stop
$ nginx
然后便配置成功,可以访问了
![](https://img.haomeiwen.com/i13859457/e95bb253bf80df71.png)
uwsgi的操作命令
你在以后修改了django文件保存后应该重启uwsgi
$ uwsgi --reload uwsgi.pid
如果要停掉uwsgi用如下命令:
$ uwsgi --stop uwsgi.pid
uwsgi.pid
文件是你在运行uwsgi --ini /var/www/hello/uwsgi.ini
后在uwsgi.ini
同级目录下生成的文件。
使用cat
命令可以查看uwsgi.pid 文件的内容,在其实保存的就是运行的uwsgi主程序的pid
网友评论