部署环境:

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= # 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
"$@"

 增加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..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生产环境部署配置的更多相关文章

  1. 学习项目部署Django+uwsgi+Nginx生产环境部署

    绪论 项目生产环境部署,是很重的一个知识点.第一,Django自带的服务器很简陋,由于测试和开发环境尚可,无法用于生产环境,保障安全性和可靠性.以及性能.此外,学习部署方式,还有利于了解生产部署后的项 ...

  2. Django + Uwsgi +Nginx生产环境部署

    python manage.py runserver 0.0.0.0:80 ,一定不要用这个轻量级Server作为你的生产环境下的Server,因为它只能用于开发自测阶段.它既没有安全审计功能,而且又 ...

  3. django项目的生产环境部署,利用nginx+uwsgi

    1.坏境准备 centos6.5 django项目 python坏境(python3.6,) 所需的各种模块(django,uwsgi,sqlite3)具体看坏境 我的测试django项目的数据库用的 ...

  4. ubuntu 常用生产环境部署配置测试调优

    1,ubuntu monogdb 安装配置 2,ubuntu jdk1.7,tomcat7安装 3,ubuntu LAMP部署 4,mongodb 远程热备份及恢复 使用自带的mongodump和mo ...

  5. 第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置

    第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置 软件版本  uwsgi- ...

  6. Django + Uwsgi + Nginx 的生产环境部署

    使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等,本篇文章总结归 ...

  7. ubuntu Django + Uwsgi + Nginx 的生产环境部署

    一.概述 使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等,本篇 ...

  8. 10: Django + Uwsgi + Nginx 的生产环境部署

    1.1 一些重要概念 1.Web协议介绍 Web协议出现顺序: CGI -> FCGI -> WSGI -> uwsgi 1. CGI:  最早的协议 2. FCGI:  比CGI快 ...

  9. Django + Uwsgi + Nginx 的生产环境部署实战

    目录 Django + Uwsgi + Nginx 的生产环境部署实战 安装Uwsgi 一.使用命令来启动django项目 二.使用配置文件来启动我们的Django项目 安装Nginx 配置Nginx ...

随机推荐

  1. 【Linux】linux 机器之间 zssh, rz, sz互相传输

    服务器端安装lrzsz: sudo  yum install lrzsz 本地客户端安装lrzsz: brew install lrzsz 本地客户端安装zssh: brew install zssh ...

  2. tp3.2框架中使用volist输出混乱的一点发现

    在tp框架中,volist真的是一样很好用的东西,但是要是不注意,用起来也会有问题的 在Controller层中,将数据assign到页面 $this->assign('vo',$news); ...

  3. SourceTree 跳过登录注册,直接使用

    SourceTree下载安装后,运行程序会要求你登录或注册账号才能使用, 然而登录或注册基本都收不到服务器的响应 (在国外嘛,安全起见),于是卡在此处无法使用了. 下面就来介绍一下跳过这尴尬环节的方法 ...

  4. Python知识点进阶——细节问题

    int()强制转换浮点数 在int()的强制转换浮点数时候,不管是正数还是负数,只取整数部分. 注意:这里不是向上或者向下取整,也不是四舍五入. 无限递归 递归是为了将问题简化为更小规模的同类型问题, ...

  5. Redis之List类型操作

    接口: package com.net.test.redis.base.dao; import java.util.List; /** * @author *** * @Time:2017年8月10日 ...

  6. 动态规划:HDU1712-ACboy needs your help(分组背包问题)

    ACboy needs your help Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Othe ...

  7. opencv使用日记之一:平台搭建Mat类以及图像的读取修改

    平台搭建就摸了一整天时间,真的是...不说了,最后我选择的是 opencv3.0(2015/06/04)  + win7 + vs2012   注意opencv的版本不同导入的库文件是不一样的,所以请 ...

  8. 友推在Android 实现微信等分享代码的常见问题

    介绍,最近 做了一个项目,需要集成分享功能.果断选择 友推. 集成过程,参考友推官方提供的集成文档即可 废话不多说,主要说一下自己在集成过程中遇到的一些问题,主要有两个: 问题1. 引入youtui- ...

  9. MongoDB快速入门学习笔记3 MongoDB的文档插入操作

    1.文档的数据存储格式为BSON,类似于JSON.MongoDB插入数据时会检验数据中是否有“_id”,如果没有会自动生成.shell操作有insert和save两种方法.当插入一条数据有“_id”值 ...

  10. uReplicator实现分析

    MirrorMakerWorker分析 是整个同步机制的主入口,主要组织的逻辑有: 配置数据的传入与处理,ConsumerConfig对象的构建 度量对象的准备,定时上报的度量数据收集线程的定义与启动 ...