源码编译安装httpd 2.4,提供系统服务管理脚本并测试(两种方法实现)

news2025/1/15 8:12:43

方法一:使用 systemd 服务文件

sudo yum install gcc make autoconf apr-devel apr-util-devel pcre-devel
 

1.下载源码

   wget https://archive.apache.org/dist/httpd/httpd-2.4.46.tar.gz

2.解压源码

tar -xzf httpd-2.4.46.tar.gz

如果没有安装tar 记得先安装

sudo yum install tar


cd httpd-2.4.46

3.编译安装

./configure --prefix=/usr/local/apache --enable-so --enable-ssl


make


make install

4.创建 systemd 服务文件

创建 /etc/systemd/system/httpd.service 文件,并添加以下内容:

[Unit]
Description=The Apache HTTP Server
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/apache/logs/httpd.pid
ExecStart=/usr/local/apache/bin/httpd -k start
ExecReload=/usr/local/apache/bin/httpd -k restart
ExecStop=/usr/local/apache/bin/httpd -k stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

5.启动服务

systemctl daemon-reload
systemctl start httpd
systemctl enable httpd

测试:

  1. 测试 httpd 服务是否正常运行(网页访问测试)
    • 前提条件:确保 httpd 服务已经启动,并且防火墙规则允许访问 httpd 服务的端口(通常是 80 端口)。如果是在本地测试,可以暂时关闭防火墙或者添加允许访问 80 端口的规则。
    • 步骤:
      • 打开网页浏览器,在地址栏中输入服务器的 IP 地址或者域名(如果有配置域名解析)。
      • 如果 httpd 服务正常运行并且配置正确,应该可以看到 Apache 的默认欢迎页面或者你自己配置的网站首页。这表明 httpd 服务能够正确地接收和处理 HTTP 请求,并返回相应的网页内容。
  2. 测试 httpd 服务是否正常运行(命令行工具测试)
    • 使用 curl 命令测试(本地或远程测试):
      • 前提条件:curl是一个命令行工具,用于传输数据,在大多数 Linux 系统中默认安装。如果没有安装,可以通过包管理器安装(如在 Debian/Ubuntu 系统中使用sudo apt - install curl,在 CentOS/RHEL 系统中使用sudo yum - install curl)。
      • 步骤:
        • 在命令行中输入curl http://<服务器IP地址或域名>
        • 如果 httpd 服务正常运行,curl命令会返回服务器返回的网页内容,例如 HTML 代码等。如果服务没有正常运行,可能会出现无法连接、超时等错误信息。

可以通过上述方式进行测试是否可以正常运行。

方法二:使用 init.d 脚本

 1.下载源码

   wget https://archive.apache.org/dist/httpd/httpd-2.4.46.tar.gz

2.解压源码

tar -xzf httpd-2.4.46.tar.gz

如果没有安装tar 记得先安装

sudo yum install tar


cd httpd-2.4.46

3.编译安装

./configure --prefix=/usr/local/apache --enable-so --enable-ssl


make


make install

5.创建 init.d 脚本

sudo nano /etc/init.d/httpd

内容如下:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          httpd
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Apache HTTP Server
# Description:       Apache HTTP Server
### END INIT INFO

case "$1" in
    start)
        /usr/local/apache2/bin/apachectl start
        ;;
    stop)
        /usr/local/apache2/bin/apachectl stop
        ;;
    restart)
        /usr/local/apache2/bin/apachectl restart
        ;;
    status)
        /usr/local/apache2/bin/apachectl status
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|status}"
        exit 1
        ;;
esac
exit 0

6.赋予执行权限

sudo chmod +x /etc/init.d/httpd

7.启用和测试服务

sudo systemctl enable httpd

sudo service httpd start

sudo service httpd status

