添加 rhelphp.bash

This commit is contained in:
enoch 2025-01-10 18:09:35 +08:00
commit ba7b2af8fb

120
rhelphp.bash Normal file
View File

@ -0,0 +1,120 @@
#!/bin/bash
# 获取RHEL版本号
rhel_version=$(rpm -E %{rhel}) # 使用rpm命令动态获取当前RHEL版本号
# 获取可用内存大小以MB为单位
available_mem=$(free -m | awk '/^Mem:/ {print $7}')
# 获取硬盘空闲大小以GB为单位
available_disk=$(df -BG / | awk 'NR==2 {print $4}' | sed 's/G//')
# 检查内存是否小于2G且硬盘空闲大小是否大于5G
if [[ "$available_mem" -lt 2048 && "$available_disk" -gt 5 ]]; then
echo "System memory is less than 2G and disk space is greater than 5G. Adding a 4G swap file..."
# 定义swap文件路径和大小
swap_file="/swapfile"
swap_size="4G"
# 创建swap文件
dd if=/dev/zero of=$swap_file bs=1M count=4096 status=progress
# 设置swap文件权限
chmod 600 $swap_file
# 格式化为swap文件
mkswap $swap_file
# 启用swap文件
swapon $swap_file
# 确保开机自动启用
if ! grep -q "$swap_file" /etc/fstab; then
echo "$swap_file none swap sw 0 0" >> /etc/fstab
fi
echo "Swap file of 4G created and activated successfully."
else
echo "System does not meet the criteria (Memory < 2G and Disk > 5G). No swap file created."
fi
# 判断服务器是否位于中国大陆
is_china=$(curl -s ping0.cc/geo | grep -q '中国' && echo "yes" || echo "no") # 调用API接口检查地理位置是否在中国大陆
# 设置对应的安装源URL
if [[ "$is_china" == "yes" && "$rhel_version" -eq 9 ]]; then
# 如果是中国大陆且RHEL版本为9使用特定的国内源
repo_url="https://git.laysense.com/enoch/RemiTuna/raw/branch/main/remi-release-9.4-2.el9.remi.noarch.rpm"
else
# 否则使用TUNA的Remi源根据RHEL版本动态选择
repo_url="https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-$rhel_version.rpm"
fi
# 安装 Remi 仓库
echo "Installing Remi repository from $repo_url..." # 输出安装源信息
yum -y install "$repo_url" # 使用yum安装指定的remi-release包
# 提示用户输入PHP版本
read -p "Enter the PHP version to install (e.g., 80, 8.0, php80, php8.0): " php_version
# 处理用户输入提取PHP版本号
phpversion=$(echo "$php_version" | grep -oE '[0-9]+(\.[0-9]+)?' | tr -d '.') # 提取数字并去掉小数点
# 确保版本号是两位数字
if [[ ${#phpversion} -lt 2 ]]; then
echo "Invalid PHP version. Please specify a valid version like 80 or 8.0."
exit 1
fi
# 替换安装命令中的版本号并执行
packages=(
"php$phpversion"
"php$phpversion-php"
"php$phpversion-php-common"
"php$phpversion-php-cli"
"php$phpversion-php-fpm"
"php$phpversion-build"
"php$phpversion-php-enchant"
"php$phpversion-php-dba"
"php$phpversion-php-pdo"
"php$phpversion-php-devel"
"php$phpversion-php-json"
"php$phpversion-php-gd"
"php$phpversion-php-pgsql"
"php$phpversion-php-pecl-redis5"
"php$phpversion-php-pecl-zip"
"php$phpversion-php-intl"
"php$phpversion-php-xml"
"php$phpversion-php-mbstring"
"php$phpversion-php-mysqli"
"php$phpversion-php-pecl-event"
"php$phpversion-php-process"
"php$phpversion-php-opcache"
)
echo "Installing PHP $phpversion and related packages..." # 输出安装的PHP版本
yum -y install ${packages[@]} # 使用yum安装所有相关PHP包
if [[ $? -eq 0 ]]; then
echo "PHP $phpversion and related packages installed successfully." # 安装成功信息
# 如果PHP安装成功设置默认php路径并安装composer
mv /usr/bin/php /usr/bin/php.back # 备份原有PHP路径
ln -s /usr/bin/php$phpversion /usr/bin/php # 创建新PHP版本的软链接
# 下载并安装Composer
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" # 下载Composer安装脚本
php composer-setup.php # 执行Composer安装脚本
mv composer.phar /usr/local/composer # 将Composer可执行文件移动到全局路径
# 如果是中国大陆服务器,配置阿里云镜像
if [[ "$is_china" == "yes" ]]; then
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ # 配置Composer使用阿里云镜像
fi
else
echo "Failed to install PHP $phpversion. Please check the logs for details." # 安装失败信息
exit 1
fi