前后端分离项目的服务器部署

这篇具有很好参考价值的文章主要介绍了前后端分离项目的服务器部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

  • 系统环境简介:

    本地操作系统:Mac OS Monterey 12.3.1
    阿里云服务器:CentOS 7.8
    后端开发工具:IntelliJ IDEA
    前端开发工具:WebStorm

  • 项目部署的前提条件:

    ① 需要购买一个域名,并且完成备案
    ② 需要拥有一台公网服务器,以阿里云服务器为例
    ③ 需要熟练掌握 Linux 操作系统的使用,熟悉常用命令
    ④ 需要对虚拟化容器技术 Docker 有初步的了解,熟悉常用命令
    ⑤ 待部署的项目原则上是基于 Spring Boot 与 Vue 开发的前后端分离项目

前后端分离项目的服务器部署

二、安装项目运行的基本环境

  • Docker 的安装与启动:

# 安装必要编译环境与依赖的软件包
yum -y install gcc
yum -y install gcc-c++
yum install -y yum-utils device-mapper-persistent-data lvm2

# 设置镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 更新软件包索引
yum makecache fast

# 安装服务
yum -y install docker-ce docker-ce-cli containerd.io

# 启动服务
systemctl start docker
  • 常用软件在 Docker 中的安装与启动:

# 搜索需要的镜像,选择所需要的版本号
docker search mysql

# 拉取镜像到本地仓库,不声明版本号则默认下载最新版
docker pull mysql:8.0			# MySQL
docker pull redis				# Redis
docker pull rabbitmq:management # RabbitMQ
docker pull nginx				# Nginx

# 启动容器,并完成端口映射,Nginx的启动详见前端部署
docker run --name mysql --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=密码 -d mysql:8.0
docker run --name redis --restart=always -p 6379:6379 -d redis --requirepass "密码"
docker run --name rabbitmq --restart=always -p 15672:15672 -p 5672:5672  -d  rabbitmq:management
  • Docker 常用命令:

systemctl restart docker	# 重启服务
systemctl stop docker		# 停止服务
systemctl status docker		# 查看服务状态

docker search 镜像名			# 搜索镜像
docker pull 镜像名			# 下载镜像
docker rmi 镜像名			# 删除镜像
docker images				# 列出所有本地镜像

docker run 镜像名			# 新建容器
docker exec -it 镜像名 /bin/bash	# 进入容器
docker rm 镜像名				# 删除容器
docker start 镜像名			# 启动容器
docker stop 镜像名			# 停止容器
docker restart 镜像名		# 重启容器
docker rename 原名 新名		# 更改容器名称

三、后端项目打包与部署

  • 项目打包:

    修改 Spring Boot 项目的 pom.xml 文件,将打包方式修改为 jar,然后点击 Maven 插件中的 package 进行打包,打包成功后会在项目的 target 目录下生成一个 jar 包,如下图所示:

前后端分离项目的服务器部署

  • 编写 Dockerfile 文件:

FROM java:8
VOLUME /tmp
ADD blog-0.0.1.jar blog.jar       
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/blog.jar"] 
  • 编写 Shell 脚本:

# Jar包源路径  
SOURCE_PATH=自定义服务器上传目录
# Docker镜像/容器名
SERVER_NAME=blog-0.0.1.jar
TAG=latest
SERVER_PORT=8080
# 容器ID
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
# 镜像ID
IID=$(docker images | grep "$SERVER_NAME:$TAG" | awk '{print $3}')
if [ -n "$CID" ]; then
  echo "存在容器$SERVER_NAME, CID-$CID"
  docker stop $CID
  docker rm $CID
fi
# 构建Docker镜像
if [ -n "$IID" ]; then
  echo "存在$SERVER_NAME:$TAG镜像,IID=$IID"
  docker rmi $IID
else
  echo "不存在$SERVER_NAME:$TAG镜像,开始构建镜像"
  cd $SOURCE_PATH
  docker build -t $SERVER_NAME:$TAG .
fi
# 运行Docker容器
docker run --name $SERVER_NAME -v /usr/local/upload:/usr/local/upload -d -p $SERVER_PORT:$SERVER_PORT $SERVER_NAME:$TAG
echo "$SERVER_NAME容器创建完成"
  • 运行后端项目:

