【前端后端部署】将前后端项目部署到云服务器

        更多笔记在这里☞  全栈之路:   https://gitee.com/oldbe/notes   【跳转到】
        觉得有用请点个 star ,非常感谢!



现在AI太强大,开发个人产品的门槛和成本太低了,只要你有好的想法都可以很快速的开发一款产品

 1. 获得服务器
    

服务器最重要的就是稳定还有便宜;

这里推荐  雨云,便宜且稳定。我们公司生产环境一直用的也是雨云;
【专属优惠链接,新用户更便宜】https://www.rainyun.com/NjQ0NjI5_

优惠专享链接:雨云 - 新一代云服务提供商
输入优惠码【NjQ0NjI5】再减15%

2.连接到云服务器

使用连接工具连接即可

3.配置环境

3.1.Java(运行后端所需)

  • 安装 OpenJDK (以 JDK8 为例)

sudo yum install java-1.8.0-openjdk -y
  • 验证 Java 安装

java -version

如果显示 Java 版本信息,则安装成功

3.2.MySQL数据库

  • 安装 MySQL

sudo yum install mysql-server -y
  • 启动 MySQL

sudo systemctl start mysqld
  • 配置安全选项

sudo mysql_secure_installation
  • 登录 MySQL 并创建数据库

mysql -u root -p

3.3.Nginx(前端访问后端需要)

  • 安装 Nginx

sudo yum install nginx -y
  • 启动并检查 Nginx 服务

sudo systemctl start nginx  #启动 Nginx
sudo systemctl enable nginx #设置自启动
nginx -v  #查看版本

3.4. Nodejs(构建前端所需)

  • 安装 Node.js


curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo yum install -y nodejs
  • 验证安装

node -v
npm -v

4.打包项目

4.1.打包后端项目

mvn clean package

jar 包在 target 目录下

4.2.打包前端项目

npm run build:prod

Vite 默认会将打包后的静态资源生成在 dist 文件夹中

5.上传项目到服务器

5.1.上传后端项目

  • 将 .jar 文件上传到服务器

假设 .jar 文件路径为 target/employment.jar,服务器目标路径为 /opt/employment/

scp target/employment.jar user@your-server-ip:/opt/employment/

将 user 替换为你的服务器用户名,your-server-ip 替换为服务器 IP 地址。

  • 确保 .jar 文件已经成功上传到目标路径 /opt/employment/

5.2.上传前端项目

  • 将前端打包后的 dist 目录上传到服务器上:
scp -r dist user@your-server-ip:/var/www/html/

此命令会将前端项目的静态资源上传到服务器的 /var/www/html/ 目录,这个目录是 Nginx 的默认访问根目录

6.配置后端服务

6.1.启动后端应用

  • 在服务器上进入后端 .jar 文件所在目录:
cd /opt/employment/
  • 启动后端应用:
java -jar employment.jar

后端服务会启动并监听相应的端口,默认情况下是 8080。可以根据需要修改端口

  • 配置后端服务开机自启动(使用 systemd):

创建一个新的 systemd 服务文件 /etc/systemd/system/employment.service,内容如下:

[Unit]
Description=Employment System Backend
After=network.target[Service]
User=root
ExecStart=/usr/bin/java -jar /opt/employment/employment.jar
SuccessExitStatus=143
TimeoutStopSec=10
Restart=always[Install]
WantedBy=multi-user.target

6.2.配置防火墙

确保服务器的防火墙允许访问所需端口(如 8080 端口):


sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

7.配置 Nginx 反向代理

7.1.编辑 Nginx 配置

  • 打开 Nginx 配置文件:
sudo vim /etc/nginx/nginx.conf
  • 添加反向代理配置,将请求转发到后端 Java 应用。假设后端应用运行在 8080 端口,配置如下:
server {listen 80;server_name your-domain.com;  # 替换为你的域名或 IPlocation / {root /var/www/html;   # 指向前端项目所在目录index index.html;}location /api/ {proxy_pass http://localhost:8080;  # 将 /api 请求转发到后端服务proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}
  • 保存并退出后,检查 Nginx 配置是否正确:
sudo nginx -t
  • 重新加载 Nginx 配置使更改生效:
sudo systemctl reload nginx

8.访问应用

  1. 在浏览器中访问你的服务器 IP 或域名,前端页面应该能够正常加载
  2. 后端 API 请求(如 /api/)会通过 Nginx 反向代理转发到后端应用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92592.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue如何监听localstorage

在Vue中监听localStorage的变化可以通过几种方式实现,但需要注意的是,localStorage本身不提供原生的事件监听机制,如DOM元素的MutationObserver。不过,你可以通过一些间接的方法来监听localStorage的变化。方法1:使用w…

灰狼算法+四模型对比!GWO-CNN-LSTM-Attention系列四模型多变量时序预测

摘要:聚划算!大对比!灰狼算法四模型对比!GWO-CNN-LSTM-Attention系列四模型多变量时序预测,该代码特别适合需要横向对比不同深度学习模型性能的时序预测场景,研究者可通过参数快速适配不同预测需求&#xf…

冒泡排序实现以及优化

一,冒泡排序说明冒泡排序是从第一个元素开始和后面一个元素进行判断是否满足左小右大,如果不满足就交换位置,再拿第二个和第三个进行上述操作一直到第n-1和第n个。经过上述的一轮操作就可以把第一个最大值放到最右边,在进行n轮上述…

水下管道巡检机器人cad【10张】三维图+设计说明书

摘 要 水下管道是水下油气管道的生命线,水下管道巡检机器人可以替代人工完成水下油气管道状态的实时监测和数据反馈,有助于工作人员对水下油气管道的运行情况实时掌握。 本文完成了水下管道巡检机器人的总体设计,采用三维设计软件Solidwor…

SQL(结构化查询语言)的四大核心分类

这张图展示了 SQL(结构化查询语言)的四大核心分类,分别对应不同的数据库操作场景。以下是逐类解析:1. 数据操作语言(DML:Data Manipulation Language)作用:用于操作数据库中的数据&a…

AI(1)-神经网络(正向传播与反向传播)

🍋🍋AI学习🍋🍋🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主…

嵌入式Linux学习 - 数据结构6

五、哈希表1. 哈希算法将数据通过哈希算法映射成一个键值,存取都在同一位置实现数据的高效存储和查找将时间复杂度尽可能降低至O(1)2. 哈希碰撞多个数据通过哈希算法得到的键值相同,称为产生哈希碰撞3. 哈希表构建哈希表存放0-100之间的数据将0 - 100之间…

GitHub 趋势日报 (2025年08月07日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图1894nautilus_trader354stagehand315openai-cookbook263sim242ollama230prisma154v…

android 使用openimagelib OpenImage 实现点击放大图片,浏览

在 Android 中使用 OpenImageLib(假设这是一个开源图片加载库,类似于 Glide 或 Picasso)实现 点击放大图片并浏览 的功能,通常需要结合 图片查看器库(如 PhotoView)和 图片加载库(如 OpenImageLib)。以下是完整的实现方案: 1. 添加依赖 (1) 添加 OpenImageLib 依赖 …

计算机视觉CS231n学习(4)

深度学习软件 (这一部分去看tensorflow和pytorch的笔记) (见专栏)tensorflow和pytorch区别 tensorflow,我们先构建显示的图,然后重复运行它 pytorch,我们每次做前向传播时,都构建一个…

【具身智能】具身智能的革命——人形机器人如何重塑人类日常生活

还在为高昂的AI开发成本发愁?这本书教你如何在个人电脑上引爆DeepSeek的澎湃算力! 2025年被誉为具身智能的元年,人形机器人技术迅猛发展,将深刻改变人类生活方式。本文从具身智能的核心概念入手,探讨人形机器人的硬件架构、感知系统、运动控制和决策算法等技术基础。结合…

Jira Service Management企业服务管理:IT、HR、法务、财务等部门如何落地现代企业服务管理理念与实践

Jira Service Management 服务管理方法Jira Service Management 服务管理方法将开发、IT运营和业务团队整合至一个统一平台,以实现更高效的协作。任何团队都能够快速响应业务变化,为客户和员工提供卓越体验。Jira Service Management 提供直观、经济高效…

软件开发 - danger 与 dangerous、warn 与 warning

danger 与 dangerous 1、danger词性:n.含义:指可能造成伤害或损失的情况或事物# 例词in 【danger】(处于危险中) out of 【danger】(脱离危险)# 例句After the surgery, the doctor said the patient was o…

为何毫米波需要采用不同的DPD方法?如何量化其值?

摘要 在5G新无线电技术标准中,除了sub-6 GHz频率外,还利用毫米波(mmWave)频率来提高吞吐量。毫米波频率的使用为大幅提高数据吞吐量带来了独特的机会,同时也带来了新的实施挑战。本文探讨sub-6 GHz和毫米波基站无线电之间的架构差异&#xff…

【数据结构入门】栈和队列的OJ题

目录 1. 有效的括号 分析: 代码: 2. 用队列实现栈 分析: 代码: 3. 用栈实现队列 分析: 代码: 4. 设计循环队列 思路: 代码: 定义循环队列结构体: 初始化结…

#Datawhale AI夏令营#第三期全球AI攻防挑战赛(AIGC技术-图像方向)

本次题目来源于Datawhale AI夏令营第三期全球AI攻防挑战赛图像生成赛道。首先看一下赛题背景和要求。1.赛题相关大赛背景随着大模型(Deepseek、GPT、LLaMA等)的爆发式应用,AI技术已深度融入金融、医疗、智能终端语音交互场等核心领域&#xf…

Compose笔记(四十二)--RangeSlider

这一节主要了解一下Compose中的RangeSlider,在Jetpack Compose中,RangeSlider是Material3库提供的双滑块范围选择控件,用于在一个连续区间内选择最小值和最大值。它能直观地设置一个区间范围,广泛应用于筛选、过滤等场景,简单总结…

window10本地运行datax与datax-web

搭建 dataX 前置条件 JDK(1.8以上,推荐1.8)Python(2或3都可以)Apache Maven 3.x (Compile DataX) 下载 datax 编译好的包 https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gz 进入目录,使用 powershell 打开 执行解压命令…

PDF注释的加载和保存的实现

PDF注释功能文档 概述 本文档详细说明了PDF注释功能的实现,包括注释的加载和保存功能。该功能基于Android PDFBox库实现,支持Ink类型注释的读取和写入。 功能模块 1. 注释加载功能 (getAnnotation()) 功能描述 从PDF文件中加载已存在的注释,并…

Linux环境下实现简单TCP通信(c)

具体代码实现 server.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h>#define PORT 8080 #define BUFFER_SIZE 1024void handle_client(int client_s…