云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

centos7 系统安装部署应用(centos7安装详解)

jxf315 2025-06-28 14:50:17 教程文章 1 ℃

最近公司有个项目需上线,记录下系统安装,应用部署过程。

1、安装系统centos7.9最小化安装

2、安装基本工具:

由于基本配置yum文件不能使用,我这边使用阿里云yum仓库进行替代

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all  # 清理原有缓存
yum makecache  # 生成阿里云源缓存
yum -y install wget epel-release rsync net-tools

安装mysql数据库,卸载一些不必要的软件:

yum -y remove postfix 
rpm -e mariadb-libs-5.5.68-1.el7.x86_64

3、安装数据库mysql:

mkdir /data/mysql   //数据盘,数据目录
useradd mysql
chown -R mysql:mysql /data/mysql

到官网下载这些数据库文件,将这些文件放在一个目录里:

mysql-community-common-8.0.33-1.el7.x86_64.rpm 
mysql-community-server-8.0.33-1.el7.x86_64.rpm 
mysql-community-client-8.0.33-1.el7.x86_64.rpm 
mysql-community-client-plugins-8.0.33-1.el7.x86_64.rpm 
mysql-community-icu-data-files-8.0.33-1.el7.x86_64.rpm 
mysql-community-libs-8.0.33-1.el7.x86_64.rpm

安装,使用yum命令安装,如提示缺少相应的mysql相关rpm包会有提示:

yum -y install mysql-community-common-8.0.33-1.el7.x86_64.rpm mysql-community-server-8.0.33-1.el7.x8
6_64.rpm mysql-community-client-8.0.33-1.el7.x86_64.rpm mysql-community-client-plugins-8.0.33-1.el7.x86_64.rpm mysql-community-icu-d
ata-files-8.0.33-1.el7.x86_64.rpm mysql-community-libs-8.0.33-1.el7.x86_64.rpm

启动服务:

service mysqld start

查看日志文件可以查看初始密码:

/var/log/mysqld.log

SET PASSWORD = PASSWORD('YourNewPassword');  //首次登录需要修改密码

service mysqld stop //停止目录,将目录数据目录修改到数据盘,数据目录

rsync -avH /var/lib/mysql/ /data/mysql    //根据自己实际将数据目录存放数据盘

修改配置文件:

数据目录修改后,启动数据库。

创建应用库:

create database dbname;              //创建应用库  
CREATE USER 'user'@'%' IDENTIFIED BY 'passwd';    //创建用户
GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'%';   //关联用户和应用数据库

4、安装应用

应用是java语言开发的,先配置java环境 ,我这边配置的是java1.8的版本,可以将如下配置写入/etc/profile 末尾:

###for jdk1.8 ###
JAVA_HOME=/usr/local/jdk1.8.0_241
JRE_HOME=$JAVA_HOME/jre
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME JRE_HOME CLASSPATH
export HISTTIMEFORMAT="%F %T `whoami` "

创建应用启动用户,目录:

useradd appadmin
mkdir /data/app
chown -R appadmin:appadmin /data/app

说明:生产环境建议用普通用户来运行单独的应用,规划单独的应用目录。

启动应用:

su - appadmin
cd /data/app	
nohup java -jar fs-0.0.1-SNAPSHOT.jar >> app.log 2>&1 &     

启动脚本:

#!/bin/bash
# 功能:安全启动Java应用,包含日志记录、进程管理和基础错误处理

# --------------------- 基础配置 ---------------------
APP_NAME="fs-0.0.1-SNAPSHOT.jar"
APP_PATH="/data/app"
LOG_FILE="$APP_PATH/app.log"
PID_FILE="$APP_PATH/app.pid"
MAX_RETRY=10          # 最大重试次数
RETRY_INTERVAL=3      # 重试间隔(秒)

# --------------------- 日志函数 ---------------------
log() {
    local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
    local level=$1
    local message=$2
    echo "[$timestamp] [$level] $message"
    echo "[$timestamp] [$level] $message" >> "$LOG_FILE"
}

# --------------------- 检查应用是否已启动 ---------------------
check_running() {
    if [ -f "$PID_FILE" ]; then
        local pid=$(cat "$PID_FILE")
        if ps -p "$pid" > /dev/null 2>&1; then
            log "ERROR" "应用已在运行,PID: $pid"
            return 1
        else
            log "WARN" "发现残留PID文件,但进程不存在,将清理PID文件"
            rm -f "$PID_FILE"
        fi
    fi
    return 0
}

# --------------------- 等待数据库启动 ---------------------
wait_for_database() {
    log "INFO" "开始检查数据库连接..."
    local db_host="localhost"       # 请根据实际修改
    local db_port="3306"             # 请根据实际修改
    local attempt=0
    
    while [ $attempt -lt $MAX_RETRY ]; do
        if nc -z "$db_host" "$db_port"; then
            log "INFO" "数据库连接成功"
            return 0
        fi
        
        attempt=$((attempt + 1))
        log "INFO" "数据库未就绪,第 $attempt 次尝试,等待 $RETRY_INTERVAL 秒..."
        sleep $RETRY_INTERVAL
    done
    
    log "ERROR" "数据库连接超时,已重试 $MAX_RETRY 次"
    return 1
}

# --------------------- 主启动逻辑 ---------------------
main() {
    # 1. 初始化日志
    log "INFO" "==================== 应用启动流程开始 ===================="
    
    # 2. 检查应用是否已启动
    check_running
    if [ $? -ne 0 ]; then
        log "ERROR" "应用启动失败:检测到重复启动"
        exit 1
    fi
    
    # 3. 等待数据库就绪(可选,根据实际需求启用)
    # wait_for_database
    # if [ $? -ne 0 ]; then
    #     log "ERROR" "应用启动失败:数据库连接失败"
    #     exit 1
    # fi
    
    # 4. 记录启动时间
    local start_time=$(date +"%Y-%m-%d %H:%M:%S")
    log "INFO" "应用启动时间:$start_time"
    
    # 5. 启动Java应用
    log "INFO" "开始启动Java应用:java -jar $APP_NAME"
    nohup java -jar "$APP_NAME" >> "$LOG_FILE" 2>&1 &
    
    # 6. 记录PID
    local new_pid=$!
    echo "$new_pid" > "$PID_FILE"
    log "INFO" "应用已启动,PID: $new_pid"
    
    # 7. 验证启动状态
    sleep 2
    if ! ps -p "$new_pid" > /dev/null 2>&1; then
        log "ERROR" "应用启动后异常退出,PID: $new_pid"
        rm -f "$PID_FILE"
        exit 1
    fi
    
    log "INFO" "==================== 应用启动流程完成 ===================="
    exit 0
}

# 执行主函数
main
最近发表
标签列表