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

源码编译安装httpd 2.4,提供系统服务管理脚本并测试

总结需要安装的包

sudo yum groupinstall "Development Tools" -y  #httpd的依赖包

yum install tar -y #tar压缩包

sudo yum install apr-devel apr-util-devel  #APR库 提供跨平台接口的库

sudo yum install pcre pcre-devel  # PCRE库和 pcre-config工具--提供PCRE库的编译和链接信息

​​
sudo yum install openssl-devel  # Openssl库

​
​

方法一、用init.d(这里用HTTPD-2.4.54为例)

1.安装httpd需要的依赖包


sudo yum groupinstall "Development Tools" -y

2.下载httpd2.4 源码

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

3.解压下载压缩包

安装好tar包-----yum install tar -y

tar -zxvf httpd-2.4.54.tar.gz
cd httpd-2.4.54 

4.配置http

 ./configure --prefix=/usr/local/httpd  --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --with-zlib --with-pcre --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork

        源码编译的时候出现这个问题

                1、configure: checking for APR... no configure: error: APR not found. Please read the documentation.这个错误,意味着配置脚本无法在系统中找到APR库。APR是一个为操作系统级功能提供跨平台接口的库

sudo yum install apr-devel apr-util-devel 

                2、 configure: error: pcre(2)-config for libpcre not found. PCRE is required and available from http://pcre.org/  出现这个问题意味着配置脚本无法在系统中找到PCRE库的 pcre-config 工具。这个工具用于提供PCRE库的编译和链接信息。

sudo yum install pcre pcre-devel  

5.编译并安装httpd


make -j 4
sudo make install

6.创建Apache用户和组

sudo groupadd -r apache
sudo useradd -r -g apache -s /sbin/nologin apache

7.将 User daemon 改为 User apache:

sed -r -i "s/^User [a-zA-Z]*/User apache/" /usr/local/httpd/conf/httpd.conf 


8.将 Group daemon 改为 Group apache

sed -r -i "s/^Group [a-zA-Z]*/Group apache/" /usr/local/httpd/conf/httpd.conf


9.将 DocumentRoot "/usr/local/httpd/htdocs" 改为 DocumentRoot "/var/www":

sed -r -i "s%^DocumentRoot \".*\"%DocumentRoot \"/var/www\"%" /usr/local/httpd/conf/httpd.conf 


10.将 <Directory "/usr/local/httpd/htdocs"> 改为 <Directory "/var/www">

sed -r -i "s%^<Directory \".*htdocs\">%<Directory \"/var/www\">%" /usr/local/httpd/conf/httpd.conf 


11.确保 /var/www 目录存在

sudo mkdir -p /var/www


12.创建一个系统服务管理脚本 /etc/init.d/httpd:

sudo vi /etc/init.d/httpd 
#!/bin/bash
. /etc/rc.d/init.d/functions
 
apachectl=/usr/local/httpd/bin/apachectl
httpd=/usr/local/httpd/bin/httpd
prog=httpd
start() {
    echo -n $"Starting $prog: "
    daemon $httpd $OPTIONS
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && touch /var/lock/subsys/httpd
    return $RETVAL
}
 
stop() {
    echo -n $"Stopping $prog: "
    killproc $httpd
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && rm -f /var/lock/subsys/httpd
    return $RETVAL
}
 
# See how we were called.
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  status)
    status $httpd
    ;;
  restart)
    stop
    start
    ;;
  condrestart)
    if [ -f /var/lock/subsys/httpd ]; then
        stop
        start
    fi
    ;;
  *)
    echo $"Usage: $0 {start|stop|restart|condrestart|status}"
    exit 1
esac
 
exit $?

13.赋予执行权限

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

14.将 httpd 服务添加到系统服务管理中,并设置开机启动

