当前位置: 首页 > news >正文

shell 脚本搭建apache

#!/bin/bash
# Set Apache version to install
## author: yuan

# 检查外网连接
echo "检查外网连接..."
ping www.baidu.com -c 3 > /dev/null 2>&1
if [ $? -eq 0 ]; then
    echo "外网通讯良好!"
else
    echo "网络连接失败,请检查你的网络设置!"
    exit 1
fi
sleep 5

# 检查并安装 APR 库
echo "检查并安装 APR 库..."
if [ -f "/usr/include/apr.h" ]; then
    echo "APR 库已安装"
else
    echo "APR 库未安装,开始从网络安装..."
    if [ -f "/etc/debian_version" ]; then
        sudo apt-get update
        sudo apt-get install -y libapr1-dev libaprutil1-dev
    elif [ -f "/etc/redhat-release" ]; then
        sudo yum install -y apr-devel apr-util-devel
    else
        echo "不支持的 Linux 发行版,无法自动安装 APR 库"
        exit 1
    fi
fi
sleep 5

# 检查并安装 PCRE 库
echo "检查并安装 PCRE 库..."
if [ -f "/usr/include/pcre.h" ]; then
    echo "PCRE 库已安装"
else
    echo "PCRE 库未安装,开始从网络安装..."
    if [ -f "/etc/debian_version" ]; then
        sudo apt-get update
        sudo apt-get install -y libpcre3-dev
    elif [ -f "/etc/redhat-release" ]; then
        sudo yum install -y pcre-devel
    else
        echo "不支持的 Linux 发行版,无法自动安装 PCRE 库"
        exit 1
    fi
fi
sleep 5

# 定义 Apache 版本变量
APACHE_VERSION="2.4.56"  # 示例版本,根据需要修改
APACHE_TARBALL="http://archive.apache.org/dist/httpd/httpd-$APACHE_VERSION.tar.gz"
APACHE_TARBALL_NAME="httpd-$APACHE_VERSION.tar.gz"
echo "定义 Apache 版本为 $APACHE_VERSION"
sleep 5

# 下载 Apache 安装包
echo "开始下载 Apache $APACHE_VERSION..."
curl -O $APACHE_TARBALL
if [ $? -ne 0 ]; then
    echo "下载失败,请检查网络连接或 Apache 版本号是否正确!"
    exit 1
fi
echo "下载完成!"
sleep 5

# 解压安装包
tar -zxvf $APACHE_TARBALL_NAME
cd httpd-$APACHE_VERSION

# 检测 APR 安装路径
APR_CONFIG=$(which apr-1-config)
if [ -z "$APR_CONFIG" ]; then
    echo "未能找到 apr-1-config,请确保 APR 已正确安装并指定正确的路径"
    exit 1
fi

# 编译安装 Apache
echo "开始编译安装 Apache..."
./configure --prefix=/usr/local/apache --with-apr=$(dirname $APR_CONFIG) --with-pcre=/usr
if [ $? -ne 0 ]; then
    echo "配置失败,请检查错误信息!"
    exit 1
fi

make
if [ $? -ne 0 ]; then
    echo "编译失败,请检查错误信息!"
    exit 1
fi

make install
echo "Apache 安装完成!"
sleep 5

# 配置防火墙和权限
echo "配置防火墙和权限..."
systemctl stop firewalld
systemctl disable firewalld
echo "防火墙已经关闭"

sed -i 's/SELINUX=*/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
echo "SELinux 已禁用"
sleep 5

# 启动 Apache 服务
echo "启动 Apache 服务..."
/usr/local/apache/bin/apachectl start
if [ $? -eq 0 ]; then
    echo "Apache 服务启动成功!"
else
    echo "Apache 服务启动失败,请检查错误信息!"
    exit 1
fi
sleep 5

echo "Apache 安装和配置完成!"

测试

相关文章:

  • MCP(Model Context Protocol)的介绍与开发初体验
  • Java面试黄金宝典4
  • Clion远程开发配置
  • 【QA】C和C++有哪些常用的调用约定
  • 记录一次,rabbitmq开启stomp插件之后,还是连不上15674端口的问题
  • Baklib企业CMS元数据与协作管理优化
  • Java Spring 中循环依赖的解决之道
  • npm error gyp info
  • AI里的RAG到底是什么?
  • 春天遇到了冬天的吻
  • 《解锁元宇宙构建:AI与云原生区块链的协同奥秘》
  • Web爬虫利器FireCrawl:全方位助力AI训练与高效数据抓取。本地部署方式
  • openEuler24.03 LTS下安装Hive3
  • 十四、OSG学习笔记-事件响应
  • WEB攻防-PHP反序列化-字符串逃逸
  • 如何测试交换机数据回流
  • C#中修饰符——abstract、virtual
  • 天梯赛 PTAL2-009 抢红包
  • Hugging Face模型国内镜像HF Mirror下载
  • Python Pyecharts面试题及参考答案
  • 来论|受美国“保护”,日本民众要付出什么代价?
  • 荣盛发展股东所持1.17亿股将被司法拍卖,起拍价约1.788亿元
  • 孙磊已任中国常驻联合国副代表、特命全权大使
  • 不准打小孩:童年逆境经历视角下的生育友好社会
  • 80后共青团云南省委副书记许思思已任迪庆州委副书记
  • 游客曝九寨沟打网约车被出租车围堵,景区回应:当地无合规网约车