将上述三个文件传输到服务器自定义的目录下,然后在该目录下运行如下命令,构建后端镜像:

sh ./脚本名称.sh 

第一次项目镜像的构建时间可能较长,请耐心等待,构建过程如下图所示:

前后端分离项目的服务器部署

查看是否构建成功:

# 查看所有运行的容器实例
docker ps

测试接口是否可以正常运行:

前后端分离项目的服务器部署

🌟 说明:重新部署只需要重新上传 Jar 包并执行 Shell 脚本即可

四、前端项目打包与部署

  • 前端项目打包:

通过终端进入 Vue 项目路径,然后执行如下命令:

npm run build

执行过程如下图所示:

前后端分离项目的服务器部署

打包成功后会默认在项目根目录下生成 dist 目录,由于我的前端项目分为博客网站与后台管理系统两个项目,为了便于区分,将打包之后的目录名分别改为 blog 和 admin,然后上传到服务器的 /usr/local/vue 目录即可(该目录为自定义目录,需要写进 Nginx 配置文件)

  • 域名解析:

域名解析要根据项目的实际需求进行设置,以下配置仅供参考:

前后端分离项目的服务器部署

  • Nginx 的部署:

在服务器 /usr/local/nginx 目录下创建 nginx.conf 文件(该目录为自定义目录,需要在启动时映射配置文件),格式如下:

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile      on;
    keepalive_timeout  65;

    client_max_body_size     50m;
    client_body_buffer_size  10m; 
    client_header_timeout    1m;
    client_body_timeout      1m;

    gzip on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_comp_level  4;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;

server {
        listen       80;
        server_name  前台域名;
     
        location / {		
            root   /usr/local/vue/blog;
            index  index.html index.htm; 
            try_files $uri $uri/ /index.html;	
        }
			
	location ^~ /api/ {		
            proxy_pass http://服务器IP地址:8080/;
	    	proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;						
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }	
    }
	
server {
        listen       80;
        server_name  后台子域名;
     
        location / {		
            root   /usr/local/vue/admin;
            index  index.html index.htm; 
            try_files $uri $uri/ /index.html;	
        }
			
	location ^~ /api/ {		
            proxy_pass http://服务器IP地址:8080/;
	    	proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;						
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }	
    }

server {
        listen       80;
        server_name  websocket子域名;
     
        location / {
          proxy_pass http://服务器IP地址:8080/websocket;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "Upgrade";
          proxy_set_header Host $host:$server_port;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
       }
    }

server {
        listen       80;
        server_name  文件上传子域名;
     
        location / {		
          root /usr/local/upload/; 
        }			
    }
 }

🌟 说明:前端分为两个项目分别对应两个 server,项目路径为之前上传到服务器的路径 /usr/local/vue/,其他两个为文件上传域名和 WebSocket 转发域名

  • Nginx 的启动:

# 启动的同时映射本地修改后的配置文件与项目路径
docker run --name nginx --restart=always -p 80:80 -d -v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/vue:/usr/local/vue -v /usr/local/upload:/usr/local/upload nginx 

五、测试

在浏览器输入域名,测试部署的网站页面是否成功显示:

前后端分离项目的服务器部署文章来源地址https://www.toymoban.com/news/detail-445144.html

