概述

本文主要讲解在安装了centos7的Linux主机中部署前后端分离项目的过程。

前端项目名为:vue_project;后端项目名为:django_project。

将这两个项目放在/opt/whw2这个目录下。

nodejs对vue项目的配置

下载解压node的压缩包

cd /opt

wget https://nodejs.org/download/release/v8.6.0/node-v8.6.0-linux-x64.tar.gz

tar -zxvf node-v8.6.0-linux-x64.tar.gz 

将node的bin目录添加进环境变量

在默认情况下,node的bin目录是:/opt/node-v8.6.0-linux-x64/bin

我们可以把node的根目录修改下名字,看起来好看点:

mv  node-v8.6.0-linux-x64/  nodejs

然后把目录 /opt/nodejs/bin 目录加入到环境变量:

vim /etc/profile

在最后一行的PATH变量(之前添加的,如果没添加过需要先执行$PATH看一下当前的环境变量的值)加入上面的目录(注意用冒号隔开):

PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/opt/tngx231/sbin:/opt/nodejs/bin'

最后一定要记得source一下文件使配置生效:

source /etc/profile

执行下面两个命令,如果不报错说明node的环境变量添加成功了:

node -v
npm -v

效果如下:

修改vue的请求发送路径

vue需要像服务器发起请求,但是前端工程师在测试时会将这个ip设置为本机的环回地址,我们需要将这个ip设置为linux服务器的ip,端口是nginx对uwsgi反向代理的端口

# 进入项目的src/restful目录,里面有一个api.js文件
# 文件里面的ip与端口是测试用的,需要修改成nginx对uwsgi反向代理的端口
cd /opt/whw2/vue_project/src/restful
# 将测试的ip与端口改成生产环境需要用的ip与端口
sed -i "s/127.0.0.1:8000/192.168.16.142:9000/g" api.js

编译vue代码

首先需要进入vue项目的根目录

cd /opt/whw2/vue_project

执行下面的命令:

# 默认是国外的资源,这样可以指定taobao的源安装
npm config set registry https://registry.npm.taobao.org
#找到package.json然后安装模块,如同pip install
npm install
#这一步会生成dist静态文件夹,vue开发的首页在这个index.html
npm run build

执行到最后一步的时候会在vue_project中生成一个dist目录,里面是项目开发的首页。

上面的2、3步其实可以在别的机器上执行也是可以的,目的其实是得到dist这个目录(注意ip与端口一定得是最终部署的linux服务器的ip与端口)

另外需要记住这个dist的目录,后面配置nginx的时候会用到:/opt/whw2/vue_project/dist

nginx的配置

nginx.conf文件中的配置如下:

#需要找到第一个虚拟主机,配置dist的静态文件夹即可
#第一个虚拟主机的配置
server {
listen 80;
server_name localhost; location / {
root /opt/whw2/vue_project/dist;
index index.html index.htm;
# 确保不出现404
try_files $uri $uri/ /index.html;
}
## 其他配置略 xxxxx
} #第二个虚拟主机的配置,用作反向代理——将请求转发给后台程序
server {
# 9000是nginx用作反向代理的端口
listen 9000;
server_name localhost;
location / {
include uwsgi_params;
# 9999是对应uwsgi的端口,uwsgi也要配置成9999端口
uwsgi_pass 127.0.0.1:9999;
}
}

温馨提示:

如果之前存在别的项目的nginx.conf文件,一定要记得备份一下!

cp nginx.conf nginx.conf.crm_bak

后端、uwsgi与虚拟环境的配置

后端django程序的配置只需要改一下settings.py中的ALLOWED_HOSTS这个列表即可~

测试的话直接 "*" 就好了:

ALLOWED_HOSTS = ["*"]

uwsgi文件的配置

在项目的第一层创建一个uwsgi.ini文件,然后在里面写入:

[uwsgi]
# Django-related settings
# 项目第一层目录的绝对路径
chdir = /opt/whw2/django_project# 自动找项目第二层路径下的uwsgi.py文件
module = django_project.wsgi
# 虚拟环境的绝对路径
home = /root/Envs/whw_l
# process-related settings
# master
master= true
# maximum number of worker processes
processes = 4
# 注意 这个9999端口一定要跟nginx反向代理配置的端口保持一致
socket = 0.0.0.0:9999

