Compare commits

...

No commits in common. "main" and "master" have entirely different histories.
main ... master

20 changed files with 3 additions and 2420 deletions

View File

@ -1,293 +0,0 @@
#!/bin/bash
# ==============================================
# Java应用管理脚本 v2.0
# 功能:启动/停止/重启/状态检查/日志查看/升级/备份
# ==============================================
# --------------------------
# 配置区(请根据实际情况修改)
# --------------------------
APP_NAME="snailjob-server" # 应用名称
APP_DIR="../lib" # 应用目录(支持绝对路径)
JAR_NAME="ruoyi-snailjob-server.jar" # JAR文件名
JAVA_OPTS="-Xms256m -Xmx512m -XX:+UseG1GC -Dfile.encoding=UTF-8" # JVM参数
LOG_FILE="${APP_DIR}/app.log" # 日志文件路径
PID_FILE="${APP_DIR}/app.pid" # PID文件路径
MAX_LOG_SIZE=10 # 日志轮转大小(MB)
BACKUP_DIR="${APP_DIR}/backup" # 备份目录
WAIT_STOP_TIMEOUT=30 # 停止等待超时(秒)
# --------------------------
# 初始化检查
# --------------------------
init_check() {
# 检查Java环境
if ! command -v java &> /dev/null; then
echo "[ERROR] Java未安装请先安装JDK"
exit 1
fi
# 检查目录是否存在
if [ ! -d "$APP_DIR" ]; then
echo "[ERROR] 应用目录不存在: $APP_DIR"
exit 1
fi
# 检查JAR文件是否存在
if [ ! -f "${APP_DIR}/${JAR_NAME}" ]; then
echo "[ERROR] JAR文件不存在: ${APP_DIR}/${JAR_NAME}"
exit 1
fi
# 创建备份目录
mkdir -p "$BACKUP_DIR"
}
# --------------------------
# 日志轮转
# --------------------------
rotate_log() {
if [ -f "$LOG_FILE" ]; then
log_size=$(du -m "$LOG_FILE" | cut -f1)
if [ "$log_size" -gt "$MAX_LOG_SIZE" ]; then
echo "正在轮转日志文件..."
timestamp=$(date +%Y%m%d%H%M%S)
mv "$LOG_FILE" "${LOG_FILE}.$timestamp"
gzip "${LOG_FILE}.$timestamp" -f
mv "${LOG_FILE}.$timestamp.gz" "$BACKUP_DIR/"
touch "$LOG_FILE"
fi
fi
}
# --------------------------
# 获取应用状态
# --------------------------
status() {
if [ -f "$PID_FILE" ]; then
pid=$(cat "$PID_FILE")
if ps -p "$pid" > /dev/null; then
echo "[INFO] $APP_NAME 正在运行 (PID: $pid)"
return 0
else
echo "[WARN] PID文件存在但进程未运行可能存在异常退出"
return 1
fi
else
echo "[INFO] $APP_NAME 未运行"
return 3
fi
}
# --------------------------
# 启动应用
# --------------------------
start() {
init_check
status >/dev/null 2>&1
local running=$?
if [ $running -eq 0 ]; then
echo "[WARN] $APP_NAME 已经在运行中 (PID: $(cat "$PID_FILE"))"
return 1
fi
# 清理无效PID文件
if [ $running -eq 1 ]; then
rm -f "$PID_FILE"
fi
rotate_log
echo "正在启动 $APP_NAME..."
cd "$APP_DIR" || exit 1
# 使用exec启动以便获取正确的PID
nohup java $JAVA_OPTS -jar "$JAR_NAME" >> "$LOG_FILE" 2>&1 &
local pid=$!
echo $pid > "$PID_FILE"
echo "[SUCCESS] $APP_NAME 已启动 (PID: $pid)"
echo "日志文件: $LOG_FILE"
}
# --------------------------
# 停止应用
# --------------------------
stop() {
status >/dev/null 2>&1
local running=$?
if [ $running -ne 0 ]; then
echo "[WARN] $APP_NAME 未运行"
return 1
fi
local pid=$(cat "$PID_FILE")
echo "正在停止 $APP_NAME (PID: $pid)..."
# 先尝试优雅关闭
kill $pid
# 等待进程退出
local count=0
while [ $count -lt $WAIT_STOP_TIMEOUT ]; do
if ! ps -p $pid > /dev/null; then
break
fi
sleep 1
((count++))
done
# 强制终止
if ps -p $pid > /dev/null; then
echo "[WARN] 优雅关闭失败,尝试强制终止..."
kill -9 $pid
sleep 1
fi
rm -f "$PID_FILE"
echo "[SUCCESS] $APP_NAME 已停止"
}
# --------------------------
# 重启应用
# --------------------------
restart() {
stop
sleep 2
start
}
# --------------------------
# 查看日志
# --------------------------
tail_log() {
if [ ! -f "$LOG_FILE" ]; then
echo "[ERROR] 日志文件不存在: $LOG_FILE"
return 1
fi
echo "正在显示日志: $LOG_FILE (Ctrl+C 退出)"
echo "--------------------------------------------------"
tail -f "$LOG_FILE"
}
# --------------------------
# 备份应用
# --------------------------
backup() {
local timestamp=$(date +%Y%m%d%H%M%S)
local backup_file="${BACKUP_DIR}/${JAR_NAME%.*}_${timestamp}.jar"
echo "正在备份应用到: $backup_file"
cp "${APP_DIR}/${JAR_NAME}" "$backup_file"
if [ $? -eq 0 ]; then
echo "[SUCCESS] 备份完成"
return 0
else
echo "[ERROR] 备份失败"
return 1
fi
}
# --------------------------
# 升级应用
# --------------------------
upgrade() {
local new_jar="$JAR_NAME"
local lib_dir="$APP_DIR"
local backup_dir="${BACKUP_DIR}/lib"
# 检查新的JAR文件是否存在
if [ ! -f "$new_jar" ]; then
echo "[ERROR] 新的JAR文件不存在: $new_jar"
return 1
fi
# 检查lib目录是否存在
if [ ! -d "$lib_dir" ]; then
echo "[ERROR] lib目录不存在: $lib_dir"
return 1
fi
# 检查backup目录是否存在不存在则创建
mkdir -p "$backup_dir"
# 获取lib目录下原有的JAR文件名
local old_jar=$(ls "$lib_dir" | grep -E "^${JAR_NAME%.jar}-[0-9]{14}\.jar$")
if [ -z "$old_jar" ]; then
old_jar="$JAR_NAME"
fi
# 备份原有的JAR文件
local timestamp=$(date +%Y%m%d%H%M%S)
local backup_file="${backup_dir}/${old_jar%.jar}_${timestamp}.jar"
cp "${lib_dir}/${old_jar}" "$backup_file"
if [ $? -eq 0 ]; then
echo "[SUCCESS] 备份原有JAR文件到: $backup_file"
else
echo "[ERROR] 备份原有JAR文件失败"
return 1
fi
# 复制新的JAR文件到lib目录
cp "$new_jar" "$lib_dir/"
if [ $? -eq 0 ]; then
echo "[SUCCESS] 升级JAR文件到: $lib_dir/$new_jar"
else
echo "[ERROR] 升级JAR文件失败"
return 1
fi
# 删除旧的JAR文件可选如果保留旧版本则不需要删除
# rm -f "${lib_dir}/${old_jar}"
# if [ $? -eq 0 ]; then
# echo "[SUCCESS] 删除旧的JAR文件: ${lib_dir}/${old_jar}"
# else
# echo "[ERROR] 删除旧的JAR文件失败"
# return 1
# fi
}
# --------------------------
# 主程序
# --------------------------
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
log)
tail_log
;;
backup)
backup
;;
upgrade)
upgrade
;;
*)
echo "用法: $0 {start|stop|restart|status|log|backup|upgrade}"
echo " start 启动应用"
echo " stop 停止应用"
echo " restart 重启应用"
echo " status 查看状态"
echo " log 查看实时日志"
echo " backup 备份应用"
echo " upgrade 升级应用"
exit 1
;;
esac
exit 0

