如何一步步在生产环境上部署django和vue

 本文由云+社区发表

本文主要讲述了如何一步步在生产环境上部署django和vue,操作系统默认为centos

说明:后文中出现的以下字符串均表示具体的路径或者名称,含义如下:

  • DJANGO_DIR----表示django的工程根目录
  • DJANGO_NAME----表示django的工程名称
  • VUE_HTML_DIR----表示vue编译好的index.html路径
  • VUE_STATIC_DIR----表示vue编译好的静态文件夹static的路径

整体框架

一个常用的web框架图如下图所示

img框架选用.jpg

我们使用nginx + uwsgi来驱动django,因为uwsgi性能非常高

img720333-20170312154455592-1425120615.png

一、安装和配置nginx

安装

使用yum安装即可

yum -y install nginx

启动

service nginx start

此时到浏览器输入对应的ip地址,出现下面页面即表示安装成功

img1324702136-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指定的端口。

大概解释下几个配置的含义:

  1. chdir----应用加载前chdir到指定目录,一般设置为django的工程根目录
  2. touch-reload----如果修改/碰了指定的文件,那么重载uWSGI
  3. module----加载一个WSGI模块的路径,如果django的话就指向对应的wsgi文件模块
  4. buffer-size----设置请求的最大大小 (排除request-body),这一般映射到请求头的大小。默认情况下,它是4k。如果你接收到了一个更大的请求 (例如,带有大cookies或者查询字符串),那么你也许需要增加它。它也是一个安全度量,所以调整为你的应用需要,而不是最大输出。该值如果太小会报错

具体参数含义可以到官方文档查找

然后使

50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信