sudo tail -f /usr/local/apache2/logs/error_log

  1. 测试 httpd 服务是否正常运行(网页访问测试)
    • 前提条件:确保 httpd 服务已经启动,并且防火墙规则允许访问 httpd 服务的端口(通常是 80 端口)。如果是在本地测试,可以暂时关闭防火墙或者添加允许访问 80 端口的规则。
    • 步骤:
      • 打开网页浏览器,在地址栏中输入服务器的 IP 地址或者域名(如果有配置域名解析)。
      • 如果 httpd 服务正常运行并且配置正确,应该可以看到 Apache 的默认欢迎页面或者你自己配置的网站首页。这表明 httpd 服务能够正确地接收和处理 HTTP 请求,并返回相应的网页内容。
  2. 测试 httpd 服务是否正常运行(命令行工具测试)
    • 使用 curl 命令测试(本地或远程测试):
      • 前提条件:curl是一个命令行工具,用于传输数据,在大多数 Linux 系统中默认安装。如果没有安装,可以通过包管理器安装(如在 Debian/Ubuntu 系统中使用sudo apt - install curl,在 CentOS/RHEL 系统中使用sudo yum - install curl)。
      • 步骤:
        • 在命令行中输入curl http://<服务器IP地址或域名>
        • 如果 httpd 服务正常运行,curl命令会返回服务器返回的网页内容,例如 HTML 代码等。如果服务没有正常运行,可能会出现无法连接、超时等错误信息。

可以通过上述方式进行测试是否可以正常运行。

等等这些方法测试,但是具体情况还要具体分析,选择最合适的方法是最好的。

两种方法的注意事项:

使用 systemd 管理 Apache 服务的注意事项:

  1. 正确的服务文件:确保你已经创建了正确的 systemd 服务文件,并且它位于 /etc/systemd/system/ 目录下。

  2. 重新加载守护进程:在修改了服务文件后,需要重新加载 systemd 守护进程以识别变化:sudo systemctl daemon-reload

  3. 服务状态和日志:使用 systemctl status <service> 来检查服务状态,使用 journalctl -u <service> 查看服务日志。

  4. 启用和禁用服务:使用 systemctl enable <service> 来设置服务开机自启,使用 systemctl disable <service> 来禁用。

  5. 启动和停止服务:使用 systemctl start <service> 来启动服务,使用 systemctl stop <service> 来停止服务。

  6. 重启服务:使用 systemctl restart <service> 来重启服务,这在配置更改后是必要的。

  7. 依赖关系:确保服务的依赖关系在 [Unit] 部分正确设置,例如 After=network.target 确保网络服务已经启动。

使用 init.d 脚本管理 Apache 服务的注意事项:

  1. 脚本位置:确保你的 init.d 脚本位于 /etc/init.d/ 目录下。

  2. 脚本权限:确保脚本具有执行权限:sudo chmod +x /etc/init.d/httpd

  3. 服务状态:使用 service <service> status 来检查服务状态。

  4. 启动和停止服务:使用 service <service> start 来启动服务,使用 service <service> stop 来停止服务。

  5. 重启服务:使用 service <service> restart 来重启服务。

  6. 设置开机自启:使用 update-rc.d <service> defaults 来设置服务开机自启。

  7. 检查依赖:确保脚本中正确处理了依赖关系,例如在启动前检查网络是否就绪。

  8. 兼容性:注意 init.d 脚本可能不适用于所有系统,特别是那些默认使用 systemd 的系统。

总结

1.无论使用 Systemd 还是 init.d 管理 httpd 服务,都要确保服务文件或脚本的内容准确,包括命令路径、服务依赖关系、权限设置等。

2.对于服务的启动和运行,要考虑不同系统环境和服务的特性,根据实际情况调整服务的启动顺序和运行级别。

3.在操作服务时,要注意使用正确的权限(通常使用 sudo),并通过日志查看及时发现和解决服务运行中的问题。

4.在对服务进行修改或更新后,要进行充分的测试,确保服务的稳定性和可靠性。

!!!!!!!重点提示:在管理 Apache 服务时,无论使用哪种方法,都应该确保你了解如何检查服务状态、如何启动和停止服务、以及如何在配置更改后重启服务。此外,始终确保在进行任何更改后测试服务以验证其正常运行。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于微信小程序的智能停车场管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