到了这里,关于前后端分离项目的服务器部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot+Vue前后端分离项目如何部署到服务器

    🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 🤖 洛可可白 :个人主页 🔥 个人专栏 :✅前端技术 ✅后端技术 🏠 个人

    2024年04月11日
    浏览(47)
  • Windows服务器,通过Nginx部署VUE+Django前后端分离项目

    基本说明 安装 Nginx 部署 VUE 前端 部署 Django 后端 Django admin 静态文件(CSS,JS等)丢失的问题 总结 本文介绍了在 windows 服务器下,通过 Nginx 部署 VUE + Django 前后端分离项目。本项目前端运行在 80 端口,服务器端运行在 8000 端口。因此本项目使用 Django 的 runserver 命令进行部署

    2024年02月05日
    浏览(55)
  • 解决前后端分离Vue项目部署到服务器后出现的302重定向问题

    最近发现自己开发的vue前后端分离项目因为使用了spring security 安全框架,即使在登录认证成功之后再调用一些正常的接口总是会莫名奇妙地出现302重定向的问题,导致接口数据出不来。奇怪的是这个问题在本地开发环境并没有,而是部署到了服务器之后才会有。 接口无法加

    2024年02月13日
    浏览(42)
  • (一)专题介绍:移动端安卓手机改造成linux服务器&linux服务器中安装软件、部署前后端分离项目实战

    总体概述: 本篇文章隶属于“手机改造服务器 部署前后端分离项目”系列专栏,该专栏将分多个板块,每个板块独立成篇 来详细记录:手机(安卓)改造成个人服务器(Linux)、Linux中安装软件、配置开发环境、部署JAVA+VUE+MySQL5.7前后端分离项目,以及内网穿透实现外网访问等全过

    2024年02月04日
    浏览(44)
  • flask+Python+Vue实现前后端分离的web项目并部署至云服务器

    1 后台+算法模型 1.1 训练机器学习模型 1.2 基于Flask框架搭建后台接口 注意:前后端跨域问题,可引入CORS解决,具体如代码: 2 前端搭建 3 云服务器部署 详细设置教程可参考linux CentOS 宝塔面板安装设置教程 安装Nginx和python项目管理器,后续可在面板上操作,完成项目打包上传

    2024年02月07日
    浏览(54)
  • 在centos服务器中完成jdk,tomcat,MySQL的安装以及前后端分离项目中后端的部署

    目录 一. jdk,tomcat的安装 1.将要安装的软件压缩包放入到centos服务器上  2. 解压对应的安装包 3. jdk环境变量配置 4. tomcat启动 5. 关闭防火墙  二. MySQL安装 1. 卸载mariadb,否则安装MySql会出现冲突(先查看后删除再查看) 2. 将MySQL安装包解压到指定目录 3. 开始安装,-ivh 其中i表示

    2024年02月06日
    浏览(43)
  • 若依(Ruoyi)前后端分离版项目部署到服务器(Linux环境)后,刷新页面报错:404 Not Found

    原文章: 若依(ruoyi)前后端分离版使用教程之若依后端部署阿里云服务器步骤(超详细)_蓝多多的小仓库的博客-CSDN博客 问题:         在若依项目部署服务器后,可以正常运行,但如果执行刷新页面操作,便会出现404 Not Found。 原因:         Nginx未正确配置。由

    2024年02月17日
    浏览(50)
  • ruoyi若依前后端分离项目部署到服务器后,PUT DELETE请求403错误,GET POST请求正常

    后端打包方式war,部署到tomcat8, PUT DELETE请求报403错误,网上有三种说法 第一种是跨域请求问题 第二种是服务器没有放开了PUT DELETE请求,需要前端添加header ruoyi vue 自动生成代码PUT DELETE为http不安全方法,这个怎么解决安全问题 · Issue #I43AX6 · 若依/RuoYi-Vue - Gitee.com 用域名访问

    2024年01月17日
    浏览(48)
  • 若依springboot+vue前后端分离系统部署到腾讯服务器教程

    前后端分离的开发模式在现代web应用开发中越来越流行,它可以提高开发效率、降低维护成本、提高系统的可扩展性和可维护性。而腾讯云作为国内领先的云计算服务提供商,为开发者提供了稳定、高效、安全的云计算服务,为前后端分离应用的部署提供了良好的解决方案。

    2024年02月04日
    浏览(62)
  • ruoyi若依前后端分离版部署centos7服务器(全)

    VMware虚拟机 centos7 安装环境如下 一、msql 5.7 二、nginx1.23.3 三、java8 四、redis 3.2.1 五、部署若依前端 六、部署若依后端 前言 虚拟机的桥接与nat模式 : 重点 重点!!! 无线不可以用桥接模式 ,而你用了nat模式会导致除了宿主机跟虚拟机外 同一个路由器下其他设备访问不到 !

    2024年02月02日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包