# clear environment on exit
vacuum = true
# 记录pid与日志的文件
pidfile=uwsgi.pid
daemonize=uwsgi.log

虚拟环境的配置

先激活一个虚拟环境

mkvirtualenv  whw_l

解决运行后台项目所需要的依赖环境,这里我用的是requirements.txt文件安装的:

pip3 install -r requirements.txt -i https://pypi.douban.com/simple

开启redis服务

由于本项目用到了redis数据库,因此还得在服务端启动redis服务。

# 如果之前没有安装的话,需要先安装一下
yum install redis -y
# 启动redis服务
systemctl start redis

启动uwsgi与nginx

启动uwsgi服务

后台启动uwsgi服务加一个 -d 参数就好了:

注意:前面是虚拟环境下的uwsgi的绝对路径!

/root/Envs/whw_l/bin/uwsgi -d --ini /opt/whw2/diango_project/uwsgi.ini 

启动nginx

如果之前没有开启nginx进程:

nginx

如果之前开启了nginx进程,重启:

(whw_l) [root@bogon opt]# nginx -t
nginx: the configuration file /opt/tngx231//conf/nginx.conf syntax is ok
nginx: configuration file /opt/tngx231//conf/nginx.conf test is successful
(whw_l) [root@bogon opt]# nginx -s reload

细节说明

防火墙问题

如果你的配置检查了好几遍都没问题,但是输入网址就是登陆不上,很可能是系统防火墙没关,需要手动关闭一下防火墙:

# 软件防火墙
systemctl stop firewalld
# 内置防火墙
setenforce 0

虚拟环境部署说明

如果你用的是Python虚拟环境部署的项目,环境的路径配置有关虚拟环境的项目一定要用虚拟环境的!

(1)比如上面在配置uwsgi时的home参数:

# 虚拟环境的绝对路径
home = /root/Envs/whw_l

找虚拟环境的路径也很简单:

# 在虚拟环境中
(whw_l) [root@bogon opt]# cdvirtualenv
(whw_l) [root@bogon whw_l]# pwd
/root/Envs/whw_l

(2)开启uwsgi进程也需要虚拟环境下uwsgi的绝对路径!

在虚拟环境下找uwsgi的执行路径也很简单:

# 在虚拟环境下
(whw_l) [root@bogon opt]# which uwsgi
/root/Envs/whw_l/bin/uwsgi

~~

