文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

spring boot项目部署到ubuntu服务器详细教程

2023-09-09 10:51

关注

1.准备

IDEA;

开发好的SpringBoot项目;

Ubuntu服务器;

2.将项目打包,利用IDEA的打包功能,这里以jar文件为例

SpringBoot官方推荐打成jar包,服务器上有JDK 1.8以上环境就可以直接运行;

首先在pom.xml文件里面添加:

点击右侧的maven,如果右侧没有的话鼠标放在IDEA左下角进行添加,然后package;

      

 可以看到,打包完成后的jar文件放在了target目录里面;

 2.将打包好的jar文件上传到Ubuntu服务器

 3.如果Ubuntu上安装jdk,这里以jdk1.8为例

打卡终端,输入java会提示我们各个版本的安装方法,我们要装jdk1.8版本所以进行下面的操作;

apt install openjdk-8-jre-headless

 等待安装完成后查看版本;

java -version

4.安装MySQL

由于我的项目要导入的数据库中有rank表格,而rank是MySQL版本8.0.2中定义的MySQL保留字。因此,不能将rank用作列名和表名;

故我们选择更为稳定的mysql5.7版本,本文以5.7.31为例;

但是Ubuntu中全自动安装MySQL默认安装最高版本,想要安装5.7版本就需要去官网手动下载安装包解压安装,比较麻烦,所以我们可以在docker中安装mysql;

安装docker,可以使用官方安装脚本自动安装;

 curl -fsSL https://test.docker.com -o test-docker.sh sudo sh test-docker.sh

卸载docker;

sudo apt-get purge docker-ce#删除安装包sudo rm -rf /var/lib/docker#删除镜像、容器、配置文件等内容

在docker中安装mysql;

拉取指定5.7.31版本mysql的镜像;

sudo docker pull mysql:5.7.31

查看是否已经拉取到镜像;

docker images

 镜像拉取完成后,用该镜像创建mysql实例,使用下面的命令来创建;

docker run -p 3306:3306 --name mysql --restart=always --privileged=true \-v /usr/local/mysql/log:/var/log/mysql \-v /usr/local/mysql/data:/var/lib/mysql \-v /usr/local/mysql/conf:/etc/mysql \-e MYSQL_ROOT_PASSWORD=Chen -d mysql:5.7.31#-p 3306:3306:指定宿主机端口与容器端口映射关系#--name mysql:创建的容器名称#--restart=always:总是跟随docker启动#--privileged=true:获取宿主机root权限#-v /usr/local/mysql/log:/var/log/mysql:映射日志目录,宿主机:容器#-v /usr/local/mysql/data:/var/lib/mysql:映射数据目录,宿主机:容器#-v /usr/local/mysql/conf:/etc/mysql:映射配置目录,宿主机:容器#-e MYSQL_ROOT_PASSWORD=Chen:指定mysql环境变量,root用户的密码为Chen#-d mysql:latest:后台运行mysql容器,版本是5.7.31。

通过docker ps查看所有正在运行的容器,docker ps -a是查看所有容器,没在运行的也能看到;

现在我们将sql脚本文件拷贝到mysql容器内部的home下的temp文件内,不然的话在容器内读取不到sql脚本;

sudo docker cp /home/chen/exam_system.sql 57d6500d91df:/home/#其中57d6500d91df是MySQL容器的id

 进入容器;

docker exec -it mysql /bin/bash

登录mysql;

mysql -u root -pChen

创建数据库;

create database exam_system;

查看所有数据库;

show databases; 

可以看到刚刚创建的数据库已经有了,切换到对应的数据库下;

use exam_system;

运行如下命令执行存放在mysql容器内的SQL文件;

source /home/exam_system.sql;

查看数据库中的表格;

show tables;

数据库中的表格均导入完成; 

退出数据库;退出容器;

exit;exit

5.安装redis

使用命令进行安装;

sudo apt-get install redis-server

6.运行jar包

 在Ubuntu中打开jar包编辑/BOOT-INF/classes/内的配置文件application.yml修改数据库配置;

因为我们使用的是docker中的数据库注意url中的localhost改为docker的地址,此处为172.17.0.1;

接着可以直接java -jar exam-admin-0.0.1-SNAPSHOT.jar运行;

此时访问我们设置的端口就能访问到了;

但是上述方法在命令窗口关闭时,服务进程就被杀死了,即服务不存在;

如果想要在关闭窗口后服务仍在后台运行,可以nohup;

nohup java -jar exam-admin-0.0.1-SNAPSHOT.jar >temp.txt 2>&1&#nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行#这种方法会把日志文件输入到你指定的文件中(temp.txt)#在哪个目录下运行的该日志文件就会在哪个目录下,没有指定具体文件则会自动创建(nohup.out)#& 表示后台运行

运行过程中出现的问题可以在temp.txt文件中查看;

前面我们提到更改数据库的配置文件,如果修改后在运行过程中依然出现报错:SpringBoot SpringCloud项目启动mysql报错Access denied for user ‘root‘@‘172.17.0.1‘ (using password: YES)

那么我们需要进入mysql,配置mysql允许远程连接;

mysql -uroot -pChen#登陆mysql,输入密码grant all privileges on *.* to 'root'@'%' identified by 'Chen' with grant option;#开启root用户远程访问权限,登录名为root 密码为Chen(注意用户密码都需要单引号)flush privileges;#刷新权限

运行成功后,输入jobs会列出在后台执行的作业;

 查看某端口占用的线程的pid;

netstat -nlp |grep :8888

关闭进程;

kill pid

来源地址:https://blog.csdn.net/weixin_44086476/article/details/129974531

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