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 ]; thenecho "外网通讯良好!"
elseecho "网络连接失败,请检查你的网络设置!"exit 1
fi
sleep 5# 检查并安装 APR 库
echo "检查并安装 APR 库..."
if [ -f "/usr/include/apr.h" ]; thenecho "APR 库已安装"
elseecho "APR 库未安装,开始从网络安装..."if [ -f "/etc/debian_version" ]; thensudo apt-get updatesudo apt-get install -y libapr1-dev libaprutil1-develif [ -f "/etc/redhat-release" ]; thensudo yum install -y apr-devel apr-util-develelseecho "不支持的 Linux 发行版,无法自动安装 APR 库"exit 1fi
fi
sleep 5# 检查并安装 PCRE 库
echo "检查并安装 PCRE 库..."
if [ -f "/usr/include/pcre.h" ]; thenecho "PCRE 库已安装"
elseecho "PCRE 库未安装,开始从网络安装..."if [ -f "/etc/debian_version" ]; thensudo apt-get updatesudo apt-get install -y libpcre3-develif [ -f "/etc/redhat-release" ]; thensudo yum install -y pcre-develelseecho "不支持的 Linux 发行版,无法自动安装 PCRE 库"exit 1fi
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 ]; thenecho "下载失败,请检查网络连接或 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" ]; thenecho "未能找到 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 ]; thenecho "配置失败,请检查错误信息!"exit 1
fimake
if [ $? -ne 0 ]; thenecho "编译失败,请检查错误信息!"exit 1
fimake 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 ]; thenecho "Apache 服务启动成功!"
elseecho "Apache 服务启动失败,请检查错误信息!"exit 1
fi
sleep 5echo "Apache 安装和配置完成!"

测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36582.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux环境使用jmeter做性能测试

一、安装JDK,版本jdk1.8 1、下载压缩包到/jdk目录下解压 cd /jdk tar -zxvf jdk-8u241-linux-64.tar.gz 2、配置环境变量 在profile文件中末尾新增信息如下所示 vim /etc/profile export JAVA_HOME/usr/local/java/jdk/jdk1.8.0_221 export PATH$PATH:$JAVA_HOM…

巧用符号链接搬移C盘中的软件数据目录到其他盘

#工作记录 我们知道,在Windows11系统,有些软件是不能指定安装目录的,有些软件即使指定了安装目录可是在更新版本之后还是会安装到默认的C盘目录中(比如剪映),而且每次安装某些软件之后,这些软件…

Mysql的安装配置

目录 MySQL 简介 MySQL 的下载安装 mysql配置【默认以及下载好】 (1)配置环境变量 (2)修改配置文件 (3)以管理员身份运行cmd(一定要用管理员身份运行,不然权限不够) …

登山第二十梯:无人机实时自主探索——我是一只小小小鸟

文章目录 一 摘要 二 资源 三 内容 一 摘要 自主探索是无人机 (UAV) 各种应用的基本问题。最近,基于 LiDAR 的探索因其能够生成大规模环境的高精度点云地图而受到广泛关注。虽然点云本身就为导航提供了信息,但许多现有的勘探方…

基于FPGA轨道交通6U机箱CPCI脉冲板板卡

板卡简介: 本板为脉冲板,脉冲板主要执行CPU下达的指令,通过实现各种控制算法来调节PWM,然后输出光纤PWM信号来驱动变频器功率模块以达到控制电机的目的。 性能规格: 电源:DC5V;15V FPGA&…

一键批量txt转DWG,DWG转txt——插件实现 CAD c#二次开发

如下图,我们有大量dwg需要转为txt格式,或txt格式坐标需要转为dwg格式,此插件可一键完成一个文件夹下所有文件的转换。 插件使用方式 命令行输入: netload 加载此dll插件, 输入: dwg2txt 可将dwg转为t…

【Unity基础】Unity中角色动画的三种实现方式

在Unity中,角色动画有三种不同的实现方式:逐帧动画(Frame-by-Frame)、剪裁动画(Cutout)和骨骼动画(Skeletal),各自适用于不同的场景和需求。以下是它们的核心区别及特点&…

Flutter中Align的使用说明

