django+vue+nginx生产环境部署配置

部署环境:

1. linux redhat 7.1

2.python 3.6.3

3. vue

4. nginx

5. gunicorn

6. supervisord

安装:

一. 基础环境安装

1. python3.6.3安装

下载python3.6.3安装包,下载地址:https://www.python.org/downloads/release/python-363/

解压,编译安装,不多加赘述,安装成功后setuptools也会安装,pip3自行安装

2. django 环境部署

  如果是gitlab服务器,git clone项目地址到部署服务器,如果不是打包上传源项目包,解压安装依赖环境,如果服务器有连解外网pip3 install -r 依赖文件

  如果服务无外网那么在官网查找下载各个依赖包,通过setuptools安装,不赘述

3. VUE安装

  安装npm, vue,不赘述,具体安装不会查找教程

二. 其他托管服务,Nginx, gunicorn安装配置

1. gunicorn安装配置

  pip3 install gunicorn

  服务器无连接外网请在https://pypi.org/search/?q=gunicorn 源码包下载安装

   配置启动Runit --gunicorn_start.sh 

#!/bin/bash

NAME="projectName"                                   # Name of the application
DJANGODIR=/opt/projectName             # Django project directory
SOCKFILE=/tmp/projectName.sock   # we will communicate using this unix socket
PIDFILE=/opt/projectName/projectName.pidfile
NUM_WORKERS=4                                  # How many worker processes should Gunicorn spawn
DJANGO_SETTINGS_MODULE= projectName.settings.base          # Which settings file should Django use
DJANGO_WSGI_MODULE=projectName.wsgi                  # WSGI module name

echo "Starting $NAME as `whoami`"

# Activate the virtual environment
cd $DJANGODIR

# Start your Django Unicorn
echo "Exec $NAME as `whoami`"
exec gunicorn ${DJANGO_WSGI_MODULE}:application \
  --name $NAME \
  --workers $NUM_WORKERS \
  --bind=unix:$SOCKFILE
  --pid=$PIDFILE
  --log-level=debug \
  --log-file=/opt/projectName/gunicorn.log \
  --access-logfile=/opt/projectName/access.log \
  --worker-class=gevent \
  --max-requests 500
  "$@"

 增加X权限, sudo chmod +x gunicorn_start.sh 

试运行

2. supervisord服务安装配置,将gunicorn托管

下载supervisord,安装,安装成功后,echo_supervisord_conf > /etc/supervisord.conf 生成配置文件

配置文件更改:

# dbmanager.conf
[program:dbmanager]
command = /opt/projectName/gunicorn-start.sh                    ; Start app
stdout_logfile = /var/log/supervisor/gunicorn-supervisor.log  ; Where to write log messages
redirect_stderr = true
autostart = true
autorestart = true
stderr_logfile = /var/log/supervisor/gunicorn-supervisor.err.log

;停止信号
stopsignal=INT

3. nginx安装配置

下载nginx ,pcre:

curl -C - -O http://mirrors.sohu.com/nginx/nginx-1.13.7.tar.gz
curl -C - -O https://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz

安装pcre

tar xf pcre-8.41.tar.gz -C /usr/local/src/
# 编译
./configure --prefix=/opt/pcre make && make install

安装nginx

tar xf nginx-1.13.7.tar.gz -C /usr/local/src/
# 编译
./configure --prefix=/opt/nginx --with-pcre --with-http_ssl_module --user=nginx --group=nginx --with-threads --with-stream --with-stream_ssl_module --with-http_v2_module --with-http_gunzip_module

make && make install 

修改配置文件

vi /opt/nginx/conf/nginx.conf

worker_processes  4;
error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;

pid        logs/nginx.pid;

events {
    accept_mutex on;
    multi_accept on;
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
        access_log /var/log/nginx/access.log combined;

        upstream app_server {
    # for UNIX domain socket setups
    server unix:/tmp/gunicorn.sock fail_timeout=0;
  }
  
    server {
        charset utf-8;
        listen       9000;
        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.0;
        gzip_comp_level 2;
        gzip_types  text/plain application/x-javascript text/css application/xml;
        gzip_vary on;
        client_max_body_size 300m;
        server_name  localhost;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        # 后端接口转发
    # /apiv1 对应后台接口URL
        location /apiv1 {
                proxy_pass http://unix:/tmp/projectName.sock;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_read_timeout 300;
                proxy_connect_timeout 300;
                proxy_redirect off;
        }

        #  前端vue转发
        location / {
                try_files $uri $uri/ @router;
                index index.html;
        }
        root /opt/projectName/front/dist; #vue打包的文件目录
        #index login.html;
        location @router {
                rewrite ^.*$ /index.html last;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
             root   html;
         }
    }
}

测试配置文件:

/opt/nginx/sbin/nginx -t

无问题,启动服务: /opt/nginx/sbin/nginx

启动supervisord : sudo supervisord -c /etc/supervisord.conf

放通nginx端口:

/sbin/iptables -I INPUT -p tcp --dport 9000 -j ACCEPT

访问

django+vue+nginx生产环境部署配置

上一篇:python – 用gunicorn流式传输


下一篇:在CentOs上部署Gunicorn