前言
在服务器上运行springboot项目,需要有jdk环境,而此文的项目案例使用的数据库是mysql,所以也需要安装mysql,教程如下:
1.打包springboot单体项目
1.springboot单体小项目源码下载
项目代码地址:git@github.com:Crashinging/ssmp.git
2.打包流程
![](https://i-blog.csdnimg.cn/blog_migrate/725a37670aa81318cceb1110715cfd80.png)
![](https://i-blog.csdnimg.cn/blog_migrate/55e10b404a0cdf9bb949d5be3be6ade5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b3850cddde589caabe8ef158710c0c14.png)
![](https://i-blog.csdnimg.cn/blog_migrate/63b08af067ec361c3eb445b1df548019.png)
![](https://i-blog.csdnimg.cn/blog_migrate/84157aa32cfaccd598a5450471be1dde.png)
![](https://i-blog.csdnimg.cn/blog_migrate/55e10b404a0cdf9bb949d5be3be6ade5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/034edef86bd38ac44ca450918f5d115a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/55e10b404a0cdf9bb949d5be3be6ade5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/18161943892bc26d8ff43f9d36bd7296.png)
指令打包:mvn package
运行jar包:jar -jar 项目名.jar
注意:
- jar支持命令行启动需要依赖maven插件支持,请确认打包时是否具有SpringBoot对应的maven插件
![](https://i-blog.csdnimg.cn/blog_migrate/fa734efe9ff5c01a39a607a02eafe53e.png)
- 项目访问地址是:http://127.0.0.1:8099/pages/books.html
- 因为我在项目的配置文件中关闭了banner打印,并把日记级别设置为了warn,所以在控制台看不到输出信息,需要的同学可以按照下列注释修改。
# 将banner-mode改为on
spring:
main:
banner-mode: off
# 将root改为info
logging:
level:
root: warn
3.跳过打包过程中的测试流程
![](https://i-blog.csdnimg.cn/blog_migrate/a24243ea7920734c7a14473c1b3c07bd.png)
4.解决指令打包报错问题
打包指令: mvn package
![](https://i-blog.csdnimg.cn/blog_migrate/6b7ba835cf418d6c5b6bf20c88eaeefd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0f052fc6249c34ea071608a452d0123d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5646428f925b1de5862d037792860854.png)
![](https://i-blog.csdnimg.cn/blog_migrate/681a6a5b56d502b823ae87395aae5ec5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6168c4026fa71afbe4724dea86b89e07.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c3ad3ca04c5462ef922fe7361d168910.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3169083811008864237f69f146810cd2.png)
注意: 上述方法如果行不通,就把JAVA_HOME后面的 \bin 删掉,然后把mvn.cmd的 \bin 加回去。
5.两种打包方式对比(MANIFEST.MF)
指令打包:
Manifest-Version: 1.0
Implementation-Title: ssmp
Implementation-Version: 0.0.1-SNAPSHOT
Build-Jdk-Spec: 1.8
Created-By: Maven Jar Plugin 3.2.2
基于spring-boot-maven-plugin打包:
Manifest-Version: 1.0
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
Implementation-Title: ssmp
Implementation-Version: 0.0.1-SNAPSHOT
Spring-Boot-Layers-Index: BOOT-INF/layers.idx
Start-Class: com.example.SsmpApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Build-Jdk-Spec: 1.8
Spring-Boot-Version: 2.7.2
Created-By: Maven JAR Plugin 3.2.2
Main-Class: org.springframework.boot.loader.JarLauncher
jar启动器:org.springframework.boot.loader.JarLauncher
6.Windonws端口占用问题解决
# 查询端口
netstat -ano
# 查询指定端口
netstat -ano |findstr "端口号"
# 根据进程PID查询进程名称
tasklist |findstr "进程PID号"
# 根据PID杀死任务
taskkill /F /PID "进程PID号"
# 根据进程名称杀死任务
taskkill -f -t -im "进程名称"
演示:
![](https://i-blog.csdnimg.cn/blog_migrate/d6712bc5101bd9c4ac84ba90c063d901.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ed91db263c78ddb09fa94a9adbb72a75.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9375373ceb18378ce39e604813da7e8d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4e23aa9ac05c09871e990b43744957c4.png)
2.Linux启动boot工程
1.CentOS7安装jdk1.8
检索包含java的版本列表:
yum list java*
安装jdk1.8
yum install -y java-1.8.0-openjdk-devel.x86_64
![](https://i-blog.csdnimg.cn/blog_migrate/db93ba441a5a914a9aab84bcbef5fcec.png)
查看jdk版本
java -version
![](https://i-blog.csdnimg.cn/blog_migrate/f322206f845b75e2b10e1883e81c1530.png)
查看jdk安装位置的信息
# 查找java命令的位置
which java
# 查找列出该链接所指向的原始文件或目录
ls -l /usr/bin/java
# 查找目录
ls -l /etc/alternatives/java
![](https://i-blog.csdnimg.cn/blog_migrate/3fdaaa034c1dc4f8e8f13a99ed117cb2.png)
2.CentOS7安装mysql
下载安装指令(使用阿里云下载)
wget http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
rpm -ivh mysql57-community-release-el7-7.noarch.rpm
yum install -y mysql-server mysql-devel mysql
启动mysql,并查看初始密码:
# 启动mysql服务
systemctl start mysqld.service
# 查看mysql是否运行
systemctl status mysqld.service
# 查看mysql中root用户的初始密码
grep 'temporary password' /var/log/mysqld.log
![](https://i-blog.csdnimg.cn/blog_migrate/ff2eb73bc3a0ce7befff6faaac35a915.png)
登录mysql
mysql -uroot -p
![](https://i-blog.csdnimg.cn/blog_migrate/ac09ec4f83dbc9002b0a7a0e82c42c95.png)
更改root用户密码
- 直接修改会报错:不符合当前政策要求——长度≥8、数字、大写或小写、特殊字符
![](https://i-blog.csdnimg.cn/blog_migrate/8563f438a9fb2e185e16a4bdec0d80d1.png)
- 降低密码级别
-
- 报错:
![](https://i-blog.csdnimg.cn/blog_migrate/61f651ab41ec095255e1a0acfd0be0a3.png)
-
- 解决报错:修改 my.cnf ,重新启动mysql服务器以使新设置生效,在文件中添加如下代码:
![](https://i-blog.csdnimg.cn/blog_migrate/22488cf3e08a093eb856dd61156de1cf.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4b25d9fd9e2a08f5c3baef05b70a8aac.png)
plugin-load-add=validate_password.so
validate-password=FORCE_PLUS_PERMANENT
-
- 继续降低密码级别,并修改密码长度限制为≥5
- 继续降低密码级别,并修改密码长度限制为≥5
# 降低密码级别
set global validate_password_policy=0;
# 修改密码长度限制为≥5
set global validate_password_length=5;
# 修改mysql密码
alter user 'root'@'localhost' identified by 'admin';
3.配置腾讯云服务器MySQL端口
配置mysql端口可被访问
![](https://i-blog.csdnimg.cn/blog_migrate/a0d6068fa49dcadcdfd06df1a44a95e2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/860a0fc357a0e981973f03d8c156182d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a1d4e41482bf4ee923c7a0fdb9d4b410.png)
依旧无法访问:
解决方案:
- 启动mysql服务
systemctl start mysqldservice
- 登录mysql
mysql -uroot -p
- 查看数据库
show databases;
![](https://i-blog.csdnimg.cn/blog_migrate/95e48ffe4c1779c2a8d2825f920c2518.png)
- 切换到mysql数据库
use mysql;
- 查看mysql数据库的表
show tables;
- 查看user表字段信息
select user,host from user;
可以看到,只允许本地登录root用户,所以需要设置 host
![](https://i-blog.csdnimg.cn/blog_migrate/b7582081500d2959f93a0878de3d4491.png)
- 更改所有主机都可以登录root用户
update user set host='%' where user='root';
![](https://i-blog.csdnimg.cn/blog_migrate/9338274969f1411d05aba0f71a85fd52.png)
- 重启mysql
service mysqld restart
- 测试连接
![](https://i-blog.csdnimg.cn/blog_migrate/59eef3ba7c29fad9610172468b43a0f3.png)
顺便把8099端口一起打开了
![](https://i-blog.csdnimg.cn/blog_migrate/fe5af3557469b93503382a96d2b1ad5a.png)
4.数据库搭建
create database `spbt`;
use `spbt`;
create table `sp_book` (
`id` int primary key auto_increment comment '主键id',
`type` varchar(20) not null comment '书籍类型',
`name` varchar(30) not null comment '书籍名称',
`description` varchar(100) not null comment '书籍描述'
)default charset=utf8 comment '书籍表';
insert into `sp_book`(`type`,`name`,`description`)
values
('科幻','地球往事','《三体》三部曲第一部,作品讲述了地球人类文明和三体文明的信息交流、生死搏杀及两个文明在宇宙中的兴衰历程。'),
('科幻','黑暗森林','《三体》三部曲第二部,作品讲述了地球人类文明和三体文明的信息交流、生死搏杀及两个文明在宇宙中的兴衰历程。'),
('科幻','死神永生','《三体》三部曲第三部,作品讲述了地球人类文明和三体文明的信息交流、生死搏杀及两个文明在宇宙中的兴衰历程。'),
('仙侠','将夜','这本小说讲述的是一段可歌可泣可笑可爱的草根崛起史,一个物质要求宁滥勿缺的开朗少年行。小说基于修真世界,却又胜于修真,讲述了人定胜天,花开彼岸天的历史,引人深思。'),
('仙侠','雪中悍刀行','该小说讲述一个关于庙堂权争与刀剑交错的时代,一个暗潮涌动粉墨登场的江湖。'),
('都市','大国重工','国家重大装备办处长冯啸辰穿越到了1980年,看他如何与同代人一道,用汗水和智慧,铸就大国重工。'),
('架空','赘婿','本书主要讲述了主角从现代金融界巨头的身份回到了古代,进入一个商贾之家最没地位的赘婿身体后,涉及到一系列家国天下事的故事。'),
('科幻','北京折叠','该小说讲述北京在未来按照社会阶层被分成三个空间,生活在第三空间的垃圾工老刀穿越三层空间送信的故事。'),
('鬼怪','地煞七十二变','地煞七十二般变化,每一般变化,就是一项神通。一本神奇的黄壳书将李长安送回古代世界,每斩杀一个妖魔,就获得一项神通。'),
('魔幻','诡秘之主','作品融汇了克苏鲁风格、西方魔幻元素、第一次工业革命时代风情和蒸汽朋克情怀。这是一个蒸汽与机械的世界,这是一段“愚者”的传说。'),
('幻想','第一序列','作品讲述了主角任小粟通过吸收正能量一步步崛起,同时逐渐改变了世界的故事。'),
('人文','明朝那些事儿','作品主要讲述的是从1344年到1644年这三百年间关于明朝的一些故事 。'),
('人文','三国那些事儿','本书分为上下两篇,上篇为读者介绍了三国里的著名人物,下篇讲述了发生在这些人物身上的经典故事。'),
('都市','余罪','警校学生余罪从一场特殊的选拔开始,进入了生活和社会矛盾之中,成为一个卧底,是一种挑战,也是一种难以想象的痛苦生活的开始。'),
('科幻','安德的游戏','第三次虫族入侵已迫在眉睫,而地球舰队尚未找到任何抵抗的可能。世界即将毁灭。人类最后的救世主 ,是一个六岁的儿童——安德。'),
('科幻','死者代言人','安德遭遇了一起残忍而离奇的虐杀事件。安德隐匿身份,再次踏入一个异生物星球。随着调查的深入,他一步步走向异种生物的圈套,而真相,居然与他童年的那段回忆有千丝万缕的联系……'),
('科幻','安德的影子','当安德和队员们全力以赴挑战最后的难关时,只有一人早已知晓这背后残酷的真相。他是影子,在英雄如阳光照射大地之时,只有影子能承接必然尾随而至的黑暗。'),
('惊悚','我有一座冒险屋','作该作品讲述主人公陈歌在翻旧物时寻得黑色手机,在手机的指引下探寻世界的另一面。'),
('科幻','星门','传说,在那古老的星空深处,伫立着一道血与火侵染的红色之门。'),
('仙侠','凡人修仙传','小说讲述了一个普通的山村穷小子,偶然之下,跨入到一个江湖小门派,虽然资质平庸,但依靠自身努力和合理算计最后修炼成仙的故事。'),
('惊悚','地狱公寓','在这公寓内,如果住户房间的墙壁上出现了血字,住户就必须完成血字任务,一旦违背就会死亡。'),
('仙侠','求魔','该书主要讲述了主角苏铭不甘命运被掌控,与命运斗争的故事。修仙觅长生,热血任逍遥,踏莲曳波涤剑骨,凭虚御风塑圣魂。'),
('仙侠','仙逆','作该小说讲述的是一个平庸的少年,踏入仙途,如何一步一步走向巅峰,凭一己之力扬名修真界的故事。'),
('诗集','炸裂志','陈年喜以其平实婉转的文字,在诗句中建构了一个中年男人的世界,以白雪抗衡黑洞,以爱感悟生死,以诗超越世间。'),
('仙侠','大奉打更人','作者巧妙地将俗世朝堂背景,百家文化与仙侠修炼结合起来,并设计了一个个精妙的案件作为引线,一步步展现出了一个波澜壮阔的全新世界');
![](https://i-blog.csdnimg.cn/blog_migrate/766c3a991ce937541849e474595ab4ca.png)
5.上传jar包到CentOS7,并启动
使用Xftp上传:
![](https://i-blog.csdnimg.cn/blog_migrate/cbc21f8e567f08a3deeac02c80a18802.png)
运行: java -jar ssmp-0.0.1-SNAPSHOT.jar
![](https://i-blog.csdnimg.cn/blog_migrate/cbc21f8e567f08a3deeac02c80a18802.png)
![](https://i-blog.csdnimg.cn/blog_migrate/aaeaf35fdf534f7c9b9c138a4be5010d.png)
访问:
![](https://i-blog.csdnimg.cn/blog_migrate/ed64bfb1bbe92b63120cb69336b0c32c.png)
3.后台启动/关闭
1.启动
后台运行指令:
# 在后台执行 ssmp-0.0.1-SNAPSHOT.jar,并重定向输入到 server.log 文件,这个文件可以随意取名
nohup java -jar ssmp-0.0.1-SNAPSHOT.jar > server.log 2>&1 &
![](https://i-blog.csdnimg.cn/blog_migrate/0078b8600be9897d1edf80fb2534180f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fd0d6fc861daa0310accb074ce096577.png)
2.关闭
查询pid: ps -ef | grep "java -jar"
![](https://i-blog.csdnimg.cn/blog_migrate/172be2cc43be81f5b86fc7e023c0c2a3.png)
杀死进程: kill -9 11587
![](https://i-blog.csdnimg.cn/blog_migrate/8f1e5d63bc6b6c3a76a9368fd31cfce7.png)