View File

@ -1,162 +0,0 @@
#!/bin/bash
# ==============================================
# Docker 安装脚本 (适用于 AlmaLinux/Rocky Linux 9)
# 功能:自动安装 Docker 并配置国内镜像加速
# ==============================================
# 启用严格模式
set -euo pipefail
# --------------------------
# 颜色定义
# --------------------------
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color
# --------------------------
# 日志函数
# --------------------------
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1" >&2
}
# --------------------------
# 检查 root 权限
# --------------------------
check_root() {
if [ "$(id -u)" -ne 0 ]; then
log_error "请使用 root 用户或通过 sudo 运行此脚本"
exit 1
fi
}
# --------------------------
# 安装必要的工具
# --------------------------
install_tools() {
log_info "正在安装必要的工具..."
dnf install -y curl wget tar gzip
}
# --------------------------
# 添加 Docker 官方仓库
# --------------------------
add_docker_repo() {
log_info "正在添加 Docker 官方仓库..."
# 安装 yum-utils 工具
dnf install -y yum-utils
# 添加 Docker 官方仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
log_info "Docker 官方仓库已添加"
}
# --------------------------
# 配置国内镜像源(可选)
# --------------------------
setup_mirror() {
log_info "正在配置国内镜像源..."
# 替换为阿里云镜像
sed -i 's|https://download.docker.com|https://mirrors.aliyun.com/docker-ce|g' /etc/yum.repos.d/docker-ce.repo
log_info "已配置阿里云镜像源"
}
# --------------------------
# 安装 Docker
# --------------------------
install_docker() {
log_info "正在安装 Docker..."
# 安装 Docker CE 和相关工具
dnf install -y docker-ce docker-ce-cli containerd.io
log_info "Docker 已安装完成"
}
# --------------------------
# 配置 Docker 镜像加速
# --------------------------
configure_mirror_acceleration() {
log_info "正在配置 Docker 镜像加速..."
# 创建或修改 Docker 配置文件
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io"
]
}
EOF
log_info "Docker 镜像加速已配置完成"
}
# --------------------------
# 启动并启用 Docker 服务
# --------------------------
start_docker() {
log_info "正在启动 Docker 服务..."
# 启动 Docker 服务
systemctl start docker
# 设置开机自启
systemctl enable docker
log_info "Docker 服务已启动并设置为开机自启"
}
# --------------------------
# 测试 Docker 安装
# --------------------------
test_docker() {
log_info "正在测试 Docker 安装..."
# 测试 Docker 版本
docker --version
# 测试运行 hello-world 容器
docker run --rm hello-world
log_info "Docker 测试完成"
}
# --------------------------
# 主函数
# --------------------------
main() {
check_root
install_tools
add_docker_repo
setup_mirror
install_docker
configure_mirror_acceleration
start_docker
test_docker
log_info "Docker 已成功安装并配置!"
}
# --------------------------
# 执行主函数
# --------------------------
main
exit 0

