云服务器部署Java+Vue前后端分离项目
1、申请一个云服务器
选择云服务器:阿里云、腾讯云、百度云、京东云、华为云等等,我使用的是阿里云服务器。
2、远程链接服务器
使用FinalShell工具或者其他远程工具,使用SSH链接,主机地址要填写阿里云服务的公网ip,如果链接不上可能需要加速,将智能加速勾选上即可

3、安装软件jdk、mysql、redis、nginx等
(1)下载jdk,并且上传到/usr/local中,然后解压缩
linux版本的jdk链接如下:
链接:https://pan.baidu.com/s/1YDmWQU66iYpnqJ4Wwmcj2w?pwd=vwpl
提取码:vwpl
也可以自己从官网下载(Java Downloads | Oracle 中国)
(2)解压命令 tar -zxf jdk-8u161-linux-x64.tar.gz
(3)配置环境变量
使用vim命令编辑profile文件,如果vim没有下载也可以使用vi命令编辑,但是vi编辑没有样式,在文件末尾输入以下内容:
JAVA_HOME=/usr/local/jdk1.8.0_161
JRE_HOME=/usr/local/jdk1.8.0_161/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
然后保存退出,命令是 :wq 表示保存退出
(4)验证是否配置成功
java -version ,出现下面内容表示jdk安装并配置成功

4、docker安装(通过docker compose安装mysql、redis、nginx)
1、如果已经安装,可以先删除
# 列出已安装的docker包yum list installed|grep docker
# 如果有,就卸载yum -y remove docker-ce
2、安装yum-utils管理yum源
yum install -y yum-utils
3、设置docker源
# 配置国内镜像速度快
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、设置元数据缓存
yum makecache fast
5、安装、启动docker
#安装docker
yum -y install docker-ce #启动docker
systemctl start docker#启动docker前,关闭防火墙 ,否则可能会启动失败
#关闭防火墙命令
systemctl stop firewalld.service
5、docker compose
我用的docker版本已经包含了docker compose,如果版本较可能需要下载compose
在/root下创建docker-compose.yml文件
#创建空文件
touch docker-compose.yml
然后在文件中添加配置,最好将文件导出后编辑,使用vi不太好编辑文件
version: '3.1'
services:mysql: # 服务的名称restart: always # 代表只要docker启动,那么这个容器就跟着一起启动image: daocloud.io/library/mysql:5.7.30 # 指定镜像路径container_name: mymysql # 指定容器名称ports:- 3306:3306 # 指定端口号的映射environment:MYSQL_ROOT_PASSWORD: 123456 # 指定MySQL的ROOT用户登录密码TZ: Asia/Shanghai # 指定时区volumes:- /root/mysql/data:/var/lib/mysql # 映射数据卷- /root/mysql/conf/my.cnf:/etc/mysql/my.cnfredis:restart: alwaysimage: daocloud.io/library/redis:5.0.7container_name: myredis ports:- 6379:6379volumes:- /root/redis/conf/redis.conf:/etc/redis/redis.conf- /root/redis/data:/datanginx:restart: alwaysimage: daocloud.io/library/nginx:latestcontainer_name: mynginxports:- 80:80volumes: - /root/nginx/conf.d:/etc/nginx/conf.d- /root/nginx/dist:/usr/share/nginx/html
注意配置要改成自己的,不要全部复制粘贴
配置好就可以启动了,启动docker compose up -d

