httpd

  1. httpd简介

httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。

通常,httpd不应该被直接调用,而应该在类Unix系统中由apachectl调用,在Windows中作为服务运行。

  1. httpd版本

本文主要介绍httpd的两大版本,httpd-2.2和httpd-2.4。

CentOS6系列的版本默认提供的是httpd-2.2版本的rpm包
CentOS7系列的版本默认提供的是httpd-2.4版本的rpm包
2.1 httpd的特性

httpd有很多特性,下面就分别来说说httpd-2.2版本和httpd-2.4版本各自的特性

版本  特性
2.2 事先创建进程
按需维持适当的进程
模块化设计,核心比较小,各种功能通过模块添加(包括PHP),支持运行时配置,支持单独编译模块
支持多种方式的虚拟主机配置,如基于ip的虚拟主机,基于端口的虚拟主机,基于域名的虚拟主机等
支持https协议(通过mod_ssl模块实现)
支持用户认证
支持基于IP或域名的ACL访问控制机制
支持每目录的访问控制(用户访问默认主页时不需要提供用户名和密码,但是用户访问某特定目录时需要提供用户名和密码)
支持URL重写
支持MPM(Multi Path Modules,多处理模块)。用于定义httpd的工作模型(单进程、单进程多线程、多进程、多进程单线程、多进程多线程)
2.4 httpd-2.4的新特性:
MPM支持运行DSO机制(Dynamic Share Object,模块的动态装/卸载机制),以模块形式按需加载
支持event MPM,eventMPM模块生产环境可用
支持异步读写
支持每个模块及每个目录分别使用各自的日志级别
每个请求相关的专业配置,使用<If>来配置
增强版的表达式分析器
支持毫秒级的keepalive timeout
基于FQDN的虚拟主机不再需要NameVirtualHost指令
支持用户自定义变量
支持新的指令(AllowOverrideList)
降低对内存的消耗
工作模型    工作方式
prefork 多进程模型,预先生成进程,一个请求用一个进程响应
一个主进程负责生成n个子进程,子进程也称为工作进程
每个子进程处理一个用户请求,即使没有用户请求,也会预先生成多个空闲进程,随时等待请求到达,最大不会超过1024个
worker  基于线程工作,一个请求用一个线程响应(启动多个进程,每个进程生成多个线程)
event   基于事件的驱动,一个进程处理多个请求

2.2 httpd-2.4新增的模块

httpd-2.4在之前的版本基础上新增了几大模块,下面就几个常用的来介绍一下。

模块  功能
mod_proxy_fcgi  反向代理时支持apache服务器后端协议的模块
mod_ratelimit   提供速率限制功能的模块
mod_remoteip    基于ip的访问控制机制被改变,不再支持使用Order,Deny,Allow来做基于IP的访问控制
  1. httpd基础

3.1 httpd自带的工具程序

工具  功能
htpasswd    basic认证基于文件实现时,用到的帐号密码生成工具
apachectl   httpd自带的服务控制脚本,支持start,stop,restart
apxs    由httpd-devel包提供的,扩展httpd使用第三方模块的工具
rotatelogs  日志滚动工具
suexec  访问某些有特殊权限配置的资源时,临时切换至指定用户运行的工具
ab  apache benchmark,httpd的压力测试工具

3.2 rpm包安装的httpd程序环境