View File

@ -1,53 +0,0 @@
#!/bin/bash
# 检查是否以 root 用户运行
if [[ $EUID -ne 0 ]]; then
echo "请以 root 用户或使用 sudo 运行此脚本。"
exit 1
fi
# 检查系统架构
ARCH=$(uname -m)
case $ARCH in
x86_64)
DOCKER_COMPOSE_ARCH="x86_64"
;;
aarch64)
DOCKER_COMPOSE_ARCH="aarch64"
;;
armv7l)
DOCKER_COMPOSE_ARCH="armv7"
;;
*)
echo "不支持的系统架构: $ARCH"
exit 1
;;
esac
# 定义安装路径和版本
INSTALL_PATH="/usr/local/bin/docker-compose"
LATEST_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep "tag_name" | cut -d '"' -f 4)
echo "正在安装 docker-compose 版本: $LATEST_VERSION"
# 下载 docker-compose
DOWNLOAD_URL="https://gh-proxy.com/https://github.com/docker/compose/releases/download/$LATEST_VERSION/docker-compose-Linux-$DOCKER_COMPOSE_ARCH"
curl -L "$DOWNLOAD_URL" -o "$INSTALL_PATH"
# 检查下载是否成功
if [[ $? -ne 0 ]]; then
echo "下载 docker-compose 失败,请检查网络连接。"
exit 1
fi
# 设置可执行权限
chmod +x "$INSTALL_PATH"
# 验证安装
if docker-compose --version; then
echo "docker-compose 安装成功!"
else
echo "docker-compose 安装失败,请检查安装路径和权限。"
exit 1
fi

View File