docker ps查询进程,可以看到容器已经创建好并运行起来了,后续如果再使用的话,只需执行docker compose start就可以一键全启动了
容器创建好以后建议本地工具连接此时一下,使用数据库工具连接云服务的mysql,RedisMeanager工具连接云服务的redis,如果连接不上,要检查云服务器安全组的端口是否开放
6、同步数据
将本地的数据库的表导出,并导入mysql云服务器中
7、打包项目并上传
前端记得修改代理的ip地址,运行npm run build:prod,前端会打包成dist文件夹,将dist上传至服务器的/root/nginx/dist下
后端需要修改pom文件,加入打包插件,记得修改配置中的ip,最后再侧边栏的meaven双击package进行打包,会将后端项目打成jar包
打包插件:
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><fork>true</fork> <!-- 如果没有该配置,devtools不会生效 --></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><manifest><addClasspath>true</addClasspath><useUniqueVersions>false</useUniqueVersions><classpathPrefix>lib/</classpathPrefix><!-- 此处是项目的主类路径--> <mainClass>com.qf.Java2403FemesAdminApplication</mainClass></manifest></archive></configuration></plugin></plugins><finalName>${project.artifactId}</finalName></build>
8、配置nginx
在主机的/root/nginx/conf.d下创建default.conf文件,编辑该文件
server {listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location / {# 部署到linux使用root /usr/share/nginx/html; try_files $uri $uri/ /index.html;index index.html index.htm;}# 这里表示将包含 /prod-api的请求都转发到 proxy_pass 指定的链接中# 这个是前端打包时指定的,可以参考.env.development和.env.production文件location /prod-api/ {# proxy_set_header允许重新定义或添加字段传递给代理服务器的请求头proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 部署到linux使用(服务器中项目路径和端口)proxy_pass http://101.200.72.94:8888/; # 客户端发送请求的请求体的最大值,一般上传文件时,需要设置client_max_body_size 400m;client_body_buffer_size 128k;# 代理服务器相关的一些超时时间proxy_connect_timeout 1000;proxy_send_timeout 1000;proxy_read_timeout 90;# 代理服务器的缓存的大小proxy_buffer_size 128k;proxy_buffers 32 32k;proxy_busy_buffers_size 128k;proxy_temp_file_write_size 128k;}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}
然后重新加载docker的nginx命令
docker exec mynginx nginx -s reload
9、最后启动项目进行访问
后端项目启动,进入/usr/local下,启动项目
nohup java -jar xxx.jar &
网页访问测试,直接访问服务器ip即可,如果访问不成功,可能是端口需要在云服务器开放
相关文章:
云服务器部署Java+Vue前后端分离项目
1、申请一个云服务器 选择云服务器:阿里云、腾讯云、百度云、京东云、华为云等等,我使用的是阿里云服务器。 2、远程链接服务器 使用FinalShell工具或者其他远程工具,使用SSH链接,主机地址要填写阿里云服务的公网ip,如…...
C++的7种设计模式原则
一、设计模式前言 设计模式(Design Patterns)的“模式”指的是一种在软件设计中经过验证的、解决特定问题的方案。它们不是具体的代码,而是解决常见设计问题的抽象方案或模板。设计模式提供了一种标准的方式来组织代码,以提高代码…...
24.8.5数据结构|栈
栈-弹夹 1、定义: 栈就是特殊的线性表,与之前的线性表的区别就是增加了约束,只允许在一端插入和删除,就这麽简单。 2、基本操作 栈的插入操作叫:入栈{进栈、压栈};栈的删除:出栈{退栈&#x…...
LeetCode算法题训练
力扣刷题训练 开始记录力扣的刷题之路 刷题思路来自灵茶山艾府 入门题单: 「新」动计划 编程入门编程基础 0 到 1 训练方法 A 滑动窗口(定长/不定长/多指针)二分算法(二分答案/最小化最大值/最大化最小值/第K小)…...
Python | Leetcode Python题解之第326题3的幂
题目: 题解: class Solution:def isPowerOfThree(self, n: int) -> bool:return n > 0 and 1162261467 % n 0...
手机CPU性能天梯图(2024年8月),含安兔兔/GB6/3DMark跑分
原文地址(高清无水印原图/持续更新/含榜单出处链接): 2024年8月手机处理器天梯图 2024年8月1日更新日志:由于近期并未有新处理器发布,故只做常规更新;移除鲁大师天梯图;补充其它天梯图数量。 -…...
通过实际的例子和代码演示,可以更好地理解 `optional` 的使用方式和应用场景
当然,让我们通过一些实际的例子来演示 std::optional 的使用方式和应用场景。 场景 1:函数返回值 假设我们有一个函数,它尝试从字符串中解析一个整数,但如果字符串不是一个有效的整数,我们希望返回一个错误状态。 #…...
Java 电商秒杀系统优化实战:实现进阶示例详解与 RabbitMQ 配置
上一篇博客介绍了使用消息队列、异步处理等技术构建 Java 电商秒杀系统的基本思路,本文将进一步优化代码实现,并提供更详细的代码示例和 RabbitMQ 配置,助您构建更健壮、高效的秒杀系统。 一、 代码优化 1. 接口限流 在 SeckillController…...
路径规划 | 基于狼群算法的无人机路径规划(Matlab)
目录 效果一览基本介绍程序设计参考文献 效果一览 基本介绍 路径规划 | 基于狼群算法的无人机路径规划(Matlab) 狼是一种群居性动物,社会分工明确,通过承担各自的责任与团结协作,共同促进整个狼群的生存与发展。狼群算…...
13-python函数返回值和装包的后续提取数据方法——解包
1.1 参数解包 不定长参数简单来讲就是装包,把多个参数装到一个元组或者装到字典中,就叫做装包 Ctrld可以快速向下复制 传递实参时,也可以在序列类型的参数前添加星号,这样他会自动将序列中的元素依次作为参数传递 注意&#x…...
I. 对线
https://codeforces.com/gym/103186/problem/I 一开始感觉操作挺复杂的 但是写过Chino的数列 - 洛谷 发现可以通过矩阵来实现swap操作,就想能不能用线段树维护矩阵来写 有三排兵线,我们维护区间和,因此初始矩阵就有了 接下来分析每个操作的…...
Topsis法模型(评价类问题)
目录 本文章内容参考: 一. 概念 二. 特点和适用范围 三. 实现步骤 四. 代码实现 本文章内容参考: TOPSIS法模型讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北_哔哩哔哩_bilibili 一. 概念 TOPSIS(Technique for O…...
HPA 与pod调度
HPA 自动更新工作负载资源(例如 Deployment 或者 StatefulSet), 目的是自动扩缩工作负载以满足需求。 绑定到deploy上,控制pod 依托于metrics-server HorizontalPodAutoscaler 水平pod自动扩缩:意味着对增加的负…...
jupyter下载
https://blog.csdn.net/qq_48372575/article/details/125630622 我下面是CPU运行的,GPU链接在上面 Anaconda下载 https://docs.anaconda.com/miniconda/miniconda-other-installer-links/ 参考链接: https://blog.csdn.net/qq_48372575/article/detai…...
蓝桥杯双周赛 第 16 场 小白入门赛 解题报告 | 珂学家 | 七夕娱乐场
前言 题解 因为这场七夕节,所以出的特别友好。 整体还是偏思维。 T6 额外提供组合数学解,还是蛮有趣的。 A. 喜鹊罢工 题型: 签到 365 可以有多少个 7 组成 365可以有多少个7组成 365可以有多少个7组成 向上取整即可 #include <iostream>usi…...
[C++] 深入理解面向对象编程特性 : 继承
文章目录 继承的概念与定义继承的定义定义格式不同继承方式与继承的基类中访问限定符间的影响C中的继承和访问控制总结父类的private成员在子类中的访问限制protected成员的使用场景成员访问方式总结继承方式的默认值实际应用中的继承方式 示例代码 OOP中类之间的关系“is a” …...
汇昌联信科技做拼多多电商怎么引流?
在互联网经济高速发展的今天,电商平台如雨后春笋般涌现,其中拼多多以其独特的社交电商模式迅速崛起。对于汇昌联信科技而言,如何在拼多多平台上有效引流,成为提升销量和品牌知名度的关键。本文将深入探讨汇昌联信科技在拼多多电商…...
公网ip和私网ip的区别
1.接入方式不同\n公网IP以公网连接Internet上的非保留地址,私网IP则是局域网上的IP,通过NAT才能够与公网进行通信。 2.特点不同\n公网IP由国际互联网络信息中心InterNIC负责,将IP地址分配给注册并向InterNIC提出申请的机构或组织。私网IP则是为节省可分…...
【开发踩坑】windows查看jvm gc信息
windows查看jvm gc信息 EZ 找出java进程PID 控制面板----搜索任务管理器---- 任务管理器----搜索 java----详细信息 这里PID是4856 cmd jstat gc面板 reference: jstat命令...
时间序列预测 | CEEMDAN+CNN+Transformer多变量时间序列预测(Python)
目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 时间序列预测 | CEEMDANCNNTransformer多变量时间序列预测(Python) 时间序列预测 创新点 多尺度特征提取:CEEMDAN将复杂的时间序列分解成多个IMFs,使得CNN和Transforme…...
3.3《深入浅出:嵌入式通信基石——邮箱(Mailbox)与管道(Pipe)全解析》
通信基石初探:为何需要邮箱与管道? 昨天深夜调试一个多核通信的问题,第三遍看代码时突然意识到:两个核之间那段共享内存区域,竟然被双方同时写入了不同的配置参数。瞬间的冷汗让人彻底清醒——这已经不是第一次栽在数据同步上了。嵌入式系统里,任务间、核间、进程间的数…...
在VMware虚拟机里用CentOS 7.5手把手搭建OpenVPN 2.4.12服务器(附完整证书生成与防火墙配置)
在虚拟化环境中构建安全通信通道的技术实践 虚拟化技术为现代IT基础设施提供了灵活性和隔离性,而在这类环境中建立安全的通信通道则是许多开发者和运维人员的刚需。本文将聚焦于如何在VMware虚拟化平台上,基于CentOS 7.5系统构建一套完整的加密通信解决…...
告别C盘空间焦虑:手把手教你将MySQL和PATSTAT专利库完整部署到移动硬盘
告别C盘空间焦虑:手把手教你将MySQL和PATSTAT专利库完整部署到移动硬盘 当你的研究项目需要处理数百GB的专利数据,而笔记本电脑的C盘只剩下可怜的几GB空间时,那种焦虑感堪比论文截止日期前夜的打印机卡纸。PATSTAT这样的专利数据库就像知识宝…...
Python 3.14原生JIT编译器深度调优:从0到99分的5步精准压测与热路径优化法
第一章:Python 3.14原生JIT编译器性能调优导论Python 3.14 引入了首个官方支持的原生 JIT(Just-In-Time)编译器,标志着 CPython 运行时架构的重大演进。该 JIT 并非外部扩展(如 PyPy 或 Numba),…...
边走边聊 Python 3.8:Chapter 3:控制流与循环
Chapter 3:控制流与循环 程序的逻辑由控制流决定,而循环则让程序拥有“重复的力量”。本章将带你理解 if、for、while 背后的思维方式,掌握 Python 独有的 for-else 结构,并通过实际案例让你真正体会“程序为什么这样走”。当你能控制程序的节奏,你就能让代码按你的意图行…...
小白也能玩转AI配音!Fish Speech 1.5一键部署实战指南
小白也能玩转AI配音!Fish Speech 1.5一键部署实战指南 想让你的文字变成专业级语音吗?Fish Speech 1.5作为一款强大的AI语音合成工具,支持12种语言和声音克隆功能,现在通过CSDN星图镜像,只需简单几步就能快速体验。本…...
[特殊字符]️cv_resnet101_face-detection_cvpr22papermogface模型可解释性:Grad-CAM人脸热力图可视化
MogFace 人脸检测模型可解释性:Grad-CAM 热力图可视化实战 1. 引言 人脸检测技术已经相当成熟,但很多时候我们只是看到了检测框和置信度分数,却不知道模型到底“看”到了什么。为什么模型能在一张复杂的照片里找到人脸?它关注的…...
LiuJuan Z-Image Generator在内容创作中的落地:自媒体头像/封面图定制化生产方案
LiuJuan Z-Image Generator在内容创作中的落地:自媒体头像/封面图定制化生产方案 你是不是也遇到过这样的烦恼?想给自己的自媒体账号换个有辨识度的头像,或者为下一期视频设计一个吸引眼球的封面图,结果要么是找不到合适的素材&a…...
【开发小技巧】手把手调用腾讯 ClawHub 镜像分页搜索接口
【开发小技巧】手把手调用腾讯 ClawHub 镜像分页搜索接口 一、接口简介 如果你想在自己的项目里快速实现「技能列表检索」能力,这个接口非常适合做数据源。 接口地址:https://lightmake.site/api/skills请求方式:GET功能说明:分页…...
Windows下OpenClaw安装详解:Qwen3.5-9B接口对接避坑指南
Windows下OpenClaw安装详解:Qwen3.5-9B接口对接避坑指南 1. 为什么选择WindowsOpenClaw组合 去年开始接触AI自动化工具时,我尝试过不少方案,但要么需要复杂的Linux环境配置,要么对个人开发者不够友好。直到发现OpenClaw这个能在…...