sudo chkconfig --add httpd
sudo chkconfig httpd on 

        如果出现以下的问题:

                查看/etc/init.d/目录下是否存在httpd脚本,并检查它是否包含chkconfig所需的注释(如# chkconfig: 2345 10 90)-----对于没有包含chkconfig这个就需要以下的操作

                添加chkconfig注释
在脚本的开头部分(通常在#!/bin/sh之后),添加以下注释行

# chkconfig: 2345 10 90
# description: Apache HTTP Server

 15.启动httpd服务

systemctl start httpd
systemctl enable httpd

16、测试 httpd 服务是否正常运行       

  使用 curl 命令测试(本地或远程测试 ) 
yum install curl -y

步骤:
        在命令行中输入curl http://<服务器IP地址或域名>。
        如果 httpd 服务正常运行,curl命令会返回服务器返回的网页内容,例如 HTML 代码等。如果服务没有正常运行,可能会出现无法连接、超时等错误信息。

我这里用了我服务端的IP地址

方法二:使用 systemd 服务文件(这里用HTTPD-2.4.46为例)

前三个步骤与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

cd httpd-2.4.46

3.编译安装

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

        checking whether to enable mod_ssl... configure: error: mod_ssl has been requested but can not be built due to prerequisite failures遇到这个错误,通常意味着缺少必要的依赖项或环境配置不正确,导致 configure 脚本无法成功构建 SSL 模块

         确保你的系统上已经安装了 OpenSSL 开发库

sudo yum install openssl-devel

4.make

        出现以下错误,这意味着你的系统中没有安装 make 工具。make 是一个用于管理编译过程的工具,它根据 Makefile 中的指令来编译和链接程序

sudo yum groupinstall "Development Tools"

5.创建 systemd 服务文件

创建vim  /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
~

6.重载systemd配置:

systemctl daemon-reload

7.启动httpd服务和状态:

systemctl start httpd
systemctl status httpd

8.测试 httpd 服务是否正常运行(网页访问测试)


        前提条件:确保 httpd 服务已经启动,并且防火墙规则允许访问 httpd 服务的端口。
步骤:
        打开网页浏览器,在地址栏中输入服务器的 IP 地址或者域名(如果有配置域名解析)。
        如果 httpd 服务正常运行并且配置正确,应该可以看到 Apache 的默认欢迎页面或者你自己配置的网站首页。这表明 httpd 服务能够正确地接收和处理 HTTP 请求,并返回相应的网页内容。


http://www.kler.cn/a/504893.html

相关文章:

  • Unity中实现倒计时结束后干一些事情
  • MySQL主从:如何处理“Got Fatal Error 1236”或 MY-013114 错误(percona译文)
  • Flask表单处理与验证
  • 144.《在 macOS 上安装 Redis》
  • 【汇编】x86汇编编程寄存器资源心中有数
  • HTTP/HTTPS ⑤-CA证书 || 中间人攻击 || SSL/TLS
  • jenkins docker 遇到 /var/run/docker.sock: permission denied 解决方案
  • 【JavaEE进阶】SpringMVC 响应
  • 代码随想录算法训练营第三十四天-动态规划-63. 不同路径II
  • vue运用uniapp框架开发企业微信小程序中常用的一些基础方法
  • C#,入门教程(27)——应用程序(Application)的基础知识
  • JavaScript:模版字符串
  • scons通用构建_生成方法Command
  • 向量数据库如何助力Text2SQL处理高基数类别数据
  • 更新用户密码功能
  • 解决nginx: [emerg] unknown directive “stream“ in /etc/nginx/nginx.conf问题 --九五小庞
  • LeetCode | 解锁数组与字符串的秘密:经典题型详解与高效解法
  • 20250113面试鸭特训营第21天
  • STLG_01_12_程序设计C语言 - 联合体和枚举类型
  • 【AIGC-ChatGPT进阶提示词指令】智慧母婴:打造基于成长树的儿童发展引导系统
  • 【网络云SRE运维开发】2025第3周-每日【2025/01/14】小测-【第13章ospf路由协议】理论和实操解析
  • PPPLib源码阅读
  • 「蓝桥杯题解」数字接龙
  • 石化煤矿智能化转型“硬通货”,遨游防爆手机如何面面俱到?
  • Vue2+OpenLayers实现车辆开始、暂停、重置行驶轨迹动画(提供Gitee源码)
  • UART 串口的全双工模式与 SPI 的全双工模式的区别