目录
一、云服务器环境部署
1、安装JDK
查看JDK的命令为:
安装JDK命令:
2、安装Tomcat
2.1 安装步骤
2.2 验证Tomcat是否启动成功
3、安装MySQL
二、部署 Web 项目到 Linux
2.1 在云服务器中数据库建库建表
2.2 修改部署项目连接数据库密码
2.3 使用maven 进行打包
2.4 将jar包打包上传云服务器
2.5 使用java指令运行项目jar包
当我们构建完JavaWeb项目后,如果需要许多人来访问我们的项目,此时就需要将项目部署到服务器上,使用外网IP,此时大家就可以访问你的项目了。
在Linux云服务器上部署JavaWeb项目需要完成如下操作步骤:
1、安装JDK
2、安装Tomcat (若为SSM项目则可以跳过此步骤,因为Spring项目打包jar会自动打包Tomcat)
3、安装MySQL数据库
安装文件可以使用yum来安装,yum是Linux下非常常用的一种包管理器,包管理器就好像我们手机里面的应用商店,直接在应用商店里面下载App。
yum list | grep jdk
选择安装jdk版本1.8,devel表示为开发版,x86_64为64位操作系统
执行以下命令并在后续界面输入 y 表示确认下载
yum install java-1.8.0-openjdk-devel.x86_64
出现以上界面就安装成功JDK了。
查看Tomcat列表命令
yum list | grep tomcat
在筛选出来的Tomcat版本中发现Tomcat版本都太低,我们尽量选择Tomcat版本为8.0以上。因此我们就需要自己去Tomcat官网下载自己对应的版本。
我这里下载的Tomcat压缩包版本为 apache-tomcat-8.0.0-RC1.zip
如果我们需要将外部的文件上传到Linux系统中,可以将文件拖拽到命令框中,但在这之前需要安装Linux上传依赖的命令:
yum install lrzsz
直接将下载好的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脚本
因此我们就需要给.sh赋予可执行权限,使用如下命令:
chomd +x *.sh
所有的后缀为.sh全部变为了绿色,绿色表示可执行
1、启动Tomcat
sh startup.sh
2、验证Tomcat是否成功启动
方式一:查看端口号8080 是否被占用
netstat -anp | grep 8080
方式二:查看Tomcat 进程是否存在
ps aux | grep tomcat
接下来在云服务器里面安装MySQL详细步骤见以下2篇博客
文章:https://blog.csdn.net/qq_45441466/article/details/109670194
和保姆级部署SpringBoot项目到服务器
在xshell里面连接数据库命令为
mysql -uroot -p
退出数据库命令为: Ctrl键 + d
将个人项目的数据库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);
查看MySQL 的端口号命令:
netstat -anp | grep mysql
可以看到我们下载的Mysql的端口号为3306
打包有jar和war包两种方式。
jar包: SpringBoot官网提到最多的是使用jar打包,tomcat一起打进去了,直接java -jar …your.jar就可以了。
war包: 当你要部署到自己安装的weblogic、Tomcat里,这种传统方式通常使用war包。
我这里演示使用SpringBoot项目来上传云服务器
在pom.xml中添加打包依赖
jar
mycnblog
// mycnblog为打包名字
双击moven中的package选项
得到一个mycnblog.jar压缩包
进入到根目录下,下载jar包拖拽命令rz
yum install lrzsz
执行上面命令后,j就可以直接将jar包就可以直接拖拽到命令框中了
使用命令ls,查看,如下图,有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
解决方法:阿里云轻量级服务器为例,配置防火墙规则如下图