Apache HTTP Server的源码安装配置及实现

Apache HTTP Server简介

Linux下最有名的、功能最丰富的WEB服务器就属Apache HTTP Server(简称Apache)。

Apache HTTP Server是Apache软件基金会最有名的开源项目之一,它可以在大多数操作系统上运行。

目前官网的主要版本为2.2和2.4。CentOS 6使用2.2版本,CentOS 7使用2.4版本。

目前生产环境中部署2.2版本的居多,但是2.4版本有很多新的特性,下面就简要说明以下:

(1)运行时动态可装载MPM

在2.4版本中,MPM可以被编程成可装载的模块。在运行时,只要配置使用什么MPM即可。

(2)支持Event MPM

正式支持Event MPM,之前是作为试验性的。

(3)更好的异步读写支持

(4)在每模块及每目录分别使用不同的日志级别

(5)基于每一个请求可以使用<If>、<ElseIf>和<Else>配置

(6)增强版的表达式分析器

(7)可以毫秒级控制KeepAliveTimeout

(8)不再需要NameVirtualHost指令

(9)可以在配置中使用自定义变量

(10)比2.2版本使用更少的内存

(11)增加了很多新的Module,例如mod_proxy_fcgi, mode_ratelimit, mod_request, mod_remoteip。同时还增强了很多Module

(12)访问控制的改变

2.2 configuration:

Order deny,allow
Deny from all

2.4 configuration:

Require all denied

2.2 configuration:

Order allow,deny
Allow from all
2.4 configuration:

Require all granted

2.2 configuration:

Order Deny,Allow
Deny from all
Allow from example.org

2.4 configuration:

Require host example.org

鉴于V2.4引入了这么多新的功能,生产环境安装V2.4也是非常必要。

编译安装

准备工作

官网下载httpd-2.4.10.tar.bz2

实验环境是CentOS 6.5,默认已经安装了2.2版本,把V2.2停止掉。

[[email protected] named]# service httpd stop
[[email protected] named]# chkconfig httpd off
[[email protected] named]# chkconfig --list httpd
httpd              0:off    1:off    2:off    3:off    4:off    5:off    6:off
[[email protected] ~]# tar xf httpd-2.4.10.tar.bz2

apr安装

httpd依赖apr(Apache Portable Runtime),且2.4版本依赖较新的apr版本,要求是1.4以上。CentOS 6安装的是1.3.9

http://apr.apache.org下载apr-1.5.1.tar.bz2和apr-util-1.5.3.tar.bz2。

[[email protected] ~]# tar xf apr-1.5.1.tar.bz2
[[email protected] ~]# tar xf apr-util-1.5.3.tar.bz2

[[email protected] ~]# cd apr-1.5.1

[[email protected] apr-1.5.1]# ./configure --prefix=/usr/local/apr15

[[email protected] apr-1.5.1]# make && make install

[[email protected] ~]# cd ~/apr-util-1.5.3

[[email protected] apr-util-1.5.3]# ./configure --prefix=/usr/local/aprutil15 --with-apr=/usr/local/apr15/

[[email protected] apr-util-1.5.3]# make && make install

安装httpd

configure常用选项

名称 说明 取值
--prefix 程序安装目录,默认安装在/usr/local/apache2 /usr/local/apache24
--sysconfdir 配置文件目录 /etc/httpd24
--enable-so 启用DSO功能  
--enable-modules 空白字符分隔的module列表,也可以是"all" | "most" | "few" | "none" | "reallyall" most
--enable-ssl SSL/TLS支持(mod_ssl)  
--enable-cgi 支持CGI  
--enable-rewrite 服务器端重写  
--with-pcre 使用PCRE库  
--with-apr 指定apr路径 /usr/local/apr15/
--with-apr-util 指定apr-util路径 /usr/local/aprutil15/
--with-z 使用zlib库  
--enable-mpms-shared 空白字符分隔的MPM Module动态加载列表,可以是用all all
--with-mpm=MPM Apache使用的默认处理模型,MPM={event|worker|prefork|winnt} event

[[email protected] ~]# cd httpd-2.4.10
[[email protected] httpd-2.4.10]# ./configure --prefix=/usr/local/apache24 --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-z --with-pcre --with-apr=/usr/local/apr15/ --with-apr-util=/usr/local/aprutil15/ --enable-mpms-shared=all --with-mpm=event --enable-modules=most
[[email protected] httpd-2.4.10]# make && make install

安装目录和文件说明

/etc/httpd24 配置主目录
/etc/httpd24/extra 额外配置目录
/etc/httpd24/httpd.conf 主配置文件
/usr/local/apache24/htdocs 站点根目录
/usr/local/apache24/error 预置的错误文档目录
/usr/local/apache24/cgi-bin CGI目录
/usr/local/apache24/include 头文件目录,二次开发用,必要时可以导出
/usr/local/apache24/man 帮助手册,需要导出
/usr/local/apache24/modules DSO模块目录
/usr/local/apache24/bin 可执行文件目录
/usr/local/apache24/logs 日志目录

导出bin目录

[[email protected] ~]# cd /etc/profile.d/
[[email protected] profile.d]# vim httpd24.sh
PATH=/usr/local/apache24/bin:$PATH
export PATH

然后重启连接会话

导出man目录

在/etc/man.config 中加入一条

MANPATH /usr/local/apache24/man