@ -1,120 +0,0 @@
#!/bin/bash
# ------------------------------
# 配置区(根据实际修改)
# ------------------------------
DRONE_HOST="http://100.78.212.75:4010" # Drone 访问域名
GITEA_SERVER="http://100.78.212.75:3000" # Gitea 地址
GITEA_CLIENT_ID="1a1da8e3-7425-4e98-92a2-6c2b7d0819d1" # Gitea OAuth2 Client ID
GITEA_CLIENT_SECRET="gto_axhtqnuj36gvss5dbfx2vem2hcbhxho4jprqrlatjyk2i2ylgeoq" # Gitea OAuth2 Client Secret
POSTGRES_CONN="postgres://postgres:hsc1825713423@100.78.212.75:5432/drone?sslmode=disable" # 数据库连接
REDIS_ADDR="100.78.212.75:6379" # Redis 地址
REDIS_PASSWORD="hsc1825713423" # Redis 密码
INSTALL_DIR="/opt/drone" # 安装目录
# 国内镜像代理地址(可根据需要更换)
DOCKER_PROXY="docker.m.daocloud.io"
# ------------------------------
# 自动生成密钥
# ------------------------------
DRONE_RPC_SECRET=$(openssl rand -hex 16)
# ------------------------------
# 清理之前的安装
# ------------------------------
echo "🧹 清理之前的 Drone 安装..."
docker-compose down &> /dev/null || true
docker rm -f drone-server &> /dev/null || true
rm -rf "$INSTALL_DIR"
mkdir -p "$INSTALL_DIR"
echo "✅ 已清理之前的安装。"
# ------------------------------
# 创建 docker-compose.yml 文件
# ------------------------------
echo "📝 创建 docker-compose.yml 文件..."
cat > "$INSTALL_DIR/docker-compose.yml" <<EOF
version: '3'
services:
drone-server:
image: ${DOCKER_PROXY}/drone/drone:2
container_name: drone-server
environment:
- DRONE_GITEA_SERVER=$GITEA_SERVER
- DRONE_GITEA_CLIENT_ID=$GITEA_CLIENT_ID
- DRONE_GITEA_CLIENT_SECRET=$GITEA_CLIENT_SECRET
- DRONE_RPC_SECRET=$DRONE_RPC_SECRET
- DRONE_SERVER_HOST=$DRONE_HOST
- DRONE_SERVER_PROTO=http
- DRONE_DATABASE_DRIVER=postgres
- DRONE_DATABASE_DATASOURCE=$POSTGRES_CONN
- DRONE_REDIS_ADDR=$REDIS_ADDR
- DRONE_REDIS_PASSWORD=$REDIS_PASSWORD
volumes:
- drone-data:/var/lib/drone/
ports:
- "4010:80"
restart: always
volumes:
drone-data:
EOF
echo "✅ 已创建 docker-compose.yml 文件。"
# ------------------------------
# 配置 Docker 使用国内镜像加速
# ------------------------------
echo "🔧 配置 Docker 使用国内镜像加速..."
if ! grep -q "registry-mirrors" /etc/docker/daemon.json 2>/dev/null; then
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io"
]
}
EOF
systemctl daemon-reload
systemctl restart docker
echo "✅ 已配置 Docker 使用国内镜像加速。"
else
echo "⚠️ Docker 已配置镜像加速,跳过此步骤。"
fi
# ------------------------------
# 启动服务
# ------------------------------
echo "🚀 启动 Drone Server 服务..."
cd "$INSTALL_DIR"
docker-compose up -d
if [ $? -ne 0 ]; then
echo "❌ 启动 Drone Server 服务失败,请检查日志!"
exit 1
fi
# ------------------------------
# 验证安装
# ------------------------------
echo "🔍 检查服务状态..."
sleep 10
if docker ps | grep -q drone-server; then
echo "✅ Drone Server 服务已成功启动!"
else
echo "❌ Drone Server 服务启动失败,请检查以下日志:"
echo " docker logs drone-server"
exit 1
fi
# ------------------------------
# 输出信息
# ------------------------------
echo "✅ 安装完成!"
echo "📌 Drone 控制台: $DRONE_HOST"
echo "📌 RPC 密钥: $DRONE_RPC_SECRET (请妥善保存)"
echo "📌 管理命令:"
echo " docker-compose ps"
echo " docker logs drone-server"

File diff suppressed because it is too large Load Diff

203
env/init_go.sh vendored
View File

@ -1,203 +0,0 @@
#!/bin/bash
# ==============================================
# Go 语言安装脚本 for CentOS
# 版本1.3
# 作者:您的名字
# ==============================================
# 启用严格模式
set -euo pipefail
# --------------------------
# 配置区(可根据需要修改)
# --------------------------
GO_VERSION="1.22.0" # 默认安装版本
INSTALL_DIR="/usr/local" # 安装目录
GOPATH="$HOME/go" # GOPATH 设置
PROFILE_FILE="/etc/profile.d/go.sh" # 环境变量文件
# --------------------------
# 颜色定义
# --------------------------
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color
# --------------------------
# 日志函数
# --------------------------
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1" >&2
}
# --------------------------
# 检查root权限
# --------------------------
check_root() {
if [ "$(id -u)" -ne 0 ]; then
log_error "请使用root用户或通过sudo运行此脚本"
exit 1
fi
}
# --------------------------
# 安装依赖
# --------------------------
install_deps() {
log_info "正在安装必要依赖..."
yum install -y curl tar gzip wget git make gcc
}
# --------------------------
# 获取最新Go版本
# --------------------------
get_latest_version() {
log_info "正在获取最新Go版本..."
local latest
latest=$(curl -s https://go.dev/VERSION?m=text | head -1)
if [[ "$latest" =~ ^go[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
GO_VERSION="${latest#go}"
log_info "检测到最新版本: ${GO_VERSION}"
else
log_warn "无法获取最新版本,使用默认版本: ${GO_VERSION}"
fi
}
# --------------------------
# 下载Go安装包
# --------------------------
download_go() {
local url="https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz"
local tmp_file="/tmp/go${GO_VERSION}.tar.gz"
if [ -f "$tmp_file" ]; then
log_info "发现本地缓存安装包,跳过下载"
return
fi
log_info "正在下载Go ${GO_VERSION}..."
if ! curl -fSL --progress-bar -o "$tmp_file" "$url"; then
log_error "下载失败,请检查网络连接或版本是否存在"
exit 1
fi
}
# --------------------------
# 安装Go
# --------------------------
install_go() {
local tmp_file="/tmp/go${GO_VERSION}.tar.gz"
log_info "正在安装Go到 ${INSTALL_DIR}..."
tar -C "$INSTALL_DIR" -xzf "$tmp_file"
rm -f "$tmp_file"
}
# --------------------------
# 配置环境变量
# --------------------------
setup_env() {
log_info "正在配置环境变量..."
# 创建环境变量文件
cat > "$PROFILE_FILE" <<EOF
export GOROOT=${INSTALL_DIR}/go
export GOPATH=${GOPATH}
export PATH=\$GOROOT/bin:\$GOPATH/bin:\$PATH
EOF
# 立即生效
source "$PROFILE_FILE"
# 创建GOPATH目录
mkdir -p "${GOPATH}/"{src,bin,pkg}
}
# --------------------------
# 验证安装
# --------------------------
verify_install() {
log_info "验证安装..."
if ! command -v go &> /dev/null; then
log_error "Go安装失败请检查错误"
exit 1
fi
echo -e "\n${GREEN}Go安装成功${NC}"
echo "============================="
go version
echo "GOROOT: $(go env GOROOT)"
echo "GOPATH: $(go env GOPATH)"
echo "============================="
}
# --------------------------
# 卸载Go
# --------------------------
uninstall_go() {
log_info "正在卸载Go..."
rm -rf "${INSTALL_DIR}/go"
rm -f "$PROFILE_FILE"
log_info "Go已卸载"
}
# --------------------------
# 清理缓存
# --------------------------
clean_cache() {
log_info "正在清理缓存..."
rm -f "/tmp/go${GO_VERSION}.tar.gz"
log_info "缓存已清理"
}
# --------------------------
# 主函数
# --------------------------
main() {
case "$1" in
install)
check_root
install_deps
# 如果想安装最新版本,取消下面注释
# get_latest_version
download_go
install_go
setup_env
verify_install
log_info "安装完成!请重新登录或运行 'source ${PROFILE_FILE}' 使环境变量生效"
;;
uninstall)
check_root
uninstall_go
;;
clean)
clean_cache
;;
*)
echo "用法: $0 {install|uninstall|clean}"
echo " install 安装Go"
echo " uninstall 卸载Go"
echo " clean 清理缓存"
exit 1
;;
esac
}
# --------------------------
# 执行主函数
# --------------------------
main "$@"
exit 0

73
env/init_jdk.sh vendored
View File

