Centos环境部署SpringBoot项目
centos | JDK | Jenkins | maven | tomcat | git | myslq | nginx |
---|---|---|---|---|---|---|---|
7.9 | 11.0.19 | 2.418 | 3.8.1 | 9.0.78 | 2.34.4 | 5.7.26 | 1.24.0 |
域名申请完成 DNS域名解析绑定 对象存储minio(建议换成云存储OSS)
JDK压缩包安装
一.JDK-安装
- JDK11官网下载 建议安装11因为如果安装Jenkins最新版本只支持JDK11/17; 查询本机架构 hostnamectl 根据信息下载具体版本. JDK8百度网盘下载 mx1f
#查询架构信息
hostnamectl
#根据信息下载具体版本 例如Architecture: x86-64下载 x64的
- yum安装后面依赖缺少时还要重新配置环境变量(安装好可以忽略) 推荐压缩包下载安装.
二.JDK-环境配置
- JDK11环境配置
注意JDK11没有jre 目录解压后其实就是jre
#Java11 Environment
#解压目录
export JAVA_HOME=/usr/local/java/jdk11
#指向解压目录即可
export JRE_HOME=/usr/local/java/jdk11
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH:$HOME/bin
~~JDK8环境配置 ~~/etc/profile
export JAVA_HOME=/usr/local/java/jdk8
export JRE_HOME=/usr/local/java/jdk8/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
- 检验
#生效配置
source /etc/profile
#检查安装成功?
java -version
JDK卸载
- 压缩包方式卸载.
#压缩包方式卸载删除解压目录和环境配置即可
#(1)查看是否已安装jdk
rpm -qa | grep jdk
#删除查询到的文件
#(2)查看jdk版本
java -version
#(3删除jdk及其配置环境
- yum安装的java,采用yum卸载.
#java -version 查询版本
#卸载所有openjdk相关文件输入
yum -y remove 版本*
#卸载tzdata-java
yum -y remove tzdata-java.noarch
#删除关于java的配置
vi /etc/profile
#立刻生效
source /etc/profile
#此时查不到
java -version
常用命令
常用命令 | 命令 | 备注 |
---|---|---|
解压 | tar -vxzf xxx |
- tar –xvf file.tar 解压 tar包
- tar -xzvf file.tar.gz 解压tar.gz
-v:显示所有过程
-x:解压
-z:有gzip属性的
-f: 使用档案名字,参数是最后一个参数后面只能接档案名 |
| 查询 | rpm -qa | grep xxx | -qa代表query,a代表all |
| 查询环境变量 | echo $JRE_HOME | |
| 环境立刻生效 | source /etc/profile | |
| 查询java版本 | java -version | |
遇到Tomcat启动失败问题 The JRE_HOME environment variable is not defined correctly
原因: 没有配置JRE_HOME
查看 JRE_HOME echo $JRE_HOME
解决: profile文件配置 export JRE_HOME=/usr/local/java/jdk11
sudo find / -name .bashrc
TomCat安装
- 安装: 下载**tomcat9 **(10版本会报错不知道为啥)-core 解压 查看状态 ps -ef |grep tomcat
- 部署项目时配置server.xml
添加到 里面 docBase指定项目路径*
<Context path="" docBase="/usr/local/tomcat/apache-tomcat-10.1.11/webapps/blog"/>
如果环境变量没生效再配置/usr/local/tomcat/apache-tomcat-10.1.11/bin/setclasspath.sh
export JAVA_HOME=/usr/local/java/jdk11
export JRE_HOME=/usr/local/java/jdk11
MySQL安装
云安装5.7版本参考, 压缩下载~~ 选择 Compressed TAR Archive 选择Linux -通用 ; x86 64~~
- 卸载旧版本mariadb
如下命令以此执行 卸载旧版本mysql mariadb
rpm -qa|grep mari
rpm -e --nodeps mariadb-libs
rpm -qa|grep mari
- Wget安装mysql5.7.26 , 确定好安装目录后
#下载
wget -c http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
#解压
tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
#顺序安装依赖
rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.26-1.el7.x86_64.rpm
- 启动/状态
#启动
mysql systemctl start mysqld.service
#查看mysql状态
systemctl status mysqld.service
#关闭1 cd 到 bin
./mysqladmin -u root -p shutdown
#关闭2
service mysqld stop
- 初始化mysql
- 查看密码 grep "password" /var/log/mysqld.log
- mysql -uroot -p 修改密码: set password for 'root'@'localhost' = password('自定义密码');
- 方便远程连接 grant all privileges on . to 'root'@'%' identified by '自定义密码' with grant option;
MinIO的安装
安装MinIO操作文档 Binary下载 , 按照官网的路径配置比较快
下载minio
wget https://dl.min.io/server/minio/release/linux-amd64/minio
修改minio的权限
chmod +x minio
移动下载的文件 到此文件夹下
sudo mv minio /usr/local/bin/
创建minio.service 放到/etc/systemd/system/ 目录下 推荐使用MobaXterm操作方便,可视化操作
[Unit]
Description=MinIO
Documentation=https://min.io/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target
# 指的是下载的压缩 minio 文件路径 最后一个指的是文件
AssertFileIsExecutable=/usr/local/bin/minio
# 添加用户和分组后面会操作无需改动
[Service]
WorkingDirectory=/usr/local
User=minio-user
Group=minio-user
# 此文件需要注释掉 不识别此标识
# ProtectProc=invisible
#环境配置 需要创建一个minio文件 位置在 /etc/default/ 下
EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
# 启动命令
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
# MinIO RELEASE.2023-05-04T21-44-30Z adds support for Type=notify (https://www.freedesktop.org/software/systemd/man/systemd.service.html#Type=)
# This may improve systemctl setups where other services use `After=minio.server`
# Uncomment the line to enable the functionality
# Type=notify
# Let systemd restart this service always
Restart=always
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536
# Specifies the maximum number of threads this process can create
TasksMax=infinity
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
# Built for ${project.name}-${project.version} (${project.name})
创建环境变量 minio 文件无后缀只是个文件类型, 位置在/etc/default/ 下
# MINIO_ROOT_USER and MINIO_ROOT_PASSWORD sets the root account for the MinIO server.
# This user has unrestricted permissions to perform S3 and administrative API operations on any resource in the deployment.
# Omit to use the default values 'minioadmin:minioadmin'.
# MinIO recommends setting non-default values as a best practice, regardless of environment
# 配置登录账号和密码
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin
# MINIO_VOLUMES sets the storage volume or path to use for the MinIO server.
# 注意自己创建的文件,权限设置为777要不然报 file access denied ; 用来存放minio上传的文件,也可自行设置路径
MINIO_VOLUMES="/mnt/data"
# MINIO_SERVER_URL sets the hostname of the local machine for use with the MinIO Server
# MinIO assumes your network control plane can correctly resolve this hostname to the local machine
# 该值替换为本地计算机的正确主机名和 MinIO 服务器的端口(默认为 9000)查看端口 ip addr list xxx/20的就是
MINIO_SERVER_URL="http://本地服务器ip:9000"
启动程序, 通过 journalctl -f -u minio.service 命令实时查看输出日志情况.
# 配置完后重新加载
systemctl daemon-reload
#启动minio
systemctl start minio.service
# 查看运行状态
sudo systemctl status minio.service
# 开启日志查看
journalctl -f -u minio.service
关闭minio
# systemctl stop minio.service
#开启开机自启
systemctl enable minio.service
连接minio ,运行成功后Console如下图 后面的ip地址后的端口添加到,安全组, 然后用公网ip+此端口访问minio的管理平台页面
下面的错误是 自己创建的data没有设置777权限,所以运行失败 ,一直调试好久,看着日志才能更好的定位问题;
Error: unable to rename (/mnt/data/.minio.sys/tmp -> /mnt/data/.minio.sys/tmp-old/47f17c32-df74-49d3-8151-a079655e2557) file access denied, drive may be faulty please investigate (*fmt.wrapError)
部署项目注意事项
- tomcat 服务器 添加
docBase指定项目的路径, <Connector port="80" ..../> 端口修改为80 以便访问时不需要带上端口号,前端请求ip也要设置为80端口 - 前端请求后端ip地址 VITE_APP_API_BASEURL = http://ip(本地ip或者公网ip或者域名)/blog **/blog **指的是tomcat的war包名称 因为tomcat访问时 需要加上项目名称.
- 部署时先停掉服务在部署.
- 访问前端index.html页面, 配置后端, 编写一个@Controller 方法上@GetMapping("/") 表示访问ip地址 , 通过重定向 , 访问服务器下的前端dist包下index.html; return"/dist/index.html".
项目部署时注意问
- minio访问出错问题
浏览器访问图片提示Net::ERR_CONNECTION_RESET,查看地址是127.0.0.1, 部署云以后 只能通过公网ip才可以访问到minio的资源,所以修改minio配置文件, 修改,minio的ip地址 endpoint: http://公网ip : 端口(默认9000), 这样上传文件时前缀名字存储时就是公网ip了,访问时通过公网访问minio资源.
- 前端请求后端ip出错
前端封装的axios.js 的ip修改为 [ 公网ip:80/项目名称 **] **端口就可以访问后端了.
- 阿里云 安全组 需要注意一些外部访问的权限,比如minio平台管理页面端口