IDEA;
开发好的SpringBoot项目;
Ubuntu服务器;
SpringBoot官方推荐打成jar包,服务器上有JDK 1.8
以上环境就可以直接运行;
首先在pom.xml文件里面添加:
点击右侧的maven,如果右侧没有的话鼠标放在IDEA左下角进行添加,然后package;
可以看到,打包完成后的jar文件放在了target目录里面;
打卡终端,输入java会提示我们各个版本的安装方法,我们要装jdk1.8版本所以进行下面的操作;
apt install openjdk-8-jre-headless
等待安装完成后查看版本;
java -version
由于我的项目要导入的数据库中有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
使用命令进行安装;
sudo apt-get install redis-server
在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>&1nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行#这种方法会把日志文件输入到你指定的文件中(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