LabVIEW驱动电机实现样品自动搜索

利用LabVIEW控制电机驱动相机在XY平面上进行扫描&#xff0c;以检测样品位置。样品最初可能位于相机视野范围之外&#xff0c;需要实现自动搜索样品位置并完成精确定位扫描的功能。该系统需具有以下特点&#xff1a; 高效搜索&#xff1a;能够快速确定样品位置&#xff0c;缩短…

excel 整理表格,分割一列变成多列数据

数据准备 对于很多系统页面的数据是没有办法下载的。 这里用表格数据来举例。随便做数据的准备。想要看excel部分的可以把这里跳过&#xff0c;从数据准备完成开始看。 需要一点前端基础知识&#xff0c;但不多&#xff08;不会也行&#xff09;。 把鼠标放在你想要拿到本地的…

MAC AndroidStudio模拟器无网络

先确认PC端是正常访问网络的&#xff1b; 模拟器端修改Wifi设置&#xff1a;设置 - 网络和互联网 - WALN设置 按照上图修改&#xff1b; IP设置&#xff1a;从DHCP修改为静态&#xff0c;IP地址&#xff1a;10.0.2.16 &#xff0c;网关&#xff1a;10.0.2.2 &#xff0c; DNS…

【Linux系统】Ext系列磁盘文件系统一

0. 从快递系统引入文件系统 理解文件系统&#xff1a;菜鸟驿站的类比 在日常生活中&#xff0c;我们常常会使用到快递服务来寄送和接收包裹。这个过程虽然看似简单&#xff0c;但背后却有着一套复杂而有序的管理系统在支撑。今天&#xff0c;我们将通过一个类比——将文件系统…

1Hive概览

1Hive概览 1hive简介2hive架构3hive与Hadoop的关系4hive与传统数据库对比5hive的数据存储 1hive简介 Hive是基于Hadoop的一个数据仓库工具&#xff0c;可以将结构化的数据文件映射为一张数据库表&#xff0c;并提供类SQL查询功能。 其本质是将SQL转换为MapReduce/Spark的任务进…

Elasticsearch入门学习

Elasticsearch是什么 Elasticsearch 是一个基于 Apache Lucene 构建的分布式搜索和分析引擎、可扩展的数据存储和矢量数据库。 它针对生产规模工作负载的速度和相关性进行了优化。 使用 Elasticsearch 近乎实时地搜索、索引、存储和分析各种形状和大小的数据。 特点 分布式&a…

[读书日志]8051软核处理器设计实战(基于FPGA)第七篇:8051软核处理器的测试(verilog+C)

6. 8051软核处理器的验证和使用 为了充分测试8051的性能&#xff0c;我们需要测试每一条指令。在HELLO文件夹中存放了整个测试的C语言工程文件。主函数存放在指令被分为五大类&#xff0c;和上面一样。 打开后是这样的文件结构。HELLO.c是主文件&#xff0c;这是里面的代码&am…

【Vue实战】Vuex 和 Axios 拦截器设置全局 Loading

目录 1. 效果图 2. 思路分析 2.1 实现思路 2.2 可能存在的问题 2.2.1 并发请求管理 2.2.2 请求快速响应和缓存带来的问题 3. 代码实现 4. 总结 1. 效果图 如下图所示&#xff0c;当路由变化或发起请求时&#xff0c;出现 Loading 等待效果&#xff0c;此时页面不可见。…

一文读懂yolo11模型训练

一文读懂yolo11模型训练 一、环境准备 Anaconda安装 简介 Anaconda 是一个流行的开源 Python 发行版&#xff0c;专注于数据科学、机器学习、科学计算和分析等领域。它提供了一个强大的包管理器和环境管理器&#xff0c;名为 Conda&#xff0c;以及一个预装了大量科学计算和…

Apache PAIMON 学习

