Shell脚本如何快速部署LAMP服务

wen 实用脚本 2

本文目录导读:

Shell脚本如何快速部署LAMP服务

  1. 方案一:一键部署脚本(适用于CentOS/RHEL)
  2. 方案二:Ubuntu/Debian系统脚本
  3. 方案三:增强版脚本(支持自定义配置)
  4. 使用说明
  5. 快速部署命令(一行命令)

我将为您提供几个快速部署LAMP(Linux+Apache+MySQL+PHP)环境的Shell脚本方案。

一键部署脚本(适用于CentOS/RHEL)

#!/bin/bash
# LAMP Stack Quick Deploy Script for CentOS/RHEL 7/8
set -e  # 遇到错误立即退出
echo "Starting LAMP deployment..."
# 1. 更新系统
echo "Updating system packages..."
yum update -y || { echo "System update failed"; exit 1; }
# 2. 安装EPEL仓库
echo "Installing EPEL repository..."
yum install -y epel-release
# 3. 安装Apache
echo "Installing Apache..."
yum install -y httpd httpd-devel
# 启动并设置开机自启
systemctl start httpd
systemctl enable httpd
# 4. 安装MariaDB(MySQL兼容)
echo "Installing MariaDB..."
yum install -y mariadb-server mariadb
systemctl start mariadb
systemctl enable mariadb
# 5. 安全配置MariaDB(自动设置root密码)
MYSQL_ROOT_PASSWORD=$(openssl rand -base64 12)
mysqladmin -u root password "$MYSQL_ROOT_PASSWORD"
# 6. 安装PHP及常用扩展
echo "Installing PHP..."
yum install -y php php-mysqlnd php-gd php-xml php-mbstring php-json
# 7. 创建测试页面
echo "<?php phpinfo(); ?>" > /var/www/html/info.php
# 8. 配置防火墙
echo "Configuring firewall..."
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
# 9. 重启Apache使配置生效
systemctl restart httpd
echo "========================================"
echo "LAMP deployment completed successfully!"
echo "Apache: http://$(hostname -I | awk '{print $1}')"
echo "MySQL Root Password: $MYSQL_ROOT_PASSWORD"
echo "PHP Info: http://$(hostname -I | awk '{print $1}')/info.php"
echo "========================================"

Ubuntu/Debian系统脚本

#!/bin/bash
# LAMP Stack Quick Deploy Script for Ubuntu/Debian
set -e
echo "Starting LAMP deployment on Ubuntu/Debian..."
# 更新包列表
apt-get update -y
# 安装Apache
apt-get install -y apache2 apache2-utils
# 启动Apache
systemctl start apache2
systemctl enable apache2
# 安装MySQL
apt-get install -y mysql-server mysql-client
# 自动设置MySQL安全配置
MYSQL_ROOT_PASSWORD=$(openssl rand -base64 12)
debconf-set-selections <<< "mysql-server mysql-server/root_password password $MYSQL_ROOT_PASSWORD"
debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $MYSQL_ROOT_PASSWORD"
systemctl start mysql
systemctl enable mysql
# 安装PHP
apt-get install -y php libapache2-mod-php php-mysql php-gd php-xml php-mbstring php-curl
# 创建测试文件
echo "<?php phpinfo(); ?>" > /var/www/html/info.php
# 重启Apache
systemctl restart apache2
# 配置UFW防火墙
ufw allow 80/tcp
ufw allow 443/tcp
echo "========================================"
echo "LAMP部署完成!"
echo "Apache: http://$(hostname -I | awk '{print $1}')"
echo "MySQL密码: $MYSQL_ROOT_PASSWORD"
echo "PHP信息: http://$(hostname -I | awk '{print $1}')/info.php"
echo "========================================"

增强版脚本(支持自定义配置)

#!/bin/bash
# Enhanced LAMP Deployment Script with Custom Options
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 函数:打印状态消息
print_status() {
    echo -e "${GREEN}[+]${NC} $1"
}
print_error() {
    echo -e "${RED}[-]${NC} $1"
}
print_info() {
    echo -e "${YELLOW}[*]${NC} $1"
}
# 检测系统类型
detect_os() {
    if [ -f /etc/os-release ]; then
        . /etc/os-release
        OS=$ID
        VERSION=$VERSION_ID
    else
        OS=$(uname -s)
    fi
}
# 安装LAMP组件
install_lamp() {
    local PHP_VERSION=${1:-"7.4"}
    detect_os
    case $OS in
        centos|rhel|fedora)
            # CentOS/RHEL安装逻辑
            yum install -y httpd mariadb-server mariadb
            yum install -y php php-mysqlnd php-gd php-xml php-mbstring
            ;;
        ubuntu|debian)
            # Ubuntu/Debian安装逻辑
            apt-get install -y apache2 mysql-server
            apt-get install -y php php-mysql php-gd php-xml php-mbstring
            ;;
        *)
            print_error "不支持的操作系统: $OS"
            exit 1
            ;;
    esac
}
# 配置虚拟主机
setup_virtual_host() {
    local DOMAIN=$1
    local DOCUMENT_ROOT=${2:-"/var/www/$DOMAIN"}
    mkdir -p "$DOCUMENT_ROOT"
    echo "<h1>Welcome to $DOMAIN</h1>" > "$DOCUMENT_ROOT/index.html"
    # 创建虚拟主机配置文件
    cat > /etc/httpd/conf.d/$DOMAIN.conf <<EOF
<VirtualHost *:80>
    ServerName $DOMAIN
    DocumentRoot $DOCUMENT_ROOT
    <Directory $DOCUMENT_ROOT>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog /var/log/httpd/$DOMAIN-error.log
    CustomLog /var/log/httpd/$DOMAIN-access.log combined
</VirtualHost>
EOF
    systemctl reload httpd
    print_status "虚拟主机 $DOMAIN 配置完成"
}
# 主函数
main() {
    print_info "开始部署LAMP环境..."
    # 默认安装
    install_lamp "7.4"
    # 可选:创建虚拟主机
    read -p "是否创建虚拟主机?(y/n): " CREATE_VHOST
    if [ "$CREATE_VHOST" = "y" ]; then
        read -p "请输入域名: " DOMAIN
        setup_virtual_host "$DOMAIN"
    fi
    print_status "LAMP部署成功完成!"
}
# 运行主函数
main

使用说明

基本使用

# 给脚本执行权限
chmod +x lamp_deploy.sh
# 运行脚本
./lamp_deploy.sh

安全注意事项

# 运行MySQL安全配置脚本
mysql_secure_installation

验证安装

# 检查服务状态
systemctl status httpd
systemctl status mysqld
# 测试PHP
curl http://localhost/info.php

快速部署命令(一行命令)

# CentOS系统
curl -sSL https://raw.githubusercontent.com/your-repo/lamp-setup/main/centos.sh | bash
# Ubuntu系统
curl -sSL https://raw.githubusercontent.com/your-repo/lamp-setup/main/ubuntu.sh | bash

这些脚本提供了快速部署LAMP环境的解决方案,您可以根据实际需求选择使用,记得在生产环境中修改默认密码并关闭PHP信息页面。

抱歉,评论功能暂时关闭!