#!/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