文件/目录   对应的功能
/var/log/httpd/access.log   访问日志
/var/log/httpd/error_log    错误日志
/var/www/html/  站点文档目录
/usr/lib64/httpd/modules/   模块文件路径
/etc/httpd/conf/httpd.conf  主配置文件
/etc/httpd/conf.modules.d/*.conf    模块配置文件
/etc/httpd/conf.d/*.conf    辅助配置文件

mpm:以DSO机制提供,配置文件为/etc/httpd/conf.modules.d/00-mpm.conf

3.3 web相关的命令

3.3.1 curl命令

curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE及LDAP等协议。

curl支持以下功能:

https认证
http的POST/PUT等方法
ftp上传
kerberos认证
http上传
代理服务器
cookies
用户名/密码认证
下载文件断点续传
socks5代理服务器
通过http代理服务器上传文件到ftp服务器

//语法:curl [options] [URL ...]
//常用的options:
    -A/--user-agent <string>    //设置用户代理发送给服务器
    -basic              //使用Http基本认证
    --tcp-nodelay       //使用TCP_NODELAY选项
    -e/--referer <URL>      //来源网址
    --cacert <file>     //CA证书(SSL)
    --compressed        //要求返回时压缩的格式
    -H/--header <line>  //自定义请求首部信息传递给服务器
    -I/--head           //只显示响应报文首部信息
    --limit-rate <rate>     //设置传输速度
    -u/--user <user[:password]>     //设置服务器的用户和密码
    -0/--http1      //使用http 1.0版本,默认使用1.1版本。这个选项是数字0而不是字母o
    -o/--output     //把输出写到文件中
    -#/--progress-bar       //进度条显示当前的传送状态

//通过curl下载文件
[root@localhost ~]# ls
[root@localhost ~]# curl -o myblog.html https://blog.51cto.com/itchentao
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 67025    0 67025    0     0  87248      0 --:--:-- --:--:-- --:--:-- 87385
[root@localhost ~]# ls
myblog.html

3.3.2 httpd命令

//语法:httpd [options]
//常用的options:
    -l      //查看静态编译的模块,列出核心中编译了哪些模块。 \
            //它不会列出使用LoadModule指令动态加载的模块
    -M      //输出一个已经启用的模块列表,包括静态编译在服务 \
            //器中的模块和作为DSO动态加载的模块
    -v      //显示httpd的版本,然后退出
    -V      //显示httpd和apr/apr-util的版本和编译参数,然后退出
    -X      //以调试模式运行httpd。仅启动一个工作进程,并且 \
            //服务器不与控制台脱离
    -t      //检查配置文件是否有语法错误

[root@localhost ~]# httpd -l
Compiled in modules:
  core.c
  mod_so.c
  http_core.c

[root@localhost ~]# httpd -M
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
 access_compat_module (shared)
 actions_module (shared)
 alias_module (shared)
 allowmethods_module (shared)
 auth_basic_module (shared) 
 ......
 ......

[root@localhost ~]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Jun 27 2018 13:48:59

[root@localhost ~]# httpd -V
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Server version: Apache/2.4.6 (CentOS)
Server built:   Jun 27 2018 13:48:59
Server's Module Magic Number: 20120211:24
Server loaded:  APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="/run/httpd/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"
  1. 编译安装httpd-2.4

httpd依赖于apr-1.4+,apr-util-1.4+,[apr-icon]

apr:apache portable runtime

//安装开发环境
[root@localhost ~]# yum groupinstall "Development Tools"
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Resolving Dependencies
--> Running transaction check
---> Package autoconf.noarch 0:2.69-11.el7 will be installed
--> Processing Dependency: m4 >= 1.4.14 for package: autoconf-2.69-11.el7.noarch
--> Processing Dependency: perl(Data::Dumper) for package: autoconf-2.69-11.el7.noarch
---> Package automake.noarch 0:1.13.4-3.el7 will be installed
--> Processing Dependency: perl(Thread::Queue) for package: automake-1.13.4-3.el7.noarch 
......
......
Dependency Updated:
  elfutils-libelf.x86_64 0:0.170-4.el7             elfutils-libs.x86_64 0:0.170-4.el7
  glibc.x86_64 0:2.17-222.el7                      glibc-common.x86_64 0:2.17-222.el7
  libgcc.x86_64 0:4.8.5-28.el7_5.1                 libgomp.x86_64 0:4.8.5-28.el7_5.1
  libstdc++.x86_64 0:4.8.5-28.el7_5.1              rpm.x86_64 0:4.11.3-32.el7
  rpm-build-libs.x86_64 0:4.11.3-32.el7            rpm-libs.x86_64 0:4.11.3-32.el7
  rpm-python.x86_64 0:4.11.3-32.el7

Complete!

[root@localhost ~]# groupadd -r apache
[root@localhost ~]# useradd -r -g apache apache
[root@localhost ~]# yum -y install openssl-devel pcre-devel expat-devel libtool
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package openssl-devel.x86_64 1:1.0.2k-12.el7 will be installed
--> Processing Dependency: openssl-libs(x86-64) = 1:1.0.2k-12.el7 for package: 1:openssl-devel-1.0.2k-12.el7.x86_64 
......
......
  libselinux-utils.x86_64 0:2.5-12.el7          libsepol.x86_64 0:2.5-8.1.el7
  libss.x86_64 0:1.42.9-12.el7_5                openssl.x86_64 1:1.0.2k-12.el7
  openssl-libs.x86_64 1:1.0.2k-12.el7

Complete!

//下载并安装apr-1.4+和apr-util-1.4+
[root@localhost ~]# cd /usr/src/
[root@localhost src]# wget http://mirrors.shu.edu.cn/apache//apr/apr-1.6.5.tar.bz2
--2018-08-04 18:42:17--  http://mirrors.shu.edu.cn/apache//apr/apr-1.6.5.tar.bz2
Resolving mirrors.shu.edu.cn (mirrors.shu.edu.cn)... 202.121.199.235
Connecting to mirrors.shu.edu.cn (mirrors.shu.edu.cn)|202.121.199.235|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://172.16.24.182/mirrors.shu.edu.cn/apache//apr/apr-1.6.5.tar.bz2 [following]
--2018-08-04 18:42:17--  http://172.16.24.182/mirrors.shu.edu.cn/apache//apr/apr-1.6.5.tar.bz2
Connecting to 172.16.24.182:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 854100 (834K) [application/x-bzip2]
Saving to: ‘apr-1.6.3.tar.bz2’

100%[======================================================>] 854,100     1.67MB/s   in 0.5s

2018-08-04 18:42:18 (1.67 MB/s) - ‘apr-1.6.5.tar.bz2’ saved [854100/854100]

[root@localhost src]# wget http://mirrors.shu.edu.cn/apache//apr/apr-util-1.6.1.tar.bz2
--2018-08-04 18:43:13--  http://mirrors.shu.edu.cn/apache//apr/apr-util-1.6.1.tar.bz2
Resolving mirrors.shu.edu.cn (mirrors.shu.edu.cn)... 202.121.199.235
Connecting to mirrors.shu.edu.cn (mirrors.shu.edu.cn)|202.121.199.235|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://172.16.24.175/mirrors.shu.edu.cn/apache//apr/apr-util-1.6.1.tar.bz2 [following]
--2018-08-04 18:43:13--  http://172.16.24.175/mirrors.shu.edu.cn/apache//apr/apr-util-1.6.1.tar.bz2
Connecting to 172.16.24.175:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 428595 (419K) [application/x-bzip2]
Saving to: ‘apr-util-1.6.1.tar.bz2’

100%[======================================================>] 428,595     1.14MB/s   in 0.4s

2018-08-04 18:43:14 (1.14 MB/s) - ‘apr-util-1.6.1.tar.bz2’ saved [428595/428595]

[root@localhost src]# ls
apr-1.6.5.tar.bz2  apr-util-1.6.1.tar.bz2  debug  kernels
[root@localhost src]# tar xf apr-1.6.5.tar.bz2
[root@localhost src]# tar xf apr-util-1.6.1.tar.bz2
[root@localhost src]# ls
apr-1.6.5  apr-1.6.5.tar.bz2  apr-util-1.6.1  apr-util-1.6.1.tar.bz2  debug  kernels
[root@localhost src]# cd apr-1.6.5
[root@localhost apr-1.6.5]# vim configure
    cfgfile="${ofile}T"
    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
    # $RM "$cfgfile"        //将此行加上注释,或者删除此行

[root@localhost apr-1.6.5]# ./configure --prefix=/usr/local/apr
配置过程略...
[root@localhost apr-1.6.5]# make && make install
编译安装过程略...

[root@localhost apr-1.6.5]# cd /usr/src/apr-util-1.6.1
[root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
配置过程略...
[root@localhost apr-util-1.6.1]# make && make install
编译安装过程略...

//编译安装httpd
[root@localhost ~]# wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.37.tar.bz2
--2018-08-04 18:30:46--  http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.37.tar.bz2
Resolving mirror.bit.edu.cn (mirror.bit.edu.cn)... 114.247.56.117, 2001:da8:204:2001:250:56ff:fea1:22
Connecting to mirror.bit.edu.cn (mirror.bit.edu.cn)|114.247.56.117|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6942969 (6.6M) [application/octet-stream]
Saving to: ‘httpd-2.4.37.tar.bz2’

100%[======================================================>] 6,942,969    591KB/s   in 19s

2018-08-04 18:31:05 (353 KB/s) - ‘httpd-2.4.37.tar.bz2’ saved [6942969/6942969]

[root@localhost ~]# ls
httpd-2.4.37.tar.bz2
[root@localhost ~]# tar xf httpd-2.4.37.tar.bz2
[root@localhost ~]# cd httpd-2.4.37
[root@localhost httpd-2.4.37]# ./configure --prefix=/usr/local/apache \
--sysconfdir=/etc/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/ \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork

[root@localhost httpd-2.4.37]# make && make install
编译安装过程略...
5. httpd常用配置

切换使用MPM(编辑/etc/httpd/conf.modules.d/00-mpm.conf文件):

//LoadModule mpm_NAME_module modules/mod_mpm_NAME.so
//NAME有三种,分别是:
    prefork
    event
    worker

[root@localhost conf.modules.d]# pwd
/etc/httpd/conf.modules.d
[root@localhost conf.modules.d]# ls
00-base.conf  00-lua.conf  00-proxy.conf    01-cgi.conf
00-dav.conf   00-mpm.conf  00-systemd.conf
[root@localhost conf.modules.d]# vim 00-mpm.conf
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

访问控制法则:

法则  功能
Require all granted 允许所有主机访问
Require all deny    拒绝所有主机访问
Require ip IPADDR   授权指定来源地址的主机访问
Require not ip IPADDR   拒绝指定来源地址的主机访问
Require host HOSTNAME   授权指定来源主机名的主机访问
Require not host HOSTNAME   拒绝指定来源主机名的主机访问
IPADDR的类型   HOSTNAME的类型
IP:192.168.1.1
Network/mask:192.168.1.0/255.255.255.0
Network/Length:192.168.1.0/24
Net:192.168 FQDN:特定主机的全名
DOMAIN:指定域内的所有主机

注意:httpd-2.4版本默认是拒绝所有主机访问的,所以安装以后必须做显示授权访问

示例:

<Directory /var/www/html/www>
    <RequireAll>
        Require not ip 192.168.1.20
        Require all granted
    </RequireAll>
</Directory>

虚拟主机:
虚拟主机有三类:

相同IP不同端口
不同IP相同端口
相同IP相同端口不同域名
//设置主机名
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
......
ServerAdmin root@localhost

ServerName gives the name and port that the server uses to identify itself.
This can often be determined automatically, but we recommend you specify
it explicitly to prevent problems during startup.
If your host doesn't have a registered DNS name, enter its IP address here.
ServerName www.example.com:80 //取消此行前面的#号
......

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
//在配置文件的最后加上如下内容
[root@localhost ~]# tail -25 /etc/httpd/conf/httpd.conf
#virtual host 1   # 虚拟主机1的配置
<VirtualHost 172.16.12.128:80>
ServerName www.wangqing.com
DocumentRoot "/var/www/html/www"
ErrorLog "/var/log/httpd/www/error_log"
CustomLog "/var/log/httpd/www/access_log" combined
<Directory /var/www/html/www>
<RequireAll>
Require all granted
Require not ip 192.168.1
</RequireAll>
</Directory>
</VirtualHost>

virtual host 2 # 虚拟主机2的配置

<VirtualHost 172.16.12.128:80>
ServerName blog.wangqing.com
DocumentRoot "/var/www/html/blog"
ErrorLog "/var/log/httpd/blog/error_log"
CustomLog "/var/log/httpd/blog/access_log" combined
<Directory /var/www/html/blog>
<RequireAll>
  Require all granted
</RequireAll>
</Directory>
</VirtualHost>

//创建网页目录并修改属主属组
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# ls
[root@localhost html]# mkdir www blog
[root@localhost html]# ll
total 0
drwxr-xr-x 2 root root 6 Aug 5 16:56 blog
drwxr-xr-x 2 root root 6 Aug 5 16:56 www
[root@localhost html]# chown -R apache.apache blog
[root@localhost html]# chown -R apache.apache www
[root@localhost html]# ll
total 0
drwxr-xr-x 2 apache apache 6 Aug 5 16:56 blog
drwxr-xr-x 2 apache apache 6 Aug 5 16:56 www

//创建网页
[root@localhost html]# pwd
/var/www/html
[root@localhost html]# ls
blog www
[root@localhost html]# echo 'hello welcome to visit www' > www/index.html
[root@localhost html]# echo 'hello welcome to visit blog' > blog/index.html

//创建相应网页的日志目录
[root@localhost ~]# mkdir /var/log/httpd/{www,blog}
[root@localhost ~]# ll /var/log/httpd/
total 0
drwxr-xr-x 2 root root 6 Aug 5 09:11 blog
drwxr-xr-x 2 root root 6 Aug 5 09:11 www
[root@localhost ~]# chown -R apache.apache /var/log/httpd/

//启动服务并查看是否有80端口
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 :22 :
LISTEN 0 100 127.0.0.1:25
:
LISTEN 0 128 :::80 :::

LISTEN 0 128 :::22 :::
LISTEN 0 100 ::1:25 :::

//在客户机上验证
1.修改hosts文件
~ cat /etc/hosts

Host Database

localhost is used to configure the loopback interface
when the system is booting. Do not change this entry.
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
118.31.33.0 zabbix.forevercq.com
0.0.0.0 account.jetbrains.com
//添加以下2行
172.16.12.128 www.wangqing.com
172.16.12.128 blog.wangqing.com

2.在浏览器上打开网页测试
ssl:
启用模块:编辑/etc/httpd/conf.modules.d/00-base.conf文件,添加下面这行,如果已经有了但是注释了,则取消注释即可

LoadModule ssl_module modules/mod_ssl.so

配置https步骤:

生成证书(参考博客linux运维系列第6章)
配置httpd.conf,取消以下内容的注释

    LoadModule ssl_module modules/mod_ssl.so
    Include /etc/httpd24/extra/httpd-vhosts.conf
    Include /etc/httpd24/extra/httpd-ssl.conf

在httpd-vhosts.conf中配置虚拟主机
在httpd-ssl.conf中配置证书的位置
检查配置文件是否有语法错误
启动或重启服务
设置hosts以便用域名访问(仅学习阶段,企业实际工作中无需做此步。)

笔记:
1.yum groupinstall "Development Tools"
已安装:

  bison.x86_64 0:3.0.4-1.el7                    byacc.x86_64 0:1.9.20130304-3.el7       cscope.x86_64 0:15.8-10.el7
  ctags.x86_64 0:5.8-13.el7                     diffstat.x86_64 0:1.57-4.el7            doxygen.x86_64 1:1.8.5-3.el7
  elfutils.x86_64 0:0.168-8.el7                 flex.x86_64 0:2.5.37-3.el7              gcc-gfortran.x86_64 0:4.8.5-16.el7
  git.x86_64 0:1.8.3.1-11.el7                   indent.x86_64 0:2.2.11-13.el7           intltool.noarch 0:0.50.2-7.el7
  patch.x86_64 0:2.7.1-8.el7                    patchutils.x86_64 0:0.3.3-4.el7         rcs.x86_64 0:5.9.0-5.el7
  redhat-rpm-config.noarch 0:9.1.0-76.el7       rpm-build.x86_64 0:4.11.3-25.el7        rpm-sign.x86_64 0:4.11.3-25.el7
  subversion.x86_64 0:1.7.14-10.el7             swig.x86_64 0:2.0.10-5.el7              systemtap.x86_64 0:3.1-3.el7 

2.

[root@cq sh]# groupadd -r  apache
groupadd:“apache”组已存在
[root@cq sh]# useradd -r -g apache  apache
useradd:用户“apache”已存在
[root@cq sh]# yum -y install openssl-devel pcre-devel expat-devel libtool
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
软件包 1:openssl-devel-1.0.2k-8.el7.x86_64 已安装并且是最新版本
软件包 pcre-devel-8.32-17.el7.x86_64 已安装并且是最新版本
软件包 expat-devel-2.1.0-10.el7_3.x86_64 已安装并且是最新版本
软件包 libtool-2.4.2-22.el7_3.x86_64 已安装并且是最新版本
无须任何处理 

3

[root@cq ~]# cd /usr/src
[root@cq src]# ls
apr-1.6.3.tar.bz2  apr-util-1.6.1.tar.bz2  debug  kernels
[root@cq src]# tar xf apr-1.6.3.tar.bz2 
[root@cq src]# tar xf apr-1.6.3.tar.bz2
[root@cq src]# cd apr-1.6.3
apr-1.6.3/         apr-1.6.3.tar.bz2 
#$RM "$cfgfile" 
[root@cq apr-1.6.3]#./configure --prefix=/usr/local/apr 
config.status: executing libtool commands
config.status: executing default commands
config.status: include/apr.h is unchanged
config.status: include/arch/unix/apr_private.h is unchanged
[root@cq apr-1.6.3]# make && make install  
done
/usr/bin/install -c -m 644 build/apr_rules.out /usr/local/apr/build-1/apr_rules.mk
/usr/bin/install -c -m 644 /usr/src/apr-1.6.3/build/apr_common.m4 /usr/local/apr/build-1
/usr/bin/install -c -m 644 /usr/src/apr-1.6.3/build/find_apr.m4 /usr/local/apr/build-1
/usr/bin/install -c -m 755 apr-config.out /usr/local/apr/bin/apr-1-config

4.

[root@cq src]# ls
apr-1.6.3  apr-1.6.3.tar.bz2  apr-util-1.6.1.tar.bz2  debug  kernels
[root@cq src]# tar xf  apr-util-1.6.1.tar.bz2
[root@cq src]# cd apr-util-1.6.1
[root@cq apr-util-1.6.1]# ./configure  --prefix=/usr/local/apr-util/   --with-apr=/usr/local/apr  
config.status: creating test/Makefile
config.status: creating include/private/apu_config.h
config.status: executing default commands
[root@cq apr-util-1.6.1]# make && make install
/usr/bin/install -c -m 644 aprutil.exp /usr/local/apr-util//lib
/usr/bin/install -c -m 755 apu-config.out /usr/local/apr-util//bin/apu-1-config

5.

[root@cq ~]# tar xf  httpd-2.4.34.tar.bz2 
[root@cq ~]# cd httpd-2.4.34
[root@cq httpd-2.4.34]# ls
ABOUT_APACHE     BuildAll.d
[root@cq httpd-2.4.34]# ./configure   --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi
--enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
 Server Version: 2.4.34
    Install prefix: /usr/local/apache
    C compiler:     gcc -std=gnu99
    CFLAGS:          -g -O2 -pthread
    CPPFLAGS:        -DLINUX -D_REENTRANT -D_GNU_SOURCE
    LDFLAGS:
    LIBS:
    C preprocessor: gcc -E

6

 [root@cq ~]# cd /usr/local/apache/htdocs/
[root@cq htdocs]# ls
3.jpg  6.jpg  index.html
[root@cq htdocs]# echo "hello   ni hao .." > index.html
[root@cq ~]# /usr/local/apache/bin/apachectl  restart

httpd

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值