又失业了,作为一个高龄Android程序员今年找工作真难呀。现在Flutter是必需技能了,所以最近在自学。所用书籍叫《Flutter实战》,如下 如今已看了100多页,发现这本书写得……有点赶吧,好几处讲得不清不楚,而关…

leetcode hot100(五)

11. 盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你…

echarts+Vue2 自动轮播饼图

1、首先下载echarts,并且全局引入echarts 方法:从 npm 安装 npm install echarts 在 main.js 文件中全局引入 然后创建一个vue文件,名字随便起,比如 pieChart.vue,话不多说,直接上才艺:&…

自学软硬件第755 docker容器虚拟化技术

见字如面, 这里是AIGC创意人_竹相左边, 正在通过AI自学软硬件工程师,目标手搓可回收火箭玩具。 我很喜欢 《流浪地球 2》中 ,马兆:没有硬件支撑,你破解个屁。 写作背景 今天在剪视频,然后看…

单片机自学总结

自从工作以来,一直努力耕耘单片机,至今,颇有收获。从51单片机,PIC单片机,直到STM32,以及RTOS和Linux,几乎天天在搞:51单片机,STM8S207单片机,PY32F003单片机,…

模拟String基本函数/深浅拷贝/柔性数组

1.首先我们先关注一下ASCII&#xff1a; 记住常用每一个字符对应的ascii码值&#xff01; 2.string函数的相关操作函数代码&#xff1a; 大多数小疑问都已经写在注释里面&#xff01; #pragma once #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<a…

论文分享:PL-ALF框架实现无人机低纹理环境自主飞行

在室内仓库、地下隧道等低纹理复杂场景中&#xff0c;无人机依赖视觉传感器进行自主飞行时&#xff0c;往往会遇到定位精度低、路径规划不稳定等难题。针对这一问题&#xff0c;重庆邮电大学计算机学院雷大江教授团队在IEEE Trans期刊上提出了一种新型自主飞行框架&#xff1a;…

文档搜索引擎

实现的搜索功能 首先获取很多的网页,然后根据用户输入的查询词,在这些网页中进行查找 用户输入查询词之后,如何让查询词和当前的网站进行匹配? 首先获取很多网页(爬虫->一个http客户端,发送http请求获取http响应结果(就是网站))(批量化的获取很多的页面), 再根据用户输入…

自然语言处理入门4——RNN

一般来说&#xff0c;提到自然语言处理&#xff0c;我们都会涉及到循环神经网络&#xff08;RNN&#xff09;&#xff0c;这是因为自然语言可以被看作是一个时间序列&#xff0c;这个时间序列中的元素是一个个的token。传统的前馈神经网络结构简单&#xff0c;但是不能很好的处…

C++学习之QT实现取证小软件首页

实现效果 #include "mainwindow.h" #include "ui_mainwindow.h" #include <QToolButton> #include <QLabel> #include <QMessageBox> #include <QDebug> #include <QHBoxLayout> #include <QTableView> #incl…

AI 数字人短视频数字人分身系统源码开发难点都有哪些?

AI 数字人分身系统源代码开发涉及多个领域的复杂技术&#xff0c;其难点主要体现在以下几个方面&#xff1a; 逼真的数字人建模 精确的人体扫描与重建&#xff1a;要创建高度逼真的数字人分身&#xff0c;首先需要对真实人体进行精确扫描&#xff0c;获取准确的人体外形、肌肉…

适合用户快速开发项目的PHP框架有哪些?

有时候用户赶时间&#xff0c;并想快速在有限的时间里&#xff0c;筑起自己的项目&#xff0c;对于适合用户快速开发项目的PHP框架有哪些推荐呢&#xff1f;下面一起来了解一下。 1. Laravel Laravel 是一个功能强大且语法优雅的PHP框架&#xff0c;提供了丰富的功能和工具&a…

物联网为什么用MQTT不用 HTTP 或 UDP?

先来两个代码对比&#xff0c;上传温度数据给服务器。 MQTT代码示例 // MQTT 客户端连接到 MQTT 服务器 mqttClient.connect("mqtt://broker.server.com:8883", clientId) // 订阅特定主题 mqttClient.subscribe("sensor/data", qos1) // …