JavaWeb项目(包含SSM项目)部署到Linux云服务器

目录

一、云服务器环境部署

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数据库


一、云服务器环境部署

1、安装JDK

安装文件可以使用yum来安装,yumLinux下非常常用的一种包管理器,包管理器就好像我们手机里面的应用商店,直接在应用商店里面下载App。

查看JDK的命令为:

​yum list | grep jdk
  • yum list  表示列出可以安装的包
  • |  为管道,效果为把第一个命令的输出当做第二个命令的输入
  • grep 为筛选包含jdk关键字的结果

JavaWeb项目(包含SSM项目)部署到Linux云服务器_第1张图片

 选择安装jdk版本1.8,devel表示为开发版,x86_64为64位操作系统

安装JDK命令:

执行以下命令并在后续界面输入 y 表示确认下载

yum install java-1.8.0-openjdk-devel.x86_64

JavaWeb项目(包含SSM项目)部署到Linux云服务器_第2张图片

出现以上界面就安装成功JDK了。

2、安装Tomcat

2.1 安装步骤

查看Tomcat列表命令

yum list | grep tomcat

JavaWeb项目(包含SSM项目)部署到Linux云服务器_第3张图片

在筛选出来的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命令框中

JavaWeb项目(包含SSM项目)部署到Linux云服务器_第4张图片

对下载好的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

JavaWeb项目(包含SSM项目)部署到Linux云服务器_第5张图片

解压缩Tomcat压缩包后就可以启动Tomcat了,此时需要进入bin目录文件下的startup脚本

  • startup.bat 指在windows下运行
  • startup.sh 指在Linux下运行

因此我们就需要给.sh赋予可执行权限,使用如下命令:

chomd +x *.sh

所有的后缀为.sh全部变为了绿色,绿色表示可执行

JavaWeb项目(包含SSM项目)部署到Linux云服务器_第6张图片

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

和保姆级部署SpringBoot项目到服务器

在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);

JavaWeb项目(包含SSM项目)部署到Linux云服务器_第7张图片

 

2.2 修改部署项目连接数据库密码

JavaWeb项目(包含SSM项目)部署到Linux云服务器_第8张图片

 查看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中添加打包依赖

	jar
	
        mycnblog
    

// mycnblog为打包名字

双击moven中的package选项

JavaWeb项目(包含SSM项目)部署到Linux云服务器_第9张图片

得到一个mycnblog.jar压缩包

 ​​​​​​​JavaWeb项目(包含SSM项目)部署到Linux云服务器_第10张图片

 

2.4 将jar包打包上传云服务器

进入到根目录下,下载jar包拖拽命令rz

yum install lrzsz

执行上面命令后,j就可以直接将jar包就可以直接拖拽到命令框中了

JavaWeb项目(包含SSM项目)部署到Linux云服务器_第11张图片

使用命令ls,查看,如下图,有jar包存在,表明上传成功

 JavaWeb项目(包含SSM项目)部署到Linux云服务器_第12张图片

 

2.5 使用java指令运行项目jar包

此处命令为一次性命令,解决方法见下面说明原因

java -jar ***.jar  //***为你的jar包名

​​​​​​​

JavaWeb项目(包含SSM项目)部署到Linux云服务器_第13张图片

        这种启动方式是一次启动,当我们关掉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 

解决方法:阿里云轻量级服务器为例,配置防火墙规则如下图

JavaWeb项目(包含SSM项目)部署到Linux云服务器_第14张图片

 

你可能感兴趣的:(Linux,服务器,运维,linux)