@ -1,73 +0,0 @@
#!/bin/bash
# JDK 17 安装脚本 for CentOS
# 作者awt
# 日期mx
# 检查是否以root用户运行
if [ "$(id -u)" -ne 0 ]; then
echo "请使用root用户或通过sudo运行此脚本"
exit 1
fi
# 安装必要依赖
echo "正在安装必要依赖..."
yum install -y wget tar gzip
# 设置JDK版本
JDK_VERSION="17.0.10"
JDK_BUILD="7"
JDK_ARCHIVE="jdk-${JDK_VERSION}_linux-x64_bin.tar.gz"
JDK_URL="https://download.oracle.com/java/${JDK_VERSION%%.*}/archive/jdk-${JDK_VERSION}_linux-x64_bin.tar.gz"
# 安装目录
INSTALL_DIR="/usr/lib/jvm"
JAVA_HOME_DIR="jdk-${JDK_VERSION}"
# 创建安装目录
mkdir -p ${INSTALL_DIR}
cd ${INSTALL_DIR}
# 下载JDK (使用--no-check-certificate和--no-cookies配合Oracle的复杂下载逻辑)
echo "正在下载JDK ${JDK_VERSION}..."
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" ${JDK_URL} -O ${JDK_ARCHIVE}
if [ $? -ne 0 ]; then
echo "JDK下载失败请检查网络连接或URL有效性"
exit 1
fi
# 解压安装
echo "正在安装JDK..."
tar -xzf ${JDK_ARCHIVE}
rm -f ${JDK_ARCHIVE}
# 设置环境变量
echo "配置环境变量..."
cat > /etc/profile.d/java.sh <<EOF
export JAVA_HOME=${INSTALL_DIR}/${JAVA_HOME_DIR}
export PATH=\$JAVA_HOME/bin:\$PATH
EOF
# 加载环境变量
source /etc/profile.d/java.sh
# 更新alternatives系统
echo "设置系统默认Java..."
if [ -d "${INSTALL_DIR}/${JAVA_HOME_DIR}/bin" ]; then
update-alternatives --install "/usr/bin/java" "java" "${INSTALL_DIR}/${JAVA_HOME_DIR}/bin/java" 1000
update-alternatives --install "/usr/bin/javac" "javac" "${INSTALL_DIR}/${JAVA_HOME_DIR}/bin/javac" 1000
update-alternatives --set java "${INSTALL_DIR}/${JAVA_HOME_DIR}/bin/java"
update-alternatives --set javac "${INSTALL_DIR}/${JAVA_HOME_DIR}/bin/javac"
else
echo "Java二进制文件未找到安装可能失败"
exit 1
fi
# 验证安装
echo "验证Java版本..."
java -version
javac -version
echo "JDK ${JDK_VERSION} 安装完成!"
echo "JAVA_HOME 设置为: ${INSTALL_DIR}/${JAVA_HOME_DIR}"

161
env/init_maven.sh vendored
View File

