|
|
帮我写个可以交互选择的shell脚本,实现以下功能:
1,输入选项1,安装最新稳定版的tengine+MySQL5.7+php8.0+最新稳定版的phpmyadmin
2,输入选项2,安装最新稳定版的tengine+MySQL8.0+php8.0+最新稳定版的phpmyadmin
3,输入选项3,单独安装最新稳定版的tengine
4,输入选项4,进入数据库子选项,单独选择MySQL5.7或者MySQL8.0进行安装,同时默认安装最新稳定版phpmyadmin
5,输入选项5,进入php子选项,单独选择php7.0-php8.2各版本进行安装
为了实现您所描述的功能,我将编写一个基于 Bash 的 CentOS shell 脚本。这个脚本将提供一个菜单系统,允许用户根据所选选项执行不同的安装任务。请注意,该脚本假设您拥有相应的权限(如 root 权限)来安装软件,并且您的 CentOS 系统已配置了必要的软件仓库。
以下是脚本的基本结构:
#!/bin/bash
# 函数定义
install_tengine() {
echo "安装最新稳定版的 Tengine..."
# 安装 Tengine 的命令
}
install_mysql57() {
echo "安装 MySQL 5.7..."
# 安装 MySQL 5.7 的命令
}
install_mysql80() {
echo "安装 MySQL 8.0..."
# 安装 MySQL 8.0 的命令
}
install_php() {
local version=$1
echo "安装 PHP $version..."
# 根据版本安装 PHP 的命令
}
install_phpmyadmin() {
echo "安装最新稳定版的 phpMyAdmin..."
# 安装 phpMyAdmin 的命令
}
# 菜单选项
while true; do
echo "选择一个操作:"
echo "1) 安装 Tengine + MySQL 5.7 + PHP 8.0 + phpMyAdmin"
echo "2) 安装 Tengine + MySQL 8.0 + PHP 8.0 + phpMyAdmin"
echo "3) 单独安装 Tengine"
echo "4) 安装数据库 (MySQL 5.7/8.0) 和 phpMyAdmin"
echo "5) 安装 PHP (版本 7.0 - 8.2)"
echo "6) 退出"
read -p "输入选项(1-6): " option
case $option in
1)
install_tengine
install_mysql57
install_php 8.0
install_phpmyadmin
;;
2)
install_tengine
install_mysql80
install_php 8.0
install_phpmyadmin
;;
3)
install_tengine
;;
4)
read -p "选择 MySQL 版本 (5.7 或 8.0): " mysql_version
if [[ $mysql_version == "5.7" ]]; then
install_mysql57
elif [[ $mysql_version == "8.0" ]]; then
install_mysql80
else
echo "无效的选择"
fi
install_phpmyadmin
;;
5)
read -p "输入 PHP 版本(7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2): " php_version
install_php $php_version
;;
6)
break
;;
*)
echo "无效的选项,请重新输入!"
;;
esac
done
请根据您的具体环境和需求,将注释部分替换为实际的安装命令。脚本提供了一个循环菜单,用户可以根据提示输入选项以执行相应的安装任务。脚本中的函数 install_tengine, install_mysql57, install_mysql80, install_php, 和 install_phpmyadmin 需要填充具体的安装命令。
在运行此脚本之前,请确保您的 CentOS 系统已经配置了相应的软件源,并且您有足够的权限来安装软件。
下边是各个组件的填充:
install_tengine() {
echo "安装最新稳定版的 Tengine..."
# 添加 Tengine 仓库
# 请根据您的 CentOS 版本和 Tengine 版本调整以下命令
yum install -y epel-release
yum install -y wget
wget http://tengine.taobao.org/download/tengine.tar.gz
tar -zxvf tengine.tar.gz
# 编译和安装 Tengine
cd tengine-*
./configure
make
make install
# 创建启动脚本
cat > /lib/systemd/system/tengine.service <<EOF
[Unit]
Description=The Tengine HTTP and reverse proxy server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT \$MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
# 启动并设置开机自启动
systemctl start tengine
systemctl enable tengine
echo "Tengine 安装完成。"
}
这个函数首先下载 Tengine 的源代码,然后编译并安装它。接着,它创建了一个 systemd 服务脚本,以便您可以使用 systemctl 命令来管理 Tengine 服务(如启动、停止和重载配置)。最后,该服务被启动,并设置为在系统启动时自动启动。
请确保在运行此脚本之前,您的系统已经安装了所需的编译工具,如 gcc, make, pcre-devel, openssl-devel 等。如果没有安装,您可以使用 yum install 命令来安装它们。
install_mysql57() {
echo "安装 MySQL 5.7..."
# 添加 MySQL 5.7 仓库
# 请根据您的 CentOS 版本调整以下命令
wget https://dev.mysql.com/get/mysql5 ... e-el7-11.noarch.rpm
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
# 安装 MySQL 服务器
yum install -y mysql-community-server
# 启动 MySQL 服务并设置开机自启
systemctl start mysqld
systemctl enable mysqld
# 获取临时密码
temp_pass=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')
echo "MySQL 5.7 安装完成。"
echo "MySQL 临时密码为: $temp_pass"
echo "请立即更改 MySQL 密码并完成安全设置。"
}
这个函数首先下载并安装 MySQL 5.7 的官方 Yum 仓库。接着,它使用 yum 命令安装 MySQL 服务器。安装完成后,脚本启动 MySQL 服务并设置为开机自启。
MySQL 5.7 的安装会生成一个临时的 root 密码,存储在 /var/log/mysqld.log 文件中。这个密码是为了首次登录和安全设置。脚本将提取这个临时密码并打印出来,提示用户在首次登录后更改密码并进行必要的安全设置。
请注意,这个脚本假设您使用的是 CentOS 7。如果您使用的是其他版本的 CentOS,您可能需要调整 MySQL Yum 仓库的安装命令。同时,请确保在运行此脚本之前,您具有安装软件的相应权限。
install_mysql80() {
echo "安装 MySQL 8.0..."
# 添加 MySQL 8.0 仓库
# 请根据您的 CentOS 版本调整以下命令
wget https://dev.mysql.com/get/mysql8 ... se-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
# 安装 MySQL 服务器
yum install -y mysql-community-server
# 启动 MySQL 服务并设置开机自启
systemctl start mysqld
systemctl enable mysqld
# 获取临时密码
temp_pass=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')
echo "MySQL 8.0 安装完成。"
echo "MySQL 临时密码为: $temp_pass"
echo "请立即更改 MySQL 密码并完成安全设置。"
}
这个函数首先下载并安装 MySQL 8.0 的官方 Yum 仓库。然后,它使用 yum 命令安装 MySQL 服务器。安装完成后,脚本启动 MySQL 服务并设置为开机自启。
MySQL 8.0 的安装也会生成一个临时的 root 密码,存储在 /var/log/mysqld.log 文件中。这个密码用于首次登录和安全设置。脚本将提取这个临时密码并打印出来,提示用户在首次登录后更改密码并进行必要的安全设置。
请注意,此脚本假设您使用的是 CentOS 7。如果您使用的是其他版本的 CentOS,您可能需要调整 MySQL Yum 仓库的安装命令。同时,请确保在运行此脚本之前,您具有安装软件的相应权限。
install_php() {
local version=$1
echo "安装 PHP $version..."
# 为 PHP 安装添加 EPEL 和 REMI 仓库
yum install -y epel-release yum-utils
yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# 启用 PHP 特定版本的仓库
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable "remi-php${version//./}"
# 安装 PHP 和常用的扩展
yum install -y php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json
# 启动 PHP-FPM 服务并设置开机自启
systemctl start php-fpm
systemctl enable php-fpm
echo "PHP $version 安装完成。"
}
install_phpmyadmin() {
echo "安装最新稳定版的 phpMyAdmin..."
# 添加 EPEL 仓库
yum install -y epel-release
# 安装 phpMyAdmin
yum install -y phpmyadmin
# 配置 phpMyAdmin
# 注意:根据您的环境,您可能需要调整配置文件(如允许远程访问)
# 重启 Apache 或 Nginx 以应用更改
# 请根据您的环境选择正确的命令
systemctl restart httpd
# 或者,如果您使用 Nginx + PHP-FPM:
# systemctl restart nginx
# systemctl restart php-fpm
echo "phpMyAdmin 安装完成。"
}
|
|