目录
当我们构建完 JavaWeb 项目后 , 如果需要许多人来访问我们的项目 , 此时就需要将项目部署到服务器上 , 使用外网 IP, 此时大家就可以访问你的项目了。
在 Linux 云服务器上部署 JavaWeb 项目需要完成如下操作步骤 :
1、安装 JDK
2、安装 Tomcat ( 若为 SSM 项目则可以跳过此步骤 , 因为 Spring 项目打包 jar 会自动打包 Tomcat)
3、安装 MySQL 数据库
一、云服务器环境部署
1、安装 JDK
安装文件可以使用 yum 来安装 ,yum是 Linux 下非常常用的一种包管理器 , 包管理器就好像我们手机里面的应用商店 , 直接在应用商店里面下载 App。
查看 JDK 的命令为 :
yum list | grep jdk
- yum list 表示列出可以安装的包
- | 为管道 , 效果为把第一个命令的输出当做第二个命令的输入
- grep 为筛选包含 jdk 关键字的结果
选择安装 jdk 版本 1.8,devel 表示为开发版 ,x86_64 为 64 位操作系统
安装 JDK 命令 :
执行以下命令并在后续界面输入 y 表示确认下载
yum install java-1.8.0-openjdk-devel.x86_64
出现以上界面就安装成功 JDK 了。
2、安装 Tomcat
2.1 安装步骤
查看 Tomcat 列表命令
yum list | grep tomcat
在筛选出来的 Tomcat 版本中发现 Tomcat 版本都太低 , 我们尽量选择 Tomcat 版本为 8.0 以上。因此我们就需要自己去 Tomcat 官网下载自己对应的版本。
我这里下载的 Tomcat 压缩包版本为 apache-tomcat-8.0.0-RC1.zip
如果我们需要 将外部的文件上传到 Linux 系统中 , 可以将文件拖拽到命令框中 , 但 在这之前需要安装 Linux 上传依赖的命令 :
yum install lrzsz
- rz 命令 : 将 windows 上的文件传给 Linux 服务器
- sz 命令 : 将 Linux 上的文件传给 windows
直接将下载好的 Tomcat 版本压缩包文件拖拽到 xshell 命令框中
对下载好的 apache-tomcat-8.0.0-RC1.zip 进行解压缩
1、先执行解压缩的依赖命令
yum install unzip
2、执行解压缩文件apache-tomcat-8.0.0-RC1.zip
unzip apache-tomcat-8.0.0-RC1.zip
解压缩 Tomcat 压缩包后就可以启动 Tomcat 了 , 此时需要进入 bin 目录文件 下的 startup 脚本
- startup.bat 指在 windows 下运行
- startup.sh 指在 Linux 下运行
因此我们就需要给.sh 赋予可执行权限 , 使用如下命令 :
chomd +x *.sh
所有的后缀为.sh 全部变为了绿色 , 绿色表示可执行
2.2 验证 Tomcat 是否启动成功
1、启动 Tomcat
sh startup.sh
2、验证 Tomcat 是否成功启动
方式一 : 查看端口号 8080 是否被占用
netstat -anp | grep 8080
方式二 : 查看 Tomcat 进程是否存在
ps aux | grep tomcat
3、安装 MySQL
接下来在云服务器里面安装 MySQL 详细步骤见以下 2 篇博客
文章 :https://blog.csdn.net/qq_45441466/article/details/109670194
在 xshell 里面连接数据库命令为
mysql -uroot -p
退出数据库命令为: Ctrl 键 + d
二、部署 Web 项目到 Linux
2.1 在云服务器中数据库建库建表
将个人项目的数据库 sql 文件复制到云服务器中的数据库里面
以我自己部署的个人博客项目为例 :
-- 创建数据库 drop database if exists mycnblog; create database mycnblog DEFAULT CHARACTER SET utf8mb4; -- 使用数据数据 use mycnblog; DROP TABLE IF EXISTS `articleinfo`; CREATE TABLE `articleinfo` (`id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `createtime` datetime NULL DEFAULT CURRENT_TIMESTAMP, `updatetime` datetime NULL DEFAULT CURRENT_TIMESTAMP, `uid` int(11) NOT NULL, `rcount` int(11) NOT NULL DEFAULT 1, `state` int(11) NULL DEFAULT 1, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of articleinfo -- ---------------------------- INSERT INTO `articleinfo` VALUES (5, ' 第一篇文章 ', '# 这是第一篇文章 \n 哈我一定要去看看那美丽的西湖 , 说到西湖 , 我脑海里就浮现出那绿油油的大树 ,', '2023-07-06 16:53:31', '2023-07-06 18:21:52', 17, 12, 1); INSERT INTO `articleinfo` VALUES (6, ' 第二篇文章 ', '# 这是第二篇文章 \n 这是什么声音? 是我们班正在玩的游戏 , 你猜是什么游戏? 对了 , 就是吹气球! 吹气球游戏开始了,\n', '2023-07-06 16:54:28', '2023-07-06 16:54:28', 17, 1, 1); INSERT INTO `articleinfo` VALUES (7, ' 第三篇文章 ', '# 在这里写下一篇博客 \n 哈哈哈哈哈哈哈哈接啊哈哈哈哈哈 ', '2023-07-06 16:54:54', '2023-07-06 16:54:54', 17, 1, 1); INSERT INTO `articleinfo` VALUES (8, ' 第四篇文章 ', '# 在这里写下一篇博客 \n 你们知道这是谁吗? 这就是我的姐姐。她今年十岁 , 高高的个子 , 长长的头发 , 一双水汪汪的大眼睛,', '2023-07-06 16:55:32', '2023-07-06 16:55:32', 17, 1, 1); INSERT INTO `articleinfo` VALUES (9, ' 第五篇文章 ', '# 这是第五篇文章 \n 在数字化时代 , 技术的发展给各行各业带来了巨大的改变 , 包括写作领域。传统的人工写作已经逐渐被 AI 文章生成器所取代 , 为我们提供了更便捷和高效的写作体验。今天 , 我将为大家推荐五款优秀的免费版文章生成器 , 它们能够帮助你实现自动化写作 , 解放你的时间和精力。', '2023-07-06 16:56:18', '2023-07-06 16:56:18', 17, 1, 1); INSERT INTO `articleinfo` VALUES (10, ' 第六篇文章 ', '# 在这里写下一篇博客 \n1111', '2023-07-06 17:30:23', '2023-07-06 17:30:23', 17, 1, 1); -- ---------------------------- -- Table structure for userinfo -- ---------------------------- DROP TABLE IF EXISTS `userinfo`; CREATE TABLE `userinfo` (`id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `photo` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '', `createtime` datetime NULL DEFAULT CURRENT_TIMESTAMP, `updatetime` datetime NULL DEFAULT CURRENT_TIMESTAMP, `state` int(11) NULL DEFAULT 1, PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `username`(`username`) USING BTREE, UNIQUE INDEX `username_2`(`username`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of userinfo -- ---------------------------- INSERT INTO `userinfo` VALUES (1, 'admin', '7517b8aa67a2483ba8835cd3baa92ee0$27b4681cf298f199817c8cce79bf38f3', '', '2021-12-06 17:10:48', '2021-12-06 17:10:48', 1); INSERT INTO `userinfo` VALUES (15, ' 张三 ', '7f6e6e1ee2af49288531e10c960d3cdc$211916150ec1fda2f2e01a262d94e1a2', '', '2023-07-04 22:34:16', '2023-07-04 22:34:16', 1); INSERT INTO `userinfo` VALUES (17, ' 是烟花哈 ', '7517b8aa67a2483ba8835cd3baa92ee0$27b4681cf298f199817c8cce79bf38f3', '', '2023-07-06 16:47:13', '2023-07-06 16:47:13', 1); -- ---------------------------- -- Table structure for videoinfo -- ---------------------------- DROP TABLE IF EXISTS `videoinfo`; CREATE TABLE `videoinfo` (`vid` int(11) NOT NULL, `title` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `url` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `createtime` datetime NULL DEFAULT CURRENT_TIMESTAMP, `updatetime` datetime NULL DEFAULT CURRENT_TIMESTAMP, `uid` int(11) NULL DEFAULT NULL, PRIMARY KEY (`vid`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of videoinfo -- ---------------------------- INSERT INTO `videoinfo` VALUES (1, 'java title', 'http://www.baidu.com', '2023-06-28 10:44:44', '2023-06-28 10:44:44', 1);
2.2 修改部署项目连接数据库密码
查看 MySQL 的端口号命令 :
netstat -anp | grep mysql
可以看到我们下载的 Mysql 的端口号为 3306
2.3 使用 maven 进行打包
打包有 jar 和 war 包两种方式。
jar 包 : SpringBoot 官网提到最多的是使用 jar 打包 ,tomcat 一起打进去了 , 直接 java -jar …your.jar 就可以了。
war 包 : 当你要部署到自己安装的weblogic、Tomcat 里 , 这种传统方式通常使用 war 包。
我这里演示使用 SpringBoot 项目来上传云服务器
在 pom.xml 中添加打包依赖
<packaging>jar</packaging> <build> <finalName>mycnblog</finalName> </build> // mycnblog 为打包名字
双击 moven 中的 package 选项
得到一个 mycnblog.jar 压缩包
2.4 将 jar 包打包上传云服务器
进入到根目录下 , 下载 jar 包拖拽命令 rz
yum install lrzsz
执行上面命令后 ,j 就可以直接将 jar 包就可以直接拖拽到命令框中了
使用命令 ls, 查看 , 如下图 , 有 jar 包存在 , 表明上传成功
2.5 使用 java 指令运行项目 jar 包
此处命令为一次性命令 , 解决方法见下面说明原因
java -jar ***.jar //*** 为你的 jar 包名
这种启动方式是一次启动 , 当我们关掉 Xshell 的时候 , 我们的网站又访问不上了 , 又得重新打开 Xshell, 执行 java -jar ***.jar。所以我们要使用下面的方法让这个项目在服务器上自动不间断地跑.
因此需要修改命令运行项目 jar 包 :
nohup java -jar ***.jar & //*** 为你的 jar 包名
当使用 nohup 的时候 , 一般会出现问题 当你 输入 nohup –version 时 , 会出现
nohup: missing operand
这个标志 说明 , 没有配置 nohup , 系统目前还不认识这个命令。
推荐 看这篇 博客 可以很完美的解决这个问题。
现在 , 默认你配置好了 nohup , 那么现在就开始放大招了。
nohup java -jar xxx.jar & # 这个时候就可以 不挂断运行了
但是 , 到这个时候 , 可能还会出现一个问题
# nohup: ignoring input and appending output to‘nohup.out’
出现这个之后 , 不用管 , 直接回车。会出现
Exit 1 nohup java -jar ludans.jar [root@iZ2zehpy6o4zloocwwg9tsZ home]# # nohup: ignoring input and appending output to‘nohup.out’
这个问题 , 简单描述 , 就是 忽略输入并将输出附加到“nohup.out”文件中。
这时候再在浏览器中输入 公网 IP:8800/ 项目界面文件 html
如果出现输入公网 IP:8080 , 无法运行项目 , 此时需要考虑云服务器是否放开端口号 8080 以及 3306
解决方法 : 阿里云轻量级服务器为例 , 配置防火墙规则如下图
原文链接:https://blog.csdn.net/qq_73471456/article/details/131604863