参考&#xff1a;Apache PAIMON&#xff1a;实时数据湖技术框架及其实践 数据湖不仅仅是一个存储不同类数据的技术手段&#xff0c;更是提高数据分析效率、支持数据驱动决策、加速AI发展的基础设施。 新一代实时数据湖技术&#xff0c;Apache PAIMON兼容Apache Flink、Spark等…

音视频入门基础:RTP专题(1)——RTP官方文档下载

一、引言 实时传输协议&#xff08;Real-time Transport Protocol&#xff0c;简写RTP&#xff09;是一个网络传输协议&#xff0c;由IETF的多媒体传输工作小组1996年在《RFC 1889》中公布的。 RTP作为因特网标准在《RFC 3550》有详细说明。而《RFC 3551》详细描述了使用最小…

【Vim Masterclass 笔记13】第 7 章:Vim 核心操作之——文本对象与宏操作 + S07L28:Vim 文本对象

文章目录 Section 7&#xff1a;Text Objects and MacrosS07L28 Text Objects1 文本对象的含义2 操作文本对象的基本语法3 操作光标所在的整个单词4 删除光标所在的整个句子5 操作光标所在的整个段落6 删除光标所在的中括号内的文本7 删除光标所在的小括号内的文本8 操作尖括号…

LiveGBS流媒体平台GB/T28181常见问题-没有收到视频流播放时候提示none rtp data receive未收到摄像头推流如何处理?

LiveGBS没有收到视频流播放时候提示none rtp data receive未收到摄像头推流如何处理&#xff1f; 1、none rtp data receive2、搭建GB28181视频直播平台 1、none rtp data receive LiveSMS 收不到下级推流 首先需要排查服务器端 UDP & TCP 30000-30249 端口是否开放其次排…

使用Docker模拟PX4固件的无人机用于辅助地面站开发

前言 最近在制作鸿蒙无人机地面站&#xff0c;模仿的是QGroundControl&#xff0c;协议使用mavlink&#xff0c;记录一下本地模拟mavlink协议通过tcp/udp发送 废话不多说直接上命令 1.启动docker的桌面端 启动之后才能使用docker命令来创建容器 docker run --rm -it jonas…

【Docker】保姆级 docker 容器部署 MySQL 及 Navicat 远程连接

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 文章目录 1. docker 容器部署 MySQL1.1 拉取mysql镜像1.2 启动容器1.3 进入容器1.4 使用 root 用户登录 2. Navicat 连…

【大数据】机器学习-----线性模型

一、线性模型基本形式 线性模型旨在通过线性组合输入特征来预测输出。其一般形式为&#xff1a; 其中&#xff1a; x ( x 1 , x 2 , ⋯ , x d ) \mathbf{x}(x_1,x_2,\cdots,x_d) x(x1​,x2​,⋯,xd​) 是输入特征向量&#xff0c;包含 d d d 个特征。 w ( w 1 , w 2 , ⋯ ,…

装备制造行业(复杂机械制造)数字化顶层规划 - 汇报会

行业业务特点&#xff1a; 尊敬的各位管理层&#xff1a; 大家好&#xff01;今天我将向大家汇报装备制造企业数字化战略的顶层规划设计。在当今数字化浪潮下&#xff0c;装备制造企业面临着转型升级的迫切需求&#xff0c;数字化战略的制定与实施对于提升企业竞争力、实现可持…

深度探索C++20协程机制

#include <iostream> #include <coroutine>class CoroTaskSub { public://编译器在处理协程函数时是通过其返回类型【即协程接口类型】&#xff0c;确定协程的承诺类型和协程句柄类型struct promise_type;using CoroHdl std::coroutine_handle<promise_type>…

linux手动安装mysql5.7

一、下载mysql5.7 1、可以去官方网站下载mysql-5.7.24-linux-glibc2.12-x86_64.tar压缩包&#xff1a; https://downloads.mysql.com/archives/community/ 2、在线下载&#xff0c;使用wget命令&#xff0c;直接从官网下载到linux服务器上 wget https://downloads.mysql.co…