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-安装
  1. JDK11官网下载 建议安装11因为如果安装Jenkins最新版本只支持JDK11/17; 查询本机架构 hostnamectl 根据信息下载具体版本. JDK8百度网盘下载 mx1f
#查询架构信息 
hostnamectl
#根据信息下载具体版本 例如Architecture: x86-64下载 x64的

tar.gz

  1. yum安装后面依赖缺少时还要重新配置环境变量(安装好可以忽略) 推荐压缩包下载安装.
二.JDK-环境配置
  1. 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
  1. 检验
#生效配置
source /etc/profile
#检查安装成功?
java -version

JDK卸载

  1. 压缩包方式卸载.
#压缩包方式卸载删除解压目录和环境配置即可
#(1)查看是否已安装jdk  
rpm -qa | grep jdk
#删除查询到的文件
#(2)查看jdk版本
java -version
#(3删除jdk及其配置环境
  1. 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安装

  1. 下载Tomcat9-core

版本兼容

  1. 安装: 下载**tomcat9 **(10版本会报错不知道为啥)-core 解压 查看状态 ps -ef |grep tomcat

image.png

  1. 部署项目时配置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
image.png

export JAVA_HOME=/usr/local/java/jdk11
export JRE_HOME=/usr/local/java/jdk11

MySQL安装

云安装5.7版本参考, 压缩下载~~ 选择 Compressed TAR Archive 选择Linux -通用 ; x86 64~~

  1. 卸载旧版本mariadb
如下命令以此执行  卸载旧版本mysql  mariadb
rpm -qa|grep mari
rpm -e --nodeps mariadb-libs
rpm -qa|grep mari
  1. 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
  1. 启动/状态
#启动
mysql systemctl start mysqld.service   
#查看mysql状态
systemctl status mysqld.service
#关闭1 cd 到 bin
./mysqladmin -u root -p shutdown
#关闭2
service mysqld stop
  1. 初始化mysql
    1. 查看密码 grep "password" /var/log/mysqld.log
    2. mysql -uroot -p 修改密码: set password for 'root'@'localhost' = password('自定义密码');
    3. 方便远程连接 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/ 下

f3eaa17c999e7c2bdaa111e0dc60e29.png

# 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的管理平台页面

0997a8990dd0500bc29202c84c5dfc3.png
下面的错误是 自己创建的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)

部署项目注意事项

  1. tomcat 服务器 添加 docBase指定项目的路径, <Connector port="80" ..../> 端口修改为80 以便访问时不需要带上端口号,前端请求ip也要设置为80端口
  2. 前端请求后端ip地址 VITE_APP_API_BASEURL = http://ip(本地ip或者公网ip或者域名)/blog **/blog **指的是tomcat的war包名称 因为tomcat访问时 需要加上项目名称.
  3. 部署时先停掉服务在部署.
  4. 访问前端index.html页面, 配置后端, 编写一个@Controller 方法上@GetMapping("/") 表示访问ip地址 , 通过重定向 , 访问服务器下的前端dist包下index.html; return"/dist/index.html".

项目部署时注意问

  1. minio访问出错问题

浏览器访问图片提示Net::ERR_CONNECTION_RESET,查看地址是127.0.0.1, 部署云以后 只能通过公网ip才可以访问到minio的资源,所以修改minio配置文件, 修改,minio的ip地址 endpoint: http://公网ip : 端口(默认9000), 这样上传文件时前缀名字存储时就是公网ip了,访问时通过公网访问minio资源.

  1. 前端请求后端ip出错

前端封装的axios.js 的ip修改为 [ 公网ip:80/项目名称 **] **端口就可以访问后端了.

  1. 阿里云 安全组 需要注意一些外部访问的权限,比如minio平台管理页面端口

minio和tomcat 提取码:6ms8

tomcatSSL配置.zip

posted @ 2023-07-29 22:28  三只坚果  阅读(309)  评论(0编辑  收藏  举报