添加 rhelphp.bash
This commit is contained in:
commit
ba7b2af8fb
120
rhelphp.bash
Normal file
120
rhelphp.bash
Normal 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
|
Loading…
Reference in New Issue
Block a user