面试题答案
一键面试#!/bin/bash
# 检测操作系统类型
OS=$(uname -s)
PACKAGE_MANAGER=""
if [ "$OS" == "Linux" ]; then
if grep -qi "centos" /etc/os-release; then
PACKAGE_MANAGER="yum"
elif grep -qi "ubuntu" /etc/os-release; then
PACKAGE_MANAGER="apt-get"
else
echo "Unsupported Linux distribution"
exit 1
fi
elif [ "$OS" == "Darwin" ]; then
PACKAGE_MANAGER="brew"
else
echo "Unsupported operating system"
exit 1
fi
# 安装依赖软件包
if [ "$PACKAGE_MANAGER" == "yum" ]; then
sudo $PACKAGE_MANAGER install -y httpd php php-mysqlnd
elif [ "$PACKAGE_MANAGER" == "apt-get" ]; then
sudo $PACKAGE_MANAGER update
sudo $PACKAGE_MANAGER install -y apache2 php libapache2-mod-php php-mysql
elif [ "$PACKAGE_MANAGER" == "brew" ]; then
brew install httpd php mysql
fi
# 配置环境变量
echo 'export WEB_APP_HOME=/var/www/html' | sudo tee -a /etc/profile
source /etc/profile
# 假设Web应用代码位于当前目录的webapp目录下
if [ -d "webapp" ]; then
if [ "$OS" == "Linux" ]; then
sudo cp -r webapp/* $WEB_APP_HOME
elif [ "$OS" == "Darwin" ]; then
cp -r webapp/* /usr/local/var/www
fi
else
echo "Web application code directory not found"
exit 1
fi
# 启动服务
if [ "$PACKAGE_MANAGER" == "yum" ]; then
sudo systemctl start httpd
sudo systemctl enable httpd
elif [ "$PACKAGE_MANAGER" == "apt-get" ]; then
sudo systemctl start apache2
sudo systemctl enable apache2
elif [ "$PACKAGE_MANAGER" == "brew" ]; then
brew services start httpd
fi
# 性能优化相关
# 对于Linux系统,优化httpd/apache2配置
if [ "$OS" == "Linux" ]; then
if [ "$PACKAGE_MANAGER" == "yum" ]; then
sudo sed -i 's/#ServerLimit 256/ServerLimit 128/' /etc/httpd/conf/httpd.conf
sudo sed -i 's/#MaxRequestWorkers 256/MaxRequestWorkers 128/' /etc/httpd/conf/httpd.conf
elif [ "$PACKAGE_MANAGER" == "apt-get" ]; then
sudo sed -i 's/#ServerLimit 256/ServerLimit 128/' /etc/apache2/apache2.conf
sudo sed -i 's/#MaxRequestWorkers 256/MaxRequestWorkers 128/' /etc/apache2/apache2.conf
fi
sudo systemctl restart httpd
elif [ "$OS" == "Darwin" ]; then
# 对于macOS,优化httpd配置
sudo sed -i '' 's/#ServerLimit 256/ServerLimit 128/' /usr/local/etc/httpd/httpd.conf
sudo sed -i '' 's/#MaxRequestWorkers 256/MaxRequestWorkers 128/' /usr/local/etc/httpd/httpd.conf
brew services restart httpd
fi
echo "Web application deployed successfully"
上述脚本实现了在CentOS、Ubuntu和macOS系统上自动化部署Web应用的功能。脚本首先检测操作系统类型并确定对应的包管理器,然后安装所需依赖软件包,配置环境变量,复制Web应用代码到相应目录,并启动Web服务。同时还对Web服务(httpd/apache2)进行了简单的性能优化配置,减少资源消耗。
请注意:
- 上述脚本中的Web应用代码位置假设在当前目录的
webapp
目录下,实际应用中需根据真实路径调整。 - 对于MySQL相关配置,脚本仅安装了客户端,实际应用中可能需要更详细的数据库配置和连接设置。