centos7部署前后端分离项目的过程的更多相关文章

  1. linux --- 部署前后端分离项目

    vue + uwsgi +nginx 部署前后端分离项目 准备项目 1.将前端vue项目包和后端django项目包上传服务器,通过lrzsz,直接从windows拖进linux中 2.解压缩操作 前端 ...

  2. 使用 Nginx 部署前后端分离项目,解决跨域问题

    前后端分离这个问题其实松哥和大家聊过很多了,上周松哥把自己的两个开源项目部署在服务器上以帮助大家可以快速在线预览(喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了 ...

  3. 在centos7.6上部署前后端分离项目Nginx反向代理vue.js2.6+Tornado5.1.1,使用supervisor统一管理服务

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_102 这一次使用vue.js+tornado的组合来部署前后端分离的web项目,vue.js不用说了,前端当红炸子鸡,泛用性非常广 ...

  4. 海纳百川无所不容,Win10环境下使用Docker容器式部署前后端分离项目Django+Vue.js

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_179 随着现代化产品研发的不断推进,我们会发现,几乎每个产品线都会包含功能各异的服务,而且服务与服务之间存在也会存在着错综复杂的依 ...

  5. docker+nginx+redis部署前后端分离项目!!!

    介绍本文用的经典的前后端分离开源项目.项目的拉取这些在另一篇博客!!! 其中所需要的前后端打包本篇就不做操作了!!不明白的去看另一篇博客!!! 地址:http://www.cnblogs.com/ps ...

  6. vue+uwsgi+nginx部署前后端分离项目

    前后端分离,vue前端提供静态页面,且可以向后台发起get,post等restful请求. django后台提供数据支撑,返回json数据,返回给vue,进行数据页面渲染 后端 创建虚拟环境 解决dj ...

  7. 在k8s中部署前后端分离项目进行访问的两种配置方式

    第一种方式 (1) nginx配置中只写前端项目的/根路径配置 前端项目使用的Dockerfile文件内容 把前端项目编译后生成的dist文件夹放在nginx的html默认目录下,浏览器访问前端项目时 ...

  8. Linux、Debian、Jenkins、GIT、Nginx、码云安装,自动化部署前后端分离项目

    1.安装Jenkins i:下载Jenkins安装包(war文件):https://jenkins.io/download/ ii:这里采用Tomcat的war包方式安装,讲下载好的安装包放到Tomc ...

  9. 在Docker运行的Nignx内部署前后端分离项目

    环境准备: Linux服务器: IP: 192.168.1.10 前端打包后的Vue项目: Port-3000, 请求地址192.168.1.10:8080 后端打包后的Java项目: Port-80 ...

随机推荐

  1. soot学习历程---(1)

    今天看了soot生成手册的部分内容,简单摘录一下 Scene 表示分析所处的完整环境,可以借此设置application class(用sootclass),主类(main),point-to和cal ...

  2. [BZOJ 3930] [CQOI 2015]选数(莫比乌斯反演+杜教筛)

    [BZOJ 3930] [CQOI 2015]选数(莫比乌斯反演+杜教筛) 题面 我们知道,从区间\([L,R]\)(L和R为整数)中选取N个整数,总共有\((R-L+1)^N\)种方案.求最大公约数 ...

  3. c++ 多线程(2000个)端口扫描(附源码)

    目录 程序适应环境与基本介绍 程序适应环境与基本介绍 情况:开2000个线程,扫描主机上开启的端口,扫描时间40秒左右. 瓶颈:不管开5000还是更多,都不能大幅加快扫描时间. 瓶颈解决方法:可以使用 ...

  4. luogu P1232 [NOI2013]树的计数

    传送门 这题妙蛙 首先考虑构造出一个合法的树.先重新编号,把bfs序整成\(1,2,3...n\),然后bfs序就是按照从上到下从左往右的遍历顺序,所以可以考虑对bfs序分层,可以知道分层方式只会对应 ...

  5. linux基本命令之文件浏览(cat,more,less,tail,head),文件操作命令(cp,mv,rm,find)

    linux文件浏览,文件操作命令 文件管理之文件浏览命令 1.cat命令:显示文本文件所有内容 格式:cat 文件名 适用场景:适合只有少量数据的文件,例如只有几行内容的可以使用此命令. 2.more ...

  6. c# 数据库基础(将连接字符串写到配置文件中)

    数据库 操作步骤 一,添加一个配置文件 内容 <?xml version="1.0" encoding="utf-8" ?> <configu ...

  7. 【问题解决方案】Linux中命令useradd与adduser的区别

    参考链接: useradd与adduser的区别 useradd与adduser:创建新的用户 CentOs: useradd与adduser是没有区别的 都是在创建用户,在home下自动创建目录,没 ...

  8. vue脚手架通过UI界面创建项目

    vue脚手架提供了图形界面操作项目,比之前通过命令操作的形式还要简单,以下是使用的步骤: 1.全局安装@vue/cli脚手架工具 npm i @vue/cli -g {使用淘宝镜像:npm insta ...

  9. VSCode配置 Debugger for Chrome插件

    Debugger for Chrome这个插件是直接在vscode里面进行调试js文件,跟谷歌的控制台是一样的功能,下载了它就不用打开浏览器的控制台就能进行打断点. 首先在左侧扩展栏找到这个插件下载好 ...

  10. SPSS25 下载安装和激活

    目录 1. 其他版本 2. 安装步骤 3. 下载地址 1. 其他版本 参考:https://www.cnblogs.com/coco56/p/11648399.html 2. 安装步骤 打开安装包 下 ...