@ -1,161 +0,0 @@
#!/bin/bash
# ==============================================
# Maven 安装脚本(使用国内镜像)
# 功能:自动安装 Maven 并配置阿里云镜像源
# ==============================================
# 启用严格模式
set -euo pipefail
# --------------------------
# 颜色定义
# --------------------------
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color
# --------------------------
# 日志函数
# --------------------------
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1" >&2
}
# --------------------------
# 检查 root 权限
# --------------------------
check_root() {
if [ "$(id -u)" -ne 0 ]; then
log_error "请使用 root 用户或通过 sudo 运行此脚本"
exit 1
fi
}
# --------------------------
# 安装 JavaMaven 依赖 Java
# --------------------------
install_java() {
log_info "正在检查 Java 是否已安装..."
if ! command -v java &> /dev/null; then
log_warn "未检测到 Java正在安装 OpenJDK 17..."
dnf install -y java-17-openjdk-devel
else
log_info "Java 已安装,版本信息如下:"
java -version
fi
}
# --------------------------
# 下载并安装 Maven使用国内镜像
# --------------------------
install_maven() {
log_info "正在下载并安装 Maven使用国内镜像..."
# 定义 Maven 版本和安装路径
MAVEN_VERSION="3.8.8"
INSTALL_DIR="/opt/maven"
# 使用阿里云镜像地址
MAVEN_URL="https://mirrors.aliyun.com/apache/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz"
# 创建安装目录
mkdir -p "$INSTALL_DIR"
# 下载 Maven
log_info "正在从阿里云镜像下载 Maven ${MAVEN_VERSION}..."
curl -L -o "/tmp/apache-maven-${MAVEN_VERSION}-bin.tar.gz" "$MAVEN_URL"
# 解压到安装目录
tar -xzf "/tmp/apache-maven-${MAVEN_VERSION}-bin.tar.gz" -C "$INSTALL_DIR" --strip-components=1
# 清理临时文件
rm -f "/tmp/apache-maven-${MAVEN_VERSION}-bin.tar.gz"
log_info "Maven 已成功安装到 ${INSTALL_DIR}"
}
# --------------------------
# 配置环境变量
# --------------------------
configure_env() {
log_info "正在配置 Maven 环境变量..."
# 添加 Maven 到 PATH
echo 'export M2_HOME=/opt/maven' > /etc/profile.d/maven.sh
echo 'export PATH=$M2_HOME/bin:$PATH' >> /etc/profile.d/maven.sh
# 使配置立即生效
source /etc/profile.d/maven.sh
log_info "Maven 环境变量已配置完成"
}
# --------------------------
# 配置阿里云镜像源
# --------------------------
configure_aliyun_mirror() {
log_info "正在配置阿里云 Maven 镜像源..."
# 创建 Maven 配置目录
mkdir -p /root/.m2
# 配置 settings.xml 文件
cat > /root/.m2/settings.xml <<'EOF'
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>aliyun</id>
<name>Aliyun Maven</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
</settings>
EOF
log_info "阿里云 Maven 镜像源已配置完成"
}
# --------------------------
# 测试 Maven 安装
# --------------------------
test_maven() {
log_info "正在测试 Maven 安装..."
mvn -v
log_info "Maven 安装测试完成"
}
# --------------------------
# 主函数
# --------------------------
main() {
check_root
install_java
install_maven
configure_env
configure_aliyun_mirror
test_maven
log_info "Maven 已成功安装并配置!"
}
# --------------------------
# 执行主函数
# --------------------------
main
exit 0

162
env/init_node.sh vendored
View File

@ -1,162 +0,0 @@
#!/bin/bash
# ==============================================
# Node.js 安装脚本
# 功能:自动安装 Node.js 并配置阿里云镜像源
# 适用系统CentOS/RHEL、Ubuntu/Debian 等主流 Linux 发行版
# ==============================================
# 启用严格模式
set -euo pipefail
# --------------------------
# 颜色定义
# --------------------------
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color
# --------------------------
# 日志函数
# --------------------------
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1" >&2
}
# --------------------------
# 检查 root 权限
# --------------------------
check_root() {
if [ "$(id -u)" -ne 0 ]; then
log_error "请使用 root 用户或通过 sudo 运行此脚本"
exit 1
fi
}
# --------------------------
# 检测系统类型
# --------------------------
detect_os() {
if [ -f /etc/os-release ]; then
. /etc/os-release
OS_NAME="${ID:-unknown}"
OS_VERSION="${VERSION_ID:-unknown}"
else
log_error "无法检测操作系统类型,请手动安装 Node.js"
exit 1
fi
}
# --------------------------
# 安装依赖工具
# --------------------------
install_dependencies() {
log_info "正在安装必要的依赖工具..."
if [[ "$OS_NAME" == "centos" || "$OS_NAME" == "rhel" || "$OS_NAME" == "rocky" || "$OS_NAME" == "almalinux" ]]; then
dnf install -y curl wget
elif [[ "$OS_NAME" == "ubuntu" || "$OS_NAME" == "debian" ]]; then
apt update
apt install -y curl wget
else
log_error "不支持的操作系统: ${OS_NAME}"
exit 1
fi
}
# --------------------------
# 安装 Node.js
# --------------------------
install_nodejs() {
log_info "正在安装 Node.js..."
# 添加 NodeSource 仓库
if [[ "$OS_NAME" == "centos" || "$OS_NAME" == "rhel" || "$OS_NAME" == "rocky" || "$OS_NAME" == "almalinux" ]]; then
curl -sL https://rpm.nodesource.com/setup_18.x | bash -
dnf install -y nodejs
elif [[ "$OS_NAME" == "ubuntu" || "$OS_NAME" == "debian" ]]; then
curl -sL https://deb.nodesource.com/setup_18.x | bash -
apt install -y nodejs
else
log_error "不支持的操作系统: ${OS_NAME}"
exit 1
fi
log_info "Node.js 安装完成"
}
# --------------------------
# 配置 npm 阿里云镜像源
# --------------------------
configure_npm_mirror() {
log_info "正在配置 npm 阿里云镜像源..."
npm config set registry https://registry.npmmirror.com
log_info "npm 阿里云镜像源已配置完成"
}
# --------------------------
# 安装并配置 Yarn可选
# --------------------------
install_and_configure_yarn() {
log_info "正在安装并配置 Yarn..."
# 安装 Yarn
if [[ "$OS_NAME" == "centos" || "$OS_NAME" == "rhel" || "$OS_NAME" == "rocky" || "$OS_NAME" == "almalinux" ]]; then
npm install -g yarn
elif [[ "$OS_NAME" == "ubuntu" || "$OS_NAME" == "debian" ]]; then
npm install -g yarn
fi
# 配置 Yarn 阿里云镜像源
yarn config set registry https://registry.npmmirror.com
log_info "Yarn 安装并配置完成"
}
# --------------------------
# 测试 Node.js 和 npm 安装
# --------------------------
test_installation() {
log_info "正在测试 Node.js 和 npm 安装..."
NODE_VERSION=$(node --version)
NPM_VERSION=$(npm --version)
log_info "Node.js 安装成功,版本为: ${NODE_VERSION}"
log_info "npm 安装成功,版本为: ${NPM_VERSION}"
if command -v yarn &> /dev/null; then
YARN_VERSION=$(yarn --version)
log_info "Yarn 安装成功,版本为: ${YARN_VERSION}"
fi
}
# --------------------------
# 主函数
# --------------------------
main() {
check_root
detect_os
install_dependencies
install_nodejs
configure_npm_mirror
install_and_configure_yarn
test_installation
}
# --------------------------
# 执行主函数
# --------------------------
main
exit 0