即可生效

导出头文件目录

[[email protected] /]# ln -s /usr/local/apache24/include/ /usr/include/apache

apachectl

apachectl是/usr/local/apache24/bin下的一个shell脚本。通过它可以控制httpd的启动、关闭、重启、优雅重启动、优雅关闭。

所谓优雅,就是不蛮横,重启或者关闭前如果有连接就不会立即终止连接。

第一次尝试启动

[[email protected] ~]# apachectl start

[[email protected] ~]# ss -tnlp | grep :80
LISTEN     0      128                      :::80                      :::*      users:(("httpd",2308,4),("httpd",2309,4),("httpd",2310,4),("httpd",2311,4))

[[email protected] ~]# httpd -D DUMP_MODULES
Loaded Modules:
core_module (static)
so_module (static)
http_module (static)
authn_file_module (shared)
authn_core_module (shared)
authz_host_module (shared)
authz_groupfile_module (shared)
authz_user_module (shared)
authz_core_module (shared)
access_compat_module (shared)
auth_basic_module (shared)
reqtimeout_module (shared)
filter_module (shared)
mime_module (shared)
log_config_module (shared)
env_module (shared)
headers_module (shared)
setenvif_module (shared)
version_module (shared)
mpm_event_module (shared)
unixd_module (shared)
status_module (shared)
autoindex_module (shared)
dir_module (shared)
alias_module (shared)

浏览器测试一下

实验

虚拟主机

server-status

基于用户的访问控制

HTTPS

未完待续……

Apache HTTP Server的源码安装配置及实现

时间: 2024-08-06 18:48:01

Apache HTTP Server的源码安装配置及实现的相关文章

apr apr-util apache 源码安装 配置系统服务

在官网下载 源码包 apr-1.5.1.tar.gz apr-util-1.5.3.tar.gz httpd-2.4.10.tar.gz 安装用户是root 解压命令 tar -zxvf httpd-2.4.10.tar.gz 源码安装 apr ,apr-util ./configure --prefix=/usr/local/apr 报错:rm: cannot remove `libtoolT': No such file or directory 我直接忽略了,网上看有修改configure

MySQL系列 - MySQL源码安装配置

二.MySQL系列 - MySQL源码安装配置(附5.7等最新版本)1.依赖环境准备2.开始安装2.1.下载MySQL2.2.解压2.3.赋权限2.4.修改配置文件2.5.启动MySQL3.MySQL 5.7源码安装不同之处 二.MySQL系列 - MySQL源码安装配置(附5.7等最新版本) 1.依赖环境准备 make安装 make编译器下载地址:http://www.gnu.org/software/make/ # tar zxvf make-3.82.tar.gz # cd make-3.

linux小白 mysql5.0源码安装配置

安装mysql-5.0.45.tar.gz(该软件包下载地址:http://www.filewatcher.com/m/mysql-5.0.45.tar.gz.24433261-0.html) # groupadd mysql              #添加mysql组 # useradd -g mysql mysql      #添加mysql用户,且加入mysql组 --------------------编译过程---------------------------------- # t

mysql 5.5.6 源码安装配置

http://dev.mysql.com/doc/refman/5.6/en/index.html  mysql官网安装手册 http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html源码安装说明 根据官网文档将安装过程写成一个批处理文件mysql.install安装完毕之后需要修改配置文件 修改编码,防止乱码 my.cnf 配置参考http://dev.mysql.com/doc/refman/5.6/en/

NGINX源码安装配置详解(./configure),最全解析

NGINX ./configure详解 在"./configure"配置中,"--with"表示启用模块,也就是说这些模块在编译时不会自动构建"--without"表示禁用模块,也就是说这些模块在编译时会自动构建,若你想Nginx轻量级运行,可以去除一些不必要的模块. [[email protected] nginx-1.14.0]# ./configure --help => 查看安装配置项 --help 打印帮助信息. --prefix

MYSQL5.6源码安装配置

本安装将MySQL的数据文件与执行文件分离,如果你打算设置到不同的路径,注意修改对应的执行命令和数据库初始化脚本. 在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索"$basedir/my.cnf",在本例中就是?/usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!注意:操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,

nginx-1.12.2源码安装配置

1 参考文档 http://nginx.org/en/download.html http://nginx.org/en/docs/configure.html https://github.com/openresty/lua-nginx-module http://nginx.org/en/docs/http/configuring_https_servers.html https://www.openssl.org/docs/man1.1.0/apps/genrsa.html 2 安装 2.

php 5.6.6 源码安装配置

php 需要安装的包 yum install -y gccgcc-c++  make zlib zlib-devel pcre pcre-devel  libjpeg libjpeg-devellibpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibcglibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curlcurl-dev

DRBD源码安装配置

DRBD简介 DRBD实际上是一种块设备的实现,主要被用于Linux平台下的高可用(HA)方案之中.他是有内核模块和相关程序而组成,通过网络通信 来同步镜像整个设备,有点类似于一个网络RAID的功能.也就是说当你将数据写入本地的DRBD设备上的文件系统时,数据会同时被发送到网络中的另外一台 主机之上,并以完全相同的形式记录在一个文件系统中(实际上文件系统的创建也是由DRBD的同步来实现的).本地节点(主机)与远程节点(主机)的数据可 以保证实时的同步,并保证IO的一致性.所以当本地节点的主机出现