本文由云+社区发表
本文主要讲述了如何一步步在生产环境上部署django和vue,操作系统默认为centos
说明:后文中出现的以下字符串均表示具体的路径或者名称,含义如下:
- DJANGO_DIR----表示django的工程根目录
- DJANGO_NAME----表示django的工程名称
- VUE_HTML_DIR----表示vue编译好的index.html路径
- VUE_STATIC_DIR----表示vue编译好的静态文件夹static的路径
整体框架
一个常用的web框架图如下图所示
框架选用.jpg
我们使用nginx + uwsgi来驱动django,因为uwsgi性能非常高
720333-20170312154455592-1425120615.png
一、安装和配置nginx
安装
使用yum安装即可
yum -y install nginx启动
service nginx start此时到浏览器输入对应的ip地址,出现下面页面即表示安装成功
1324702136-57fb16aa00d21_articlex.png
修改配置文件
nginx可以新建一个配置,放在项目目录,暂时不修改nginx的默认配置,端口号可以换一个,然后在/etc/nginx/conf.d/内新建一个软链接指向该配置文件,这样nginx在读取配置时会将该配置一起读进去。这样,访问端口号8080的请求便会指向我们自己的这个配置。
server { listen 8080; server_name 132.232.50.225; root /data/; charset utf-8; access_log /data/access_narwhals.log; error_log /data/error_narwhals.log; client_max_body_size 75M; location / { uwsgi_pass 127.0.0.1:9090; include /etc/nginx/uwsgi_params; } location ^~ /admin/ { uwsgi_pass 127.0.0.1:9090; include /etc/nginx/uwsgi_params; } }该配置中uwsgi_pass要指向uwsgi绑定的接口。(我们先假设uwsgi配置的是9090端口)
二、安装和配置uwsgi
安装
使用yum或者pip均可安装
yum install uwsgi # 或者 pip install uwsgi不过这里需要注意,如果运行uwsgi出现下面错误
uwsgi: option '--http' is ambiguous; possibilities: '--http-socket' '--https-socket-modifier2' '--https-socket-modifier1' '--https-socket' '--http11-socket' '--http-socket-modifier2' '--http-socket-modifier1' getopt_long() error主要是用yum安装的uwsgi,缺少python的plugin,可以安装对应的插件
yum install uwsgi-plugin-python plugins = python (加在ini配置文件中)配置
uwsgi可以使用命令行启动,也可以使用配置文件来启动,推荐使用配置文件来启动守护进程,配置文件内容如下
[uwsgi] socket = 127.0.0.1:9090 stats = 127.0.0.1:9293 workers = 4 # 项目根目录 chdir = DJANGO_DIR touch-reload = DJANGO_DIR py-auto-reload = 1 # 在项目跟目录和项目同名的文件夹里面的一个文件 module= DJANGO_NAME.wsgi pidfile = /var/run/inner_manager.pid daemonize = /data/uwsgi9090.log # If you plan to receive big requests with lots of headers you can increase this value up to 64k (65535). buffer-size=65535这里以socket形式运行uwsgi,绑定了本地的9090端口,也就是上文nginx配置中uwsgi_pass指定的端口。
大概解释下几个配置的含义:
- chdir----应用加载前chdir到指定目录,一般设置为django的工程根目录
- touch-reload----如果修改/碰了指定的文件,那么重载uWSGI
- module----加载一个WSGI模块的路径,如果django的话就指向对应的wsgi文件模块
- buffer-size----设置请求的最大大小 (排除request-body),这一般映射到请求头的大小。默认情况下,它是4k。如果你接收到了一个更大的请求 (例如,带有大cookies或者查询字符串),那么你也许需要增加它。它也是一个安全度量,所以调整为你的应用需要,而不是最大输出。该值如果太小会报错
具体参数含义可以到官方文档查找
然后使
