commit ba7b2af8fbf3a7d3168d94e85c6597f82c32431a Author: enoch Date: Fri Jan 10 18:09:35 2025 +0800 添加 rhelphp.bash diff --git a/rhelphp.bash b/rhelphp.bash new file mode 100644 index 0000000..8ebd290 --- /dev/null +++ b/rhelphp.bash @@ -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 \ No newline at end of file