Centos自动化部署LAMP平台

慈云数据 2024-06-15 技术支持 53 0
  • 实验目的

    实验目的通常是让学生掌握在RedHat Linux系统上部署LAMP平台的技能,了解各组件的基本配置和使用,以及如何通过它们构建一个基本的Web应用环境。

    1. 学习和掌握Linux、Apache、MySQL、PHP等相关技术:通过部署LAMP集群,可以深入学习Linux操作系统的使用,以及Apache、MySQL、PHP等软件的配置和管理,从而提升对这些技术的理解和掌握。
    2. 提高Web服务器的性能和稳定性:LAMP集群可以提供高性能、高并发的Web服务,通过负载均衡和容错机制,可以有效提高服务器的稳定性和可用性。
    3. 降低成本:通过云计算的弹性伸缩和按需付费等特点,可以降低服务器的硬件成本和维护成本,提高资源的利用率。
    4. 探索云计算和大数据应用:通过部署LAMP集群,可以进一步探索云计算和大数据应用的相关技术和实践,为未来的学习和工作打下坚实的基础。
    5. 实践操作能力提升:部署LAMP集群需要进行一系列的实践操作,包括服务器的选购、配置、部署和管理等,可以提升实践操作能力,加深对相关知识的理解和运用。

    二、实验内容:

    需求:

    Centos自动化部署LAMP平台

    LAMP简介:

    LAMP是Linux、Apache、Mysql/MariaDB、PHP的简称,LAMP通常被用来建站,或者运行 Web 应用程序。

    Apache是web服务器软件,用来提供http服务。Nginx也一样。

    Mysql/MariaDB 是关系型数据库管理系统,它用于存储和管理数据。

    PHP是一种在服务器端执行的嵌入html文档的脚本语言

    LAMP是一组通常一起使用来运行动态网站或服务器的自由软件名称首字母缩写,具体包括:

    • Linux:操作系统。LAMP架构的基础,提供底层系统支持,包括硬件抽象、多任务环境、资源管理和网络功能等。
    • Apache:网页服务器。它提供了一个用于发布和提供网页的框架,可以处理HTTP请求并返回相应的网页内容。Apache服务器因其高性能和灵活性而广泛应用。
    • MySQL/MariaDB:数据库管理系统。它提供了数据存储、检索和管理功能,使得网站能够存储用户数据、文章、评论等动态内容。MySQL/MariaDB是开源的,并且具有高性能和可扩展性。
    • PHP/Perl/Python:编程语言。这些语言用于编写服务器端脚本,处理来自浏览器的请求,并与数据库进行交互。它们可以生成动态网页内容,实现用户交互和数据处理等功能。

      LAMP架构的优势在于其开源、免费、跨平台等特性,使得它成为构建动态网站和Web应用程序的流行选择。此外,LAMP架构还具有良好的可扩展性和可定制性,可以根据项目的具体需求进行调整和优化。

      总之,LAMP架构是一种稳定、高效、灵活和可扩展的Web开发环境,适用于各种规模的网站和Web应用程序。

      完成

      需求:

      • RedHat Linux系统已安装并配置好网络。
      • 系统已连接到互联网以便下载必要的软件包。

        步骤:

        1. 安装Apache
          • 使用YUM或DNF命令安装Apache。
          • 启动Apache服务并设置开机自启。
          • 测试Apache是否正常运行(通常是通过访问http://localhost或服务器的IP地址)。
        2. 安装MySQL/MariaDB
          • 使用YUM或DNF命令安装MySQL或MariaDB。
          • 启动数据库服务并设置开机自启。
          • 运行MySQL的安全安装脚本以设置root密码、删除匿名用户等。
          • 创建一个用于Web应用的数据库和用户。
        3. 安装PHP
          • 使用YUM或DNF命令安装PHP及其相关模块(如php-mysqli,用于连接MySQL数据库)。
          • 配置Apache以支持PHP(通常在httpd.conf或额外的配置文件中)。
          • 创建一个PHP测试页面并放置在Apache的文档根目录下。
          • 访问测试页面以确保PHP能够正确解析和执行。
        4. 配置LAMP平台
          • 根据需要调整Apache、MySQL/MariaDB和PHP的配置文件。
          • 确保所有服务都正常运行并相互兼容。
        5. 部署Web应用
          • 将Web应用的代码和文件上传到服务器的适当位置。
          • 配置Web应用以连接到数据库(如果需要)。
          • 测试Web应用以确保它能够正常工作。

        完成情况:

        • 在centos、centostest和centosdatabase三台机器进行LAMP平台的配置。
        • centos安装PHP和Apache,通过phpMyAdmin允许访问centosdatabase的数据库,centosdatabase安装数据库MySQL/MariaDB。
        • centos’test允许访问Red Hat,Red Hat允许访问centosdatabase,但centostest不能访问centosdatabase
        • 增加centos服务Apche的端口10080和修改centosdatabase服务Mariadb端口30301和增加三台机器的服务ssh端口10022
        • 三台机器都可以通过Mobaxterm远程连接
        • 三台机器不允许互相连接
        • centostest只允许通过Apche端口10080访问centos,centos只允许通过端口30301访问centosdatabase,但centostest不能访问centosdatabase
        • 用到三台机器IP地址分别是centostest:10.0.0.119;centos:10.0.0.219;centosdatabase:10.0.0.110。
        • Apache的版本为2.4.6,PHP的版本为8.0.30,MySQL的版本为5.7.25,phpMyAdmin的版本为latest
        • Apache已成功安装并配置为监听默认端口(通常为80)和10080。
        • MySQL/MariaDB已成功安装并配置为允许远程连接。
        • PHP已成功安装并配置为与Apache一起工作。
        • Web应用已成功部署并可以在互联网上访问。

          测试结果:

          • 通过访问服务器的IP地址或域名,可以成功看到默认的Apache欢迎页面或自定义的PHP测试页面。
          • 如果部署了Web应用,可以成功访问应用的各个页面并执行相应的功能。
          • 数据库连接测试成功,Web应用可以读取和写入数据库中的数据。

            三、实验结果

            注意:在进行部署LAMP平台前,输入yum update/yum -y update用于更新系统上已安装的软件包到其最新版本,防止后续出现问题,服务无法生效。

            部署LAMP平台的环境安全要求【三台机器】在自己配置防火墙规则前,必须保证防火墙全部关闭,selinux模式为disabled/permissive,才能访问网页(再三强调)

            1. 查看防火墙状态

            输入systemctl status firewalld,查看防火墙状态

            1. 若防火墙状态为active(running),关闭防火墙;若防火墙状态为inactive(dead),则不需要进行操作。

            输入systemctl stop firewalld,关闭防火墙

            1. 查看防火墙状态

            输入systemctl status firewalld,查看防火墙状态,查看防火墙是否关闭,inactive(dead)表示已关闭防火墙

            1. 查看selinux模式

            输入getenforce,查看selinux模式

            1. 若selinux模式为Enforcing,则改变selinux模式;若selinux模式为Permissive或Disabled,则不需要进行操作。

            a.输入setenforce 0,改变selinux模式为Permissive,输入getenforce,查看selinux模式是否修改,Permissive表示修改selinux模式成功

            b.输入vim /etc/selinux/config,进入selinux配置文件,找到以SELINUX=开头的行,将SELINUX=后面的值更改为disabled,永久关闭selinux,重启虚拟机,使selinux修改生效,输入getenforce,查看selinux模式是否修改,Disabled表示修改selinux模式成功,永久关闭selinux

            部署LAMP平台的主函数【三台机器】

            1.创建一个main.sh脚本

            输入vim main.sh

            #!/bin/bash

            while true; do

                clear

                echo -e "Welcome\n"

                echo "1. Apache"

                echo "2. php/php-fpm"

                echo "3. phpMyAdmin"

                echo "4. Database"

                echo "5. firewalld(web)"

                echo "6. firewalld(Database)"

                echo "7. firewalld(test)"

                echo "8. exit"

                read -p "请输入您的选择: " choice

                case $choice in

                    1)

                        ./Apache.sh

                        ;;

                    2)

                        ./php.sh

                        ;;

                    3)

                        ./phpMyAdmin.sh

                        ;;

                    4)

                        ./Database.sh

                        ;;

                    5)

                        ./firewalldweb.sh

                        ;;

                    6)

                        ./firewalldDatabase.sh

                        ;;

                    7)

                        ./firewalldtest.sh

                        ;;

                    8)

                        echo -e "\n退出中..."

                        exit 0

                        ;;

                    *)

                        echo -e "\n无效的选择。请输入1到8之间的数字。\n"

                        ;;

                esac

                read -n1 -r -p "按任意键继续..."

            done

            main.sh脚本是一个主菜单脚本,它提供了一个用户界面,让用户可以选择执行一系列不同的脚本,用于自动化部署。

            1. 无限循环:while true; do ... done创建了一个无限循环,这意味着脚本将一直运行,除非用户选择退出(选项8)。
            2. 清屏:clear命令用于清除终端屏幕上的内容,每次循环时都会执行此操作,确保用户始终看到一个清晰的菜单。
            3. 显示菜单:脚本使用echo命令在屏幕上显示一个菜单,列出用户可以选择的选项。
            4. 读取用户输入:read -p "请输入您的选择: " choice命令用于从用户那里获取输入,并将其存储在变量choice中。
            5. 执行子脚本:根据用户的输入(存储在choice变量中),脚本使用case语句来决定执行哪个子脚本(如./Apache.sh、./php.sh等)。这些子脚本应该位于与main.sh相同的目录中,或者其路径应该在脚本中正确指定。
            6. 退出:如果用户选择选项8,脚本将显示一条消息并退出,返回状态码0(表示成功)。
            7. 错误处理:如果用户输入了一个无效的选择(即不是1到8之间的数字),脚本将显示一条错误消息,并提示用户输入一个有效的选择。
            8. 等待用户按键:在每次执行完子脚本或显示错误消息后,脚本都会等待用户按下一个键(read -n1 -r -p "按任意键继续..."),然后再次显示菜单。

            2.赋予脚本可执行权限

            输入chmod +x main.sh

            3.执行脚本

            输入./main.sh

             

            部署LAMP平台的A,即Apache(httpd)【centos】

            1.创建一个Apache.sh脚本

            输入vim Apache.sh

            #!/bin/bash

            # 检查是否已经安装Apache

            function apachecheck(){

            echo "[INFO] 检查是否已经安装Apache..."

            if command -v httpd &> /dev/null; then

                echo "[INFO] Apache 已安装."

                read -p "是否要删除已安装的Apache? (Y/N): " confirm

                if [[ $confirm == [Yy] ]]; then

                    echo "[INFO] 删除已安装的httpd..."

                    systemctl stop httpd

                    yum remove -y httpd

                else

                    echo "[INFO] 保留已安装的Apache, 退出脚本."

                    exit 0

                fi

            fi

            }

            #安装Apache

            function apacheinstall(){

            echo "[INFO] 开始Apache安装, 请等待..."

            yum install -y httpd

            systemctl start httpd

            systemctl status httpd

            systemctl enable httpd

            }

            #修改Apache端口

            function apachefix(){

            setenforce 0

            systemctl stop firewalld

            echo "[INFO] 开始修改Apache端口, 请等待..."

            echo '  Listen 10080' | sudo tee -a /etc/httpd/conf/httpd.conf >/dev/null

            systemctl restart httpd

            netstat -tuln

            }

            #主函数

            main(){

            apachecheck

            apacheinstall

            apachefix

            }

            main

            1. 检查Apache是否已安装 (apachecheck 函数):
              • 检查是否已经安装了httpd(Apache HTTP服务器)命令。
              • 如果已安装,询问用户是否要删除它。
              • 如果用户选择Y,则停止httpd服务,并使用yum命令卸载它。
              • 如果用户选择N或输入了其他内容,则脚本将退出。
            2. 安装Apache (apacheinstall 函数):
              • 使用yum命令安装httpd。
              • 启动httpd服务。
              • 检查httpd服务的状态。
              • 启用httpd服务以便在系统启动时自动运行。
            3. 修改Apache端口 (apachefix 函数):
              • 临时关闭SELinux(通过setenforce 0)。
              • 停止firewalld服务(不过通常不推荐直接停止防火墙服务,因为这可能会使系统暴露在不安全的环境中)。
              • 在/etc/httpd/conf/httpd.conf文件的末尾追加一行来监听新的端口(10080)。
              • 重启httpd服务。
              • 显示当前的网络监听情况(使用netstat -tuln)。

            主函数 (main):

            • 依次调用apachecheck、apacheinstall和apachefix函数。

              2.赋予脚本可执行权限

              输入chmod +x Apache.sh

              3.执行脚本

              输入./main.sh

              选择1

              1.选择Y,删除已安装的Apache并重新安装

              2.选择N,不删除Apache

              测试Apache是否正常运行

              在虚拟机中的火狐浏览器的地址输入栏中,通过访问http://localhost或服务器的IP地址:10080,并按Enter键,显示如下页面表示安装成功。在lamptest机器的火狐浏览器的地址输入栏中,输入http://10.0.0.219:10080,测试Apache是否正常运行,显示如下页面表示安装成功。

              部署LAMP平台的P,即PHP【centos】

              1.创建一个php.sh脚本

              输入vim php.sh

              #!/bin/bash

              # 检查是否已经安装php

              function phpcheck(){

              echo "[INFO] 检查是否已经安装php..."

              if command -v php &> /dev/null; then

                  echo "[INFO] php 已安装."

                  read -p "是否要删除已安装的php? (Y/N): " confirm

                  if [[ $confirm == [Yy] ]]; then

                      echo "[INFO] 删除已安装的php..."

                      yum remove -y php

                      yum remove -y php-mysqli

                      yum remove -y php-fpm

                  else

                      echo "[INFO] 保留已安装的php, 退出脚本."

                      exit 0

                  fi

              fi

              }

              #安装php

              function phpinstall(){

              echo "[INFO] 开始php安装, 请等待..."

              yum install -y php

              php -v

              yum remove -y php*

              yum install -y yum-utils

              sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

              sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

              sudo yum-config-manager --disable 'remi-php*'

              sudo yum-config-manager --enable remi-php80

              sudo yum install -y php

              sudo yum install -y php-{extension_name}

              php -v

              yum install -y php-mysqli

              yum install -y php-fpm

              systemctl start httpd

              systemctl status httpd

              }

              #修改php配置文件

              function phpfix(){

              setenforce 0

              systemctl stop firewalld

              echo "[INFO] 开始修改php配置文件, 请等待..."

              touch /var/www/html/phpinfo.php

              echo '' | sudo tee -a /var/www/html/phpinfo.php >/dev/null

              systemctl restart httpd

              systemctl status httpd

              }

              #主函数

              main(){

              phpcheck

              phpinstall

              phpfix

              }

              main

              1.检查php是否已安装 (phpcheck 函数):

                • 检查是否已经安装了php命令。
                • 如果已安装,询问用户是否要删除它。
                • 如果用户选择Y,则停止php服务,并使用yum命令卸载它。
                • 如果用户选择N或输入了其他内容,则脚本将退出。

                2.安装php(phpinstall 函数):

                  • 使用yum命令安装php。
                  • 提高PHP的版本。
                  • 启动httpd服务。
                  • 检查httpd服务的状态。

                  3.修改php端口 (phpfix 函数):

                    • 临时关闭SELinux(通过setenforce 0)。
                    • 停止firewalld服务(不过通常不推荐直接停止防火墙服务,因为这可能会使系统暴露在不安全的环境中)。
                    • 在/var/www/html/phpinfo.php文件的加入php显示界面,在网站根目录创建测试网页,并把phpinfo()函数添加至网页内容中,phpinfo()函数会展示PHP的所有配置信息。
                    • 重启httpd服务。

                    主函数 (main):

                    • 依次调用phpcheck、phpinstall和phpfix函数。

                      2.赋予脚本可执行权限

                      输入chmod +x php.sh

                      3.执行脚本

                      输入./main.sh

                      选择2

                      1.选择Y,删除已安装的php并重新安装

                      2.选择N,不删除php

                      测试PHP是否正常运行

                      在虚拟机中的火狐浏览器的地址输入栏中,通过访问http://localhost或服务器的IP地址:10080/phpinfo.php,并按Enter键,显示如下页面表示安装成功。在lamptest机器的火狐浏览器的地址输入栏中,输入http://10.0.0.219:10080/phpinfo.php

                      ,测试PHP是否正常运行,显示如下页面表示安装成功。

                      部署LAMP平台的M,即Mysql【centosdatabase】

                      1.创建一个Database.sh脚本

                      输入vim Database.sh

                      #!/bin/bash

                      # date: 2024-01-21

                      # file: mysql5.7.sh

                      # info: 安装mysql5.7

                      ########################################################################

                      binDir='/usr/local/mysql'                       # mysql程序安装目录

                      dataDir='/bigdata/mysql/mysqldata'              # mysql数据存储目录

                      mysqlPassword='123456'          # mysql超级用户密码

                      ########################################################################

                      BASE=$(cd `dirname $0` && pwd)

                      cd $BASE

                      check() {

                        # 检查路径变量, 附上rm -fr误删

                        keyword='/mysql'

                        if ! echo "${binDir}" |grep ${keyword} &>/dev/null; then

                          echo "[ERROR] ${binDir}配置错误, 没有包含${keyword}"

                          exit 1

                        fi

                        if ! echo "${dataDir}" |grep ${keyword} &>/dev/null; then

                          echo "[ERROR] ${dataDir}配置错误, 没有包含${keyword}"

                          exit 1

                        fi

                      }

                      installmysql() {

                        # 解压

                        echo "[INFO] 开始解压mysql安装包, 请等待..."

                        tar zxf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz && mv mysql-5.7.25-linux-glibc2.12-x86_64 ${binDir}

                      }

                      mkdirmysql() {

                      setenforce 0

                      systemctl stop firewalld

                        # 添加用户

                        echo "[INFO] 创建mysql组与用户..."

                        groupadd mysql 2>/dev/null

                        useradd -r -g mysql mysql 2>/dev/null

                        # 创建数据目录

                        echo "[INFO] 创建mysql数据目录..."

                        mkdir -p  ${dataDir} && chown -R mysql:mysql ${dataDir}

                        chown -R mysql:mysql ${binDir}

                        # 创建mysql配置文件

                        echo "[INFO] 创建mysql配置文件:/etc/my.cnf ..."

                        read -p "输入mysql连接的端口" PORT

                        cat >/etc/my.cnf

                      p     local key="$1"/p p     local value="$2"/p p     grep -qF "\$cfg['Servers'][$I]['$key'] = $value;" "$CONFIG_FILE" || echo "\$cfg['Servers'][$I]['$key'] = $value;" > "$CONFIG_FILE"

                      }

                      # 使用函数追加配置项

                      append_if_not_exists 'host' "'$HOST'"

                      append_if_not_exists 'compress' 'false'

                      append_if_not_exists 'AllowNoPassword' 'false'

                      append_if_not_exists 'user' "'$USER'"

                      append_if_not_exists 'password' "'$PASSWORD'"

                      append_if_not_exists 'port' "'$PORT'"

                      append_if_not_exists 'socket' "''"

                      systemctl restart php-fpm

                      systemctl restart httpd

                      setenforce 0

                      systemctl stop firewalld.service

                      }

                      #主函数

                      main(){

                      phpMyAdmincheck

                      phpMyAdmininstall

                      phpMyAdminfix

                      }

                      main

                      1. phpMyAdmincheck

                      • 功能:检查是否已经安装了 phpMyAdmin。
                      • 过程:
                        • 检查 /var/www/html/phpMyAdmin 目录是否存在。
                        • 如果存在,则提示用户是否要删除已安装的 phpMyAdmin。
                        • 如果用户确认(输入 Y 或 y),则删除 /var/www/html/phpMyAdmin 目录。
                        • 如果目录不存在,则输出 phpMyAdmin 未安装的消息。

                        2. phpMyAdmininstall

                        • 功能:安装 phpMyAdmin。
                        • 过程:
                          • 下载最新的 phpMyAdmin 压缩包。
                          • 切换到 /var/www/html/ 目录。
                          • 创建一个名为 phpMyAdmin 的目录。
                          • 解压下载的压缩包到 /var/www/html/phpMyAdmin 目录,并移除一层目录结构(--strip-components 1)。
                          • 安装 PHP 的 mbstring 和 xml 扩展。
                          • 重启 httpd(Apache HTTP 服务器)和 php-fpm(PHP FastCGI 进程管理器)服务。

                          3. phpMyAdminfix

                          • 功能:配置 phpMyAdmin。
                          • 过程:
                            • 临时禁用 SELinux(通过 setenforce 0)和防火墙服务(通过 systemctl stop firewalld)。注意,在生产环境中长期禁用 SELinux 或防火墙是不安全的。
                            • 切换到 /var/www/html/phpMyAdmin 目录。
                            • 复制 config.sample.inc.php 到 config.inc.php(这是 phpMyAdmin 的配置文件)。
                            • 备份原始的配置文件(config.inc.php)。
                            • 定义了一个名为 append_if_not_exists 的函数,该函数用于检查 config.inc.php 中是否存在某个配置项,如果不存在则追加到文件末尾。
                            • 使用 append_if_not_exists 函数,向 config.inc.php 文件中追加或更新数据库连接信息(如主机名、用户名、密码、端口等)。

                            3. main

                              • 这是脚本的主函数,它按照顺序调用上述所有函数来执行 phpMyAdmin的安装、配置和用户添加过程。

                              2.赋予脚本可执行权限

                              输入chmod +xphpMy'Admi.sh

                              3.执行脚本

                              输入./main.sh

                              选择3

                              1.选择Y,删除已安装phpMyAdmin并重新安装

                              2.选择N,不删除phpMyAdmin

                              登录phpMyAdmin

                              测试phpMyAdmin是否正常运行

                              在虚拟机中的火狐浏览器的地址输入栏中,通过访问http://localhost或服务器的IP地址:10080/phpMyAdmin/index.php,并按Enter键,显示如下页面表示安装成功。在lamptest机器的火狐浏览器的地址输入栏中,输入http://10.0.0.219:10080/phpMyAdmin/index.php

                              ,测试phpMyAdmin是否正常运行,显示如下页面表示安装成功。

                              使用的cookie认证,输入用户密码

                               

                              部署LAMP平台之允许三台机器在防火墙开启的状态下可以远程连接和在特定端口   访问网页以及三台机器相互之间不能访问(利用防火墙规则firewalld)【三台机器】

                              若要访问新增端口的phpMyAdmin网页,会出现虚拟机中火狐浏览器安全问题无法访问,需要进行如下操作,即可访问网页。

                              打开新标签页->地址栏输入about:config->点击回车->搜索首选项network.security.ports.banned.override->如果没有添加,将String值填入10080->保存后重启浏览器。

                              1.1.

                              部署LAMP平台之web服务器的防火墙和互相不访问【centos】

                              1.创建一个firewalldweb.sh脚本

                              输入vim firewalldweb.sh

                              #!/bin/bash

                              #修改ssh端口

                              fix_ssh(){

                              # 备份SELinux配置文件

                              cp /etc/selinux/config /etc/selinux/config.bak

                              echo "[INFO] SELinux配置文件已备份为/etc/selinux/config.bak"

                              # 修改SELinux状态为disabled

                              sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

                              echo "[INFO] SELinux状态已设置为disabled"

                              # 询问用户是否立即重启系统

                              read -p "SELinux状态已更改,是否现在重启系统?(y/n) " answer

                              case $answer in

                                  y|Y )

                                      echo "[INFO] 正在重启系统..."

                                      sudo reboot

                                      ;;

                                  n|N )

                                      echo "[INFO] 系统未重启,SELinux状态将在下次重启时生效。"

                                      ;;

                                  * )

                                      echo "错误:无效的输入,请输入y或n。"

                                      ;;

                              esac

                              #修改ssh端口

                              echo "[INFO] 修改ssh端口号..."

                              echo '  Port 10022' | sudo tee -a /etc/ssh/sshd_config >/dev/null

                              #重启mysql

                              service sshd restart

                              }

                              # 检查并添加防火墙规则的函数

                              add_firewall_rule() {

                                  local rule=$1

                                  if firewall-cmd --permanent --query-rich-rule="$rule"; then

                                      echo "规则已存在: $rule"

                                  else

                                      firewall-cmd --permanent --add-rich-rule="$rule"

                                      echo "添加成功: $rule"

                                  fi

                              }

                              # 配置 Web 端防火墙

                              configure_web_firewall() {

                                  echo "配置 Web 端防火墙..."

                                  systemctl start firewalld.service

                                  systemctl restart firewalld.service

                              firewall-cmd --list-all

                              firewall-cmd --add-port=10022/tcp --permanent

                                  add_firewall_rule 'rule family="ipv4" source address="10.0.0.119" port protocol="tcp" port="10080" accept'

                                  add_firewall_rule 'rule family="ipv4" source address="10.0.0.119" port protocol="tcp" port="80" reject'

                                  firewall-cmd --reload

                                  add_firewall_rule 'rule family="ipv4" source address="10.0.0.119" port protocol="tcp" port="10022" reject'

                                  add_firewall_rule 'rule family="ipv4" source address="10.0.0.110" port protocol="tcp" port="10022" reject'

                                  firewall-cmd --reload

                                  firewall-cmd --list-all

                              }

                              #主函数

                              main(){

                              fix_ssh

                              add_firewall_rule

                              configure_web_firewall

                              }

                              main

                              1. 修改 SSH 端口:
                                • 备份 /etc/selinux/config 文件,该文件是 SELinux(Security-Enhanced Linux)的配置文件。
                                • 使用 sed 命令将 SELinux 的状态设置为 disabled(尽管这通常与修改 SSH 端口不直接相关,但脚本中确实包含了这个步骤)。
                                • 询问用户是否立即重启系统以使 SELinux 的更改生效。
                                • 在 /etc/ssh/sshd_config 文件的末尾追加一行来设置 SSH 端口为 10022。
                                • 重启 SSH 服务 (sshd) 以使端口更改生效。
                              2. 检查并添加防火墙规则:
                                • 定义了 add_firewall_rule 函数,该函数用于向防火墙添加或检查规则是否存在。
                                • 但请注意,在 main 函数中调用 add_firewall_rule 时没有提供任何参数,这会导致函数尝试添加一个空的规则,这不是预期的行为。
                              3. 配置 Web 端防火墙:
                                • 启动并重启 firewalld 服务(但重启是不必要的,因为启动后它已经在运行)。
                                • 使用 firewall-cmd 添加 SSH 的新端口(10022)到防火墙的永久规则中。
                                • 调用 add_firewall_rule 函数来添加一些具体的富规则(rich rules),允许或拒绝来自特定 IP 地址和端口的流量。
                                • 重新加载防火墙规则。
                                • 再次调用 add_firewall_rule 函数(这次仍然是不带参数的,因此是无效的)。
                                • 列出所有防火墙规则。

                              2.赋予脚本可执行权限

                              输入chmod +x Database.sh

                              3.执行脚本

                              输入./main.sh

                              选择5

                              部署LAMP平台之Database的防火墙和互相不访问【centosdatabase】

                              1.创建一个firewallddatabase.sh脚本

                              输入vim firewallddatabase.sh

                              #!/bin/bash

                              #修改ssh端口

                              fix_ssh(){

                              # 备份SELinux配置文件

                              cp /etc/selinux/config /etc/selinux/config.bak

                              echo "[INFO] SELinux配置文件已备份为/etc/selinux/config.bak"

                              # 修改SELinux状态为disabled

                              sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

                              echo "[INFO] SELinux状态已设置为disabled"

                              # 询问用户是否立即重启系统

                              read -p "SELinux状态已更改,是否现在重启系统?(y/n) " answer

                              case $answer in

                                  y|Y )

                                      echo "[INFO] 正在重启系统..."

                                      sudo reboot

                                      ;;

                                  n|N )

                                      echo "[INFO] 系统未重启,SELinux状态将在下次重启时生效。"

                                      ;;

                                  * )

                                      echo "错误:无效的输入,请输入y或n。"

                                      ;;

                              esac

                              #修改ssh端口

                              echo "[INFO] 修改ssh端口号..."

                              echo '  Port 10022' | sudo tee -a /etc/ssh/sshd_config >/dev/null

                              #重启mysql

                              service sshd restart

                              }

                              # 检查并添加防火墙规则的函数

                              add_firewall_rule() {

                                  local rule=$1

                                  if firewall-cmd --permanent --query-rich-rule="$rule"; then

                                      echo "规则已存在: $rule"

                                      exit 0

                                  else

                                      firewall-cmd --permanent --add-rich-rule="$rule"

                                      echo "添加成功: $rule"

                                  fi

                              }

                              # 配置 MySQL 端防火墙

                              configure_mysql_firewall() {

                              echo "配置 MySQL 端防火墙..."

                                  systemctl start firewalld.service

                              systemctl restart firewalld.service

                              firewall-cmd --add-port=10022/tcp --permanent

                              add_firewall_rule 'rule family="ipv4" source address="10.0.0.219" port protocol="tcp" port="30317" accept'

                                  add_firewall_rule 'rule family="ipv4" source address="10.0.0.119" port protocol="tcp" port="10022" reject'

                                  add_firewall_rule 'rule family="ipv4" source address="10.0.0.219" port protocol="tcp" port="10022" reject'

                                  firewall-cmd --reload

                                  firewall-cmd --list-all

                              }

                              #主函数

                              main(){

                              fix_ssh

                              add_firewall_rule

                              configure_mysql_firewall

                              }

                              main

                              1. 修改 SSH 端口:
                                • 备份 SELinux 配置文件 /etc/selinux/config 到 /etc/selinux/config.bak。
                                • 将 SELinux 的状态修改为 disabled。
                                • 询问用户是否立即重启系统以应用 SELinux 的更改。
                                • 在 /etc/ssh/sshd_config 文件的末尾追加一行来设置 SSH 端口为 10022。
                                • 重启 SSH 服务 sshd 以使端口更改生效。
                              2. 检查并添加防火墙规则:
                                • 定义了一个函数 add_firewall_rule,它接受一个参数(即防火墙规则),并检查该规则是否已经存在。如果不存在,它将添加该规则。
                              3. 配置 MySQL 端防火墙:
                                • 这个函数的名称可能是误导的,因为它实际上是配置防火墙来允许或拒绝与 SSH(端口 10022)和可能的 MySQL(端口通常不是 10022,但在这个脚本中未明确)相关的流量。
                                • 启动并重启 firewalld 服务(尽管重启是不必要的,因为服务在启动后已经在运行)。
                                • 永久地添加 SSH 的新端口(10022)到防火墙规则中。
                                • 使用 add_firewall_rule 函数添加几个富规则,允许或拒绝来自特定 IP 地址和端口的流量。这些规则与 MySQL 没有直接关系,除非 MySQL 服务运行在端口 30317 上,但通常 MySQL 使用 3306 作为默认端口。
                                • 重新加载防火墙规则以使更改生效。
                                • 列出所有防火墙规则。

                              2.赋予脚本可执行权限

                              输入chmod +x Database.sh

                              3.执行脚本

                              输入./main.sh

                              选择6

                               

                               

                               

                              部署LAMP平台之test的防火墙和互相不访问【centostest】

                              1.创建一个firewalldtest.sh脚本

                              输入vim firewalldtest.sh

                              #!/bin/bash

                              #修改ssh端口

                              fix_ssh(){

                              # 备份SELinux配置文件

                              cp /etc/selinux/config /etc/selinux/config.bak

                              echo "[INFO] SELinux配置文件已备份为/etc/selinux/config.bak"

                              # 修改SELinux状态为disabled

                              sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

                              echo "[INFO] SELinux状态已设置为disabled"

                              # 询问用户是否立即重启系统

                              read -p "SELinux状态已更改,是否现在重启系统?(y/n) " answer

                              case $answer in

                                  y|Y )

                                      echo "[INFO] 正在重启系统..."

                                      sudo reboot

                                      ;;

                                  n|N )

                                      echo "[INFO] 系统未重启,SELinux状态将在下次重启时生效。"

                                      ;;

                                  * )

                                      echo "错误:无效的输入,请输入y或n。"

                                      ;;

                              esac

                              #修改ssh端口

                              echo "[INFO] 修改ssh端口号..."

                              echo '  Port 10022' | sudo tee -a /etc/ssh/sshd_config >/dev/null

                              #重启mysql

                              service sshd restart

                              }

                              # 检查并添加防火墙规则的函数

                              add_firewall_rule() {

                                  local rule=$1

                                  if firewall-cmd --permanent --query-rich-rule="$rule"; then

                                      echo "规则已存在: $rule"

                                      exit 0

                                  else

                                      firewall-cmd --permanent --add-rich-rule="$rule"

                                      echo "添加成功: $rule"

                                  fi

                              }

                              # 配置 Test 端防火墙

                              configure_test_firewall() {

                                  systemctl start firewalld.service

                                  systemctl restart firewalld.service

                              echo "配置 Test 端防火墙..."

                              firewall-cmd --add-port=10022/tcp --permanent

                                  add_firewall_rule 'rule family="ipv4" source address="10.0.0.110" port protocol="tcp" port="10022" reject'

                                  add_firewall_rule 'rule family="ipv4" source address="10.0.0.219" port protocol="tcp" port="10022" reject'

                                  firewall-cmd --reload

                                  firewall-cmd --list-all

                              }

                              #主函数

                              main(){

                              fix_ssh

                              add_firewall_rule

                              configure_test_firewall

                              }

                              main

                              1. 修改SSH端口:
                                • 备份SELinux的配置文件。
                                • 将SELinux的状态修改为disabled。
                                • 询问用户是否要立即重启系统以应用SELinux的更改。
                                • 修改SSH的配置文件/etc/ssh/sshd_config,将SSH端口从默认的22更改为10022。
                                • 重启SSH服务sshd以使新的端口配置生效。
                              2. 检查并添加防火墙规则:
                                • 定义了一个函数add_firewall_rule,它用于检查指定的防火墙规则是否已存在,如果不存在则添加该规则。
                              3. 配置Test端防火墙:
                                • 启动并(冗余地)重启firewalld服务。
                                • 永久地打开SSH的新端口(10022)在防火墙中。
                                • 使用add_firewall_rule函数添加两个规则,这两个规则拒绝来自特定IP地址(10.0.0.110和10.0.0.219)的SSH端口(10022)的连接。
                                • 重新加载防火墙规则以使更改生效。
                                • 列出所有防火墙规则以供检查。

                              2.赋予脚本可执行权限

                              输入chmod +x Database.sh

                              3.执行脚本

                              输入./main.sh

                              选择7

                               

                               

                              部署LAMP平台之测试防火墙规则是否配置成功【centostest】

                              在虚拟机中的火狐浏览器的地址输入栏中,通过访问http://localhost或服务器的IP地址:10080/phpMyAdmin/index.php,并按Enter键,显示如下页面表示安装成功。在lamptest机器的火狐浏览器的地址输入栏中,输入http://10.0.0.219:10080/phpMyAdmin/index.php或http://10.0.0.219/phpMyAdmin/index.php

                              ,测试phpMyAdmin是否正常运行,显示如下页面表示配置成功。

                              使用的cookie认证,输入用户密码

                              在三台机器都配置完防火墙富规则后,输入ssh root@10.0.0.219和ssh root@10.0.0.119和ssh root@10.0.0.110,输出以下页面即为配置防火墙成功。

                               

                               

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon