Apache httpd

  • httpd是Apache基金会的HTTP服务器项目:HTTP Server project
  • httpd-2.4系列本版,依赖于apr-1.4+, apr-util-1.4+
  • APR(Apache portable Run-time libraries)
  • Apache可移植运行库,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。

APR

  • APR官网:http://apr.apache.org
  • 在早期的Apache版本中,应用程序本身必须能够处理各种具体操作系统平台的细节,并针对不同的平台调用不同的处理函数随着Apache的进一步开发,
  • Apache组织决定将这些通用的函数独立出来并发展成为一个新的项目。
  • 这样,APR的开发就从Apache中独立出来,Apache仅仅是使用 APR而已。
  • 目前APR主要还是由Apache使用,由于APR的较好的移植性,
  • 因此一些需要进行移植的C程序也开始使用APR,开源项目:比如用于服务器压力测试的Flood loader tester,
  • 项目站点:http://httpd.apache.org/test/flood

编译前准备

准备httpd-2.4,apr-1.4+, apr-util-1.4+

  • 官网下载最新版本软件包
  • httpd-2.4.48.tar.gz
    • https://downloads.apache.org/httpd/httpd-2.4.48.tar.gz
  • apr-1.7.0.tar.gz
    • https://downloads.apache.org/apr/apr-1.7.0.tar.gz
  • apr-util-1.6.1.tar.gz
    • https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz

下载并解压缩

wget https://downloads.apache.org/httpd/httpd-2.4.48.tar.gz && tar xf 2.4.48.tar.bz2
wget https://downloads.apache.org/apr/apr-1.7.0.tar.gz && tar xf apr-1.7.0.tar.bz2
wget https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz && tar xf apr-util-1.6.1.tar.bz2
  • 批量下载
HTTPD=https://downloads.apache.org/httpd/httpd-2.4.48.tar.bz2
APR=https://downloads.apache.org/apr/apr-1.7.0.tar.bz2
ARPU=https://downloads.apache.org/apr/apr-util-1.6.1.tar.bz2
for url in {$HTTPD,$APR,$APRU};do
{wget $url
}&
done
wait
  • 批量解压缩
for z in *.tar.bz2; do tar xf $z; done

安装依赖包

yum -y install gcc make pcre-devel openssl-devel expat-devel

合并源码包进行编译

将apr 和apr-util源码与httpd 源码合并

cp -ar  ./apr-1.7.0 ./httpd-2.4.48/srclib/apr
cp -ar  ./apr-util-1.6.1 ./httpd-2.4.48/srclib/apr-util

cp时注意权限问题,如果不保留原始权限,则config时会报错

使用./configure脚本生成自定义Makefile

[ -a /apps/httpd24 ] || mkdir -p /apps/httpd24
cd httpd-2.4.48/
./configure \
--prefix=/apps/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--with-included-apr \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork
  • 检查完毕结果
    Server Version: 2.4.48Install prefix: /apps/httpd24C compiler:     gccCFLAGS:          -g -O2 -pthread  CPPFLAGS:        -DLINUX -D_REENTRANT -D_GNU_SOURCE  LDFLAGS:           LIBS:             C preprocessor: gcc -E

编译并安装

make -j 8 && make install
  • 编译安装结果
Installing configuration files
mkdir /apps/httpd24/conf
mkdir /apps/httpd24/conf/extra
mkdir /apps/httpd24/conf/original
mkdir /apps/httpd24/conf/original/extra
Installing HTML documents
mkdir /apps/httpd24/htdocs
Installing error documents
mkdir /apps/httpd24/error
Installing icons
mkdir /apps/httpd24/icons
mkdir /apps/httpd24/logs
Installing CGIs
mkdir /apps/httpd24/cgi-bin
Installing header files
Installing build system files
Installing man pages and online manual
mkdir /apps/httpd24/man
mkdir /apps/httpd24/man/man1
mkdir /apps/httpd24/man/man8
mkdir /apps/httpd24/manual
make[1]: Leaving directory '/root/httpd-2.4.48'

编译安装后配置

创建用户

useradd -s /sbin/nologin -r apache
id apache &> /dev/null || useradd -r -u 80 -d /webDB/ -s /sbin/nologin apache

指定运行httpd的用户

  • 编辑httpd.conf配置文件
  • 修改默认用户和组daemon为apache
## 不用sed不舒服系列
sed -ri.bak "s/daemon/apache/g" /apps/httpd24/conf/httpd.conf
sed -ri.bak 's/daemon/apache/' /apps/httpd24/conf/httpd.conf
  • 这个整行替换更为妥当
sed -ri.bak 's/^User.*/User apache/' /apps/httpd24/conf/httpd.conf
sed -ri.bak 's/^Group.*/Group apache/' /apps/httpd24/conf/httpd.conf

配置环境变量

 echo 'PATH=/apps/httpd24/bin:$PATH' > /etc/profile.d/httpd.sh && . /etc/profile.d/httpd.sh

运行httpd服务并设为开机启动

创建服务

  • 通用配置创建service unit文件,设置开机启动
cat > /lib/systemd/system/httpd.service <<EOF
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=man:httpd(8)
Documentation=man:apachectl(8)
[Service]
Type=forking
ExecStart=/apps/httpd24/bin/apachectl start
ExecReload=/apps/httpd24/bin/apachectl graceful
ExecStop=/apps/httpd24/bin/apachectl stop
KillSignal=SIGCONT
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
  • 设置为开机启动
systemctl daemon-reload && systemctl enable --now httpd.service

添加防火墙规则

#检查firewalld状态
firewall_status=`firewall-cmd --state`
if [ $firewall_status = running ];then
firewall-cmd --permanent --add-service=http --add-service=https
firewall-cmd --reload
fi

测试httpd是否正常工作

查看httpd版本

[root@C8-192 httpd-2.4.48]# httpd -v
Server version: Apache/2.4.48 (Unix)
Server built:   May 27 2021 20:39:03

查看服务运行状态

systemctl status httpd

 systemctl status httpd
● httpd.service - The Apache HTTP ServerLoaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)Active: active (running) since Thu 2021-05-27 20:53:37 CST; 1min 42s agoDocs: man:httpd(8)man:apachectl(8)Process: 50580 ExecStart=/apps/httpd24/bin/apachectl start (code=exited, status=0/SUCCESS)Main PID: 50583 (httpd)

查看端口开启状态

ss -ntl

ss -ntl | grep 80
LISTEN   0         128                       *:80                     *:*

测试网页

  • yum安装默认网站根目录在 /var/www/html/index.html
  • 编译安装默认网站根目录在/安装目录/htdocs/index.html
  • 本机测试
sed -ri.bak`date +%F` 's/^.*/IamWork/g' /apps/httpd24/htdocs/index.html
curl -I 127.0.0.1
  • 使用其他服务器测试
curl -I 10.0.0.192
HTTP/1.1 200 OK
  • 示例
[root@C8-192 httpd-2.4.48]# sed -ri.bak`date +%F` 's/^.*/IamWork/g' /apps/httpd24/htdocs/index.html
[root@C8-192 httpd-2.4.48]# curl -I 127.0.0.1
HTTP/1.1 200 OK
Date: Thu, 27 May 2021 13:00:36 GMT
Server: Apache/2.4.48 (Unix)
Last-Modified: Thu, 27 May 2021 13:00:01 GMT
ETag: "8-5c34f5651d891"
Accept-Ranges: bytes
Content-Length: 8
Content-Type: text/html[13:00:45 root@C8-88[ ~]#curl 10.0.0.192
IamWork
[13:00:59 root@C8-88[ ~]#curl -I 10.0.0.192
HTTP/1.1 200 OK
Date: Thu, 27 May 2021 13:01:09 GMT
Server: Apache/2.4.48 (Unix)
Last-Modified: Thu, 27 May 2021 13:00:01 GMT
ETag: "8-5c34f5651d891"
Accept-Ranges: bytes
Content-Length: 8
Content-Type: text/html

至此,编译安装apache httpd完成!

Linux源码编译安装apache httpd2.4.48相关推荐

  1. linux源码编译安装apache( httpd-2.4.53)处理服务器支持 TLS Client-initiated 重协商攻击(CVE-2011-1473)

    linux源码编译安装apache 首先我们需要下载相关的依赖包 apr.apr-util.pcre 下载地址 http://archive.apache.org/dist/apr/apr-1.7.0 ...

  2. linux 源码编译安装apache

    cc1 是c语言的编译器. 转载于:https://www.cnblogs.com/oxspirt/p/6483137.html

  3. Ubuntu 16.04源码编译安装Apache 2.4.25教程

    这篇文章主要为大家详细介绍了Ubuntu 16.04源码编译安装Apache 2.4.25,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文为大家介绍了Ubuntu 16.04源码编译安装Apa ...

  4. linux源码编译-安装postgresql数据库(中标麒麟+龙芯CPU)

    linux源码编译-安装postgresql数据库(中标麒麟+龙芯CPU) 一.查看yum源中pgsql版本 二.安装readline-devel 三.下载pgsql库的源码 四.解压下载的源码.co ...

  5. Linux 源码编译安装过程-以安装XZ解压为例

    一.描述 Linux安装软件一般有两种安装方式:安装包安装和源码安装. 1.安装包安装.安装包安装比较简单,例如采用apt-get  install +软件名 命令,安装 deb 包的 Linux 操 ...

  6. Linux源码编译安装步骤及命令

    源码编译安装过程 RPM包:rpm -ivh yum install 源码包----开发工具---->可以执行的程序----->运行安装 • 主要优点 – 获得软件的最新版,及时修复bug ...

  7. apache 编译php mysql_记一次痛苦的过程-------源码编译安装apache+php5+mysql

    当时有我们准备做一个项目,于是我就自己搭建了lamp服务器,直接yum install所有文件,因为centos是一个比较稳重的系统,所以它上面所有软件都不是最新的,apache是2.2.15版本,p ...

  8. linux源码编译安装lamp环境搭建,linux下源码包编译安装LAMP环境

    1.下载所需的源码包 Httpd-2.4.10  apr-1.5.1  apr-util-1.5.3  pcre-8.33(这些均可在Apache官网进行下载) Mysql-5.5.39    php ...

  9. linux源码编译安装subversion

    一.下载安装包 subversion源码包下载 https://subversion.apache.org/download.cgi apr源码包 https://dist.apache.org/re ...

最新文章

  1. 让echo解析反斜杠
  2. v-show与v-if的区别
  3. 微信小程序开发-入门基础
  4. mysql命令gruop by报错this is incompatible with sql_mode=only_full_group_by
  5. css3加载ing动画
  6. 访问tomcat服务器文件路径,外置tomcat映射服务器路径以及springboot内置tomcat映射路径配置...
  7. 正则表达式基础---转自 Python正则表达式指南 前边
  8. B树和TreeSet与TreeMap
  9. el-select默认选中第一个,设置默认值
  10. IEC 60068-2 规范介绍
  11. 计算机的计算百分比的函数是哪个好,excel用函数计算百分比计算的方法
  12. matlab imcrop 对应python函数_python做微积分
  13. 第三阶段应用层——1.9 数码相册—在LCD上显示BMP图片
  14. Swift如何实现与JSON互转
  15. ceph监控管理平台calamari
  16. Cesium 修改默认地球贴图的两种方式
  17. 取消打印机选择框实现
  18. 部署k8s集群(k8s集群搭建详细实践版)
  19. 境外IP判断一种实现方案
  20. linux系统配置sftp服务器,linux配置sftp服务器配置

热门文章

  1. “3.15”曝光的人脸识别摄像头,错在用错了场所
  2. 湖北计算机一级证书样本,湖北计算机一级(Hubei computer level).doc
  3. uniapp写微信小程序怎么运行到微信开发工具上
  4. 利用Minia软件对基因组测序二代数据的初步组装
  5. js实现在微信中下载app
  6. python自动排版公众号_那些排版好看的公众号,都在偷偷使用这些神器
  7. word2016加载MathType打开时显示“安全警告,宏已被禁用”解决办法
  8. Web性能测试工具大全
  9. 英语口语练习系列-C41-食物词汇-鹊桥仙
  10. 如果我写一个开源的HIS软件