当前位置:   article > 正文

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

java项目部署到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关键字的结果

 选择安装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

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

在xshell里面连接数据库命令为

mysql -uroot -p

退出数据库命令为: Ctrl键 + d

二、部署 Web 项目到 Linux

2.1  在云服务器中数据库建库建表

将个人项目的数据库sql文件复制到云服务器中的数据库里面

以我自己部署的个人博客项目为例:

  1. -- 创建数据库
  2. drop database if exists mycnblog;
  3. create database mycnblog DEFAULT CHARACTER SET utf8mb4;
  4. -- 使用数据数据
  5. use mycnblog;
  6. DROP TABLE IF EXISTS `articleinfo`;
  7. CREATE TABLE `articleinfo` (
  8. `id` int(11) NOT NULL AUTO_INCREMENT,
  9. `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  10. `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  11. `createtime` datetime NULL DEFAULT CURRENT_TIMESTAMP,
  12. `updatetime` datetime NULL DEFAULT CURRENT_TIMESTAMP,
  13. `uid` int(11) NOT NULL,
  14. `rcount` int(11) NOT NULL DEFAULT 1,
  15. `state` int(11) NULL DEFAULT 1,
  16. PRIMARY KEY (`id`) USING BTREE
  17. ) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
  18. -- ----------------------------
  19. -- Records of articleinfo
  20. -- ----------------------------
  21. INSERT INTO `articleinfo` VALUES (5, '第一篇文章', '# 这是第一篇文章\n哈我一定要去看看那美丽的西湖,说到西湖,我脑海里就浮现出那绿油油的大树,', '2023-07-06 16:53:31', '2023-07-06 18:21:52', 17, 12, 1);
  22. INSERT INTO `articleinfo` VALUES (6, '第二篇文章', '# 这是第二篇文章\n这是什么声音?是我们班正在玩的游戏,你猜是什么游戏?对了,就是吹气球!吹气球游戏开始了,\n', '2023-07-06 16:54:28', '2023-07-06 16:54:28', 17, 1, 1);
  23. INSERT INTO `articleinfo` VALUES (7, '第三篇文章', '# 在这里写下一篇博客\n哈哈哈哈哈哈哈哈接啊哈哈哈哈哈', '2023-07-06 16:54:54', '2023-07-06 16:54:54', 17, 1, 1);
  24. INSERT INTO `articleinfo` VALUES (8, '第四篇文章', '# 在这里写下一篇博客\n你们知道这是谁吗?这就是我的姐姐。她今年十岁,高高的个子,长长的头发,一双水汪汪的大眼睛,', '2023-07-06 16:55:32', '2023-07-06 16:55:32', 17, 1, 1);
  25. INSERT INTO `articleinfo` VALUES (9, '第五篇文章', '# 这是第五篇文章\n在数字化时代,技术的发展给各行各业带来了巨大的改变,包括写作领域。传统的人工写作已经逐渐被AI文章生成器所取代,为我们提供了更便捷和高效的写作体验。今天,我将为大家推荐五款优秀的免费版文章生成器,它们能够帮助你实现自动化写作,解放你的时间和精力。', '2023-07-06 16:56:18', '2023-07-06 16:56:18', 17, 1, 1);
  26. INSERT INTO `articleinfo` VALUES (10, '第六篇文章', '# 在这里写下一篇博客\n1111', '2023-07-06 17:30:23', '2023-07-06 17:30:23', 17, 1, 1);
  27. -- ----------------------------
  28. -- Table structure for userinfo
  29. -- ----------------------------
  30. DROP TABLE IF EXISTS `userinfo`;
  31. CREATE TABLE `userinfo` (
  32. `id` int(11) NOT NULL AUTO_INCREMENT,
  33. `username` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  34. `password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  35. `photo` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '',
  36. `createtime` datetime NULL DEFAULT CURRENT_TIMESTAMP,
  37. `updatetime` datetime NULL DEFAULT CURRENT_TIMESTAMP,
  38. `state` int(11) NULL DEFAULT 1,
  39. PRIMARY KEY (`id`) USING BTREE,
  40. UNIQUE INDEX `username`(`username`) USING BTREE,
  41. UNIQUE INDEX `username_2`(`username`) USING BTREE
  42. ) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
  43. -- ----------------------------
  44. -- Records of userinfo
  45. -- ----------------------------
  46. INSERT INTO `userinfo` VALUES (1, 'admin', '7517b8aa67a2483ba8835cd3baa92ee0$27b4681cf298f199817c8cce79bf38f3', '', '2021-12-06 17:10:48', '2021-12-06 17:10:48', 1);
  47. INSERT INTO `userinfo` VALUES (15, '张三', '7f6e6e1ee2af49288531e10c960d3cdc$211916150ec1fda2f2e01a262d94e1a2', '', '2023-07-04 22:34:16', '2023-07-04 22:34:16', 1);
  48. INSERT INTO `userinfo` VALUES (17, '是烟花哈', '7517b8aa67a2483ba8835cd3baa92ee0$27b4681cf298f199817c8cce79bf38f3', '', '2023-07-06 16:47:13', '2023-07-06 16:47:13', 1);
  49. -- ----------------------------
  50. -- Table structure for videoinfo
  51. -- ----------------------------
  52. DROP TABLE IF EXISTS `videoinfo`;
  53. CREATE TABLE `videoinfo` (
  54. `vid` int(11) NOT NULL,
  55. `title` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  56. `url` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  57. `createtime` datetime NULL DEFAULT CURRENT_TIMESTAMP,
  58. `updatetime` datetime NULL DEFAULT CURRENT_TIMESTAMP,
  59. `uid` int(11) NULL DEFAULT NULL,
  60. PRIMARY KEY (`vid`) USING BTREE
  61. ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
  62. -- ----------------------------
  63. -- Records of videoinfo
  64. -- ----------------------------
  65. 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中添加打包依赖

  1. <packaging>jar</packaging>
  2. <build>
  3. <finalName>mycnblog</finalName>
  4. </build>
  5. // 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 ,那么现在就开始放大招了。

  1. nohup java -jar xxx.jar &
  2. # 这个时候就可以 不挂断运行了

但是,到这个时候,可能还会出现一个问题

# nohup: ignoring input and appending output to ‘nohup.out’

出现这个之后,不用管,直接回车。会出现

  1. Exit 1 nohup java -jar ludans.jar
  2. [root@iZ2zehpy6o4zloocwwg9tsZ home]# # nohup: ignoring input and appending output to ‘nohup.out’

这个问题,简单描述,就是 忽略输入并将输出附加到“nohup.out”文件中。

这时候再在浏览器中输入 公网IP:8800/项目界面文件html

  

 如果出现输入公网IP:8080 ,无法运行项目,此时需要考虑云服务器是否放开端口号8080以及3306 

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

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/282959?site
推荐阅读
相关标签
  

闽ICP备14008679号