0
init.sh Normal file
View File

View File

@ -12,6 +12,6 @@
---
Test

View File

@ -1,5 +1,6 @@
#!/bin/bash
# 1. tailscale
# 初始化Linux服务器脚本
# 功能1. 时钟同步配置 2. Yum加速配置 3. 系统基础优化
# 检查是否为root用户
if [ $(id -u) != "0" ]; then

View File

@ -1,78 +0,0 @@
#!/bin/bash
# 日志级别定义
LOG_LEVEL_DEBUG=10
LOG_LEVEL_INFO=20
LOG_LEVEL_WARNING=30
LOG_LEVEL_ERROR=40
# 当前日志级别
CURRENT_LOG_LEVEL=$LOG_LEVEL_INFO
# 颜色定义
COLOR_RESET="\033[0m"
COLOR_DEBUG="\033[0;36m"
COLOR_INFO="\033[0;32m"
COLOR_WARNING="\033[0;33m"
COLOR_ERROR="\033[0;31m"
# 日志函数
log() {
local level=$1
shift
local message="$*"
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
local color=$COLOR_RESET
if [ "$level" -ge "$CURRENT_LOG_LEVEL" ]; then
case $level in
$LOG_LEVEL_DEBUG)
color=$COLOR_DEBUG
;;
$LOG_LEVEL_INFO)
color=$COLOR_INFO
;;
$LOG_LEVEL_WARNING)
color=$COLOR_WARNING
;;
$LOG_LEVEL_ERROR)
color=$COLOR_ERROR
;;
esac
echo -e "${color}[$timestamp] [${level}] $message${COLOR_RESET}"
fi
}
# 帮助函数
show_help() {
echo "Usage: $0 [options]"
echo "Options:"
echo " -h, --help Show this help message and exit"
echo " -v, --verbose Set log level to debug"
}
# 解析命令行参数
while [[ "$#" -gt 0 ]]; do
case $1 in
-h|--help)
show_help
exit 0
;;
-v|--verbose)
CURRENT_LOG_LEVEL=$LOG_LEVEL_DEBUG
shift
;;
*)
echo "Unknown parameter passed: $1"
show_help
exit 1
;;
esac
shift
done
# 示例日志记录
log $LOG_LEVEL_INFO "Script started"
log $LOG_LEVEL_DEBUG "This is a debug message"
log $LOG_LEVEL_WARNING "This is a warning message"
log $LOG_LEVEL_ERROR "This is an error message"

View File

@ -1,10 +0,0 @@
#!/bin/bash
# 1. 拉取frp.tar.gz
# todo 后续开发
# 检查是否为root用户
if [ $(id -u) != "0" ]; then
echo "错误请使用root用户执行此脚本"
exit 1
fi