Django+Vue+Nginx+uWSGI
部署
准备工作
1 | ip:123.56.252.111 |
虚拟环境
在服务器配置有详细介绍
Django
在服务器配置有详细介绍
uWSGI
安装uWSGI
1 | pip install uwsgi |
简单测试一下
创建test.py
1 | # test.py |
运行 uWSGI
:
1 | uwsgi --http :8000 --wsgi-file test.py |
选项的含义:
http :8000
使用http
协议,8000端口。wsgi-file test.py
使用test.py
作为与uWSGI
交互的文件。
访问 123.56.252.111:8000
,输出“Hello World”,说明该程序是这么工作的:
1 | graph LR; |
测试Django
测试django
在创建的django
目录,执行
1 | python manage.py runserver 0.0.0.0:8000 |
先将IP
设置下ALLOWHOSTS
中
在服务器配置有详细介绍
在浏览器输入123.56.255.111:8000
即出现django
欢迎界面
测试uWSGI
1 | uwsgi --http :8000 --module mysite.wsgi |
在浏览器输入123.56.255.111:8000
出现Internal Server Error
属于正常现象,因为没有资源
1 | graph LR; |
Nginx
安装nginx
在服务器配置有详细介绍
启动nginx
1 | #centos 7 |
在浏览器输入123.56.255.111:80
出现CenOS
或Nginx
的欢迎界面
配置nginx
开启这三个端口:
80端口
显示Nginx
欢迎界面,测试Nginx
是否能正常运行8000端口
Nginx
接收请求的端口,自行处理静态请求,动态请求则转发给uWSGI
的8001端口处理8001端口
uWSGI
接收动态请求的端口,处理完毕后将处理结果发给Nginx
的8000端口
检查一下是否有uwsgi_params
文件(后面的配置文件需要用到),它应该在nginx
的目录里(/etc/nginx/
),如果没有,可以点击这里下载。
创建/etc/nginx/sites-available
的目录,在目录里创建support_center_nginx.conf
配置文件进行配置:
1 | # support_center_nginx.conf |
创建一个软链接(/etc/nginx/sites-enabled
)指向它:
1 | ln -s /etc/nginx/sites-available /etc/nginx/sites-enabled |
在/etc/nginx/nginx.conf
中将该文件夹包含进去,使得Nginx
启动时,能够将文件夹中配置的项目运行起来:include /etc/nginx/sites-enabled/*.conf
注意,这个语句添加在http
中,server
外
1 | http { |
处理静态文件
运行Nginx
之前,得先把Django
的静态文件集中到一个文件夹中(该文件夹就是STATIC_ROOT
的值):
先向settings.py
中添加:
1 | STATIC_ROOT = '/root/mysite/static' |
然后,将静态资源集中:
1 | python manage.py collectstatic |
nginx
测试
1 | systemctl restart nginx |
向media
文件夹中放一张图media.jpg
用于测试,
media
的位置在上面support_center_nginx.conf
中的location /media
的指定位置
在浏览器输入123.56.255.111:8000/media/picture.png
出现一张图片
1 | graph LR; |
使用.ini
对uWSGI
进行设置
创建uwsgi.ini
1 | [uwsgi] |
然后,启动 uWSGI
1 | uwsgi --ini uwsgi.ini |
转发80端口
将/etc/nginx/sites-available/support_center_nginx.conf
重命名/etc/nginx/sites-available/nginx_backend.conf
1 | cd /etc/nginx/sites-available/ |
新建一个文件/etc/nginx/sites-available/nginx_fonter.conf
1 | vim nginx_fonter.conf |
在文件中加入
1 | server { |
修改/etc/nginx/nginx.conf
1 | http { |
简单说下这样做的目的:
客户的所有请求都是通80
端口,与默认端口通信是不需要加:80
的,nginx
从80
端口接收到浏览器的请求,转发到8888
端口,8888
接收到在/etc/nginx/sites-available/fonter.conf
文件处理
后端界面客户不会主动访问所以不用转发来隐藏端口,
/etc/nginx/sites-available/fonter.conf
和 /etc/nginx/sites-available/nginx_backend.conf
,都在 /etc/nginx/sites-available
中,通过软连接/etc/nginx/sites-enabled
在/etc/nginx/nginx.conf
中的include /etc/nginx/sites-enabled/*.conf;
导入nginx.conf
文件,与主配置文件分离