编译安装httpd2.4
1,准备安装环境
开发包组
yum groupinstall Development tools
yum groupinstall Server Platform Development
编译apache依赖的包
# yum install pcre-devel -y
还有apr 和apr-util要新版的如果有就yum安装没有就源码安装
apr-1.5.0.tar.bz2
apr-util-1.5.3.tar.bz2
源码安装
# tar -xf apr-1.5.0.tar.bz2 -C /usr/local/src/
# tar -xf apr-util-1.5.3.tar.bz2 -C /usr/local/src/
进入解压后的目录执行安装
先安装apr
# ./configure --prefix=/usr/local/apr/
# make
# make install
再安装apr-util
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make
# make install
2, 安装httpd2.4
解压
# tar -xf httpd-2.4.9.tar.bz2 -C /usr/local/src
查看帮助
./configure --help
执行./configure
# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd2.4/
--enable-so --enable-cgi --enable-rewrite --enable-ssl --with-zlib
--with-pcre --enable-modules=most --enable-mpms-shared=all --with-mpm=event
--with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/
--enable-so 支持动态加载模块
--enable-ssl 支持https
--enable-cgi 支持cgi脚本执行
--enable-rewrite 支持url重写
--with-zilb 压缩库的API
--with-pcre 支持正则表达式
--enable-mpms-shared=all 编译全部的mpm
--enable-mpms=event 默认的mpm为event
--enable-modules=most 支持大多数常用的模块
# make && make install
3, 输出命令
# vim /etc/profile.d/httpd.sh
写入
export PATH=/usr/local/apache/bin:$PATH
然后 执行
# . /etc/profile.d/httpd.sh
让配置生效
5, 导入man页
# vim /etc/man.config
写入
MANPATH /usr/local/apache/man
6,输出头文件
# ln -sv /usr/local/apache/include/ /usr/include/httpdl
7,测试启动
# apachectl start
配置站点发布目录为/www/htdocs/
创建目录
# mkdir -pv /www/htdocs
编辑主配置文件
# vim httpd.conf
DcoumentRoot "/www/htdocs/"
添加httpd用户
# useradd -r httpd -s /sbin/nologin
编辑主配置文件
# vim httpd.conf
User httpd
Group httpd
8,配置虚拟主机
8.1 注释掉主配置文件的“DocumentRoot”
#
#DocumentRoot "/www/htdocs"
8.2启用虚拟主机
# Virtual hosts
Include /etc/httpd2.4//extra/httpd-vhosts.conf
8.3编辑虚拟主机配置文件
为各虚拟主机创建DocumentRoot
mkdir -pv /www/htdocs/{net,org}
创建主页
echo "<html><body><h1> org It works !</h1></body></html>" > /www/htdocs/org/index.html
echo "<html><body><h1> net It works !</h1></body></html>" > /www/htdocs/net/index.html
在浏览器测试先修改hosts文件
C:\Windows\System32\drivers\etc\hosts
重启服务
# apachectl restart
测试
9,配置https
自建CA
cd /etc/pki/CA
准备文件
# touch index.txt crlnumber serial
生成私钥
# openssl genrsa -out private/cakey.pem
生成证书
# openssl req -new -x509 -key private/cakey.pem -out cacert.pem
为httpd创建私钥
cd /etc/httpd2.4/
# openssl genrsa -out httpd.key
生成证书签署请求
# openssl req -new -key httpd.key -out httpd.csr
签证书
# openssl ca -in httpd.csr -out httpd.crt
修改httpd主配置文件启用ssl
# Secure (SSL/TLS) connections
Include /etc/httpd2.4//extra/httpd-ssl.conf
编辑httpd-ssl.conf
SSLCertificateFile "/etc/httpd2.4//httpd.crt"
SSLCertificateKeyFile "/etc/httpd2.4//httpd.key"
DocumentRoot "/www/htdocs/ssl"
mkdir /www/htdocs/ssl
echo "<html><body><h1> ssl It works !</h1></body></html>" > /www/htdocs/net/index.html
修改C:\Windows\System32\drivers\etc\hosts
写入192.168.100.9 www.ssl.org
导入CA证书给浏览器cacert.pem
测试
10,配置目录认证
# vim /etc/httpd2.4/extra/httpd-ssl.conf
<Directory "/www/htdocs/ssl/home">
Options None
Allowoverride Authconfig
AuthName "root home"
AuthType Basic
AuthUserfile /etc/httpd2.4/.passwd
Require valid-user
</Directory>
准备密码文件
# htpasswd -c -m /etc/httpd2.4/.passwd xy
重启服务
测试
11,配置服务器状态说明页
编辑主配置文件
启用模块和配置文件
LoadModule status_module modules/mod_status.so
# Real-time info on requests and configuration
Include /etc/httpd2.4//extra/httpd-info.conf
# vim /etc/httpd2.4//extra/httpd-info.conf
<Location /server-status>
SetHandler server-status
Require host .example.com
Require ip 192.168.100.100
</Location>
ExtendedStatus On
测试
12,配置cgi
加载cgi模块支持
创建目录
mkdir /www/htdocs/cgi-bin/
编辑配置文件
定义cgi别名:ScriptAlias /cgi-bin/ "/www/htdocs/cgi-bin/"
定义目录属性:
<Directory "/www/htdocs/cgi-bin/">
AllowOverride None
Options ExecCgi
Require all granted
</Directory>
准备测试文件
# cp /usr/local/apache/cgi-bin/test-cgi.sh /www/htdocs/cgi-bin/
写入#!/bin/bash
重启服务测试
13,配置启用event
编辑主配置文件
# vim httpd.conf
LoadModule mpm_event_module modules/mod_mpm_event.so
启用下面一项
# Server-pool management (MPM specific)
Include /etc/httpd2.4//extra/httpd-mpm.conf
编辑配置文件
# vim /etc/httpd2.4/extra/httpd-mpm.conf
<IfModule mpm_event_module>
StartServers 3 /*启动进程数*/
MinSpareThreads 75 /*最小空闲线程数*/
MaxSpareThreads 250 /*最大空闲线程数*/
ThreadsPerChild 25 /*单进程可生成多少线程*/
MaxRequestWorkers 400 /*最大并发请求数*/
MaxConnectionsPerChild 0 /*进程生命周期*/
</IfModule>
apache 三种工作模式
prefiork:由root启动一个httpd父进程监听在80端口,由此父进程生成多个子进程响应用户请求
各个子进程独立存在。
优点:由于进程独立存在,所以一个进程崩溃不会影响其他进程,较稳定
缺点:由于每个进程只响应一个请求,资源占用比较高。
worker :由root启动一个httpd父进程监听在80端口,由此父进程生成多个子进程(这些
子进程并不工作),当有用户请求时由子进程生成多个线程,一个线程响应一个请求
优点:由于线程可共享资源,所以资源占用较低。
缺点:线程之间影响,稳定性较低,线程之间需要切换。而且生成线程的进程并不提供服务
所以并不能提高多少效率
event :由root启动一个httpd父进程监听在80端口,由此父进程生成多个线程
一个线程响应多个请求。线程之间不需要切换,提高了效率,而且节约了资源
线程之间影响
14,配置压缩
编辑主配置文件
加载模块
LoadModule deflate_module modules/mod_deflate.so
在配置文件最后一行有
Setoutputfilter DEFLATE
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
DeflateCompressionLevel 6 (压缩等级)