httpd功能特性
虚拟主机 IP、Port、FQDN
CGI:Common Gateway Interface,通用网关接口
反向代理
负载均衡
路径别名
丰富的用户认证机制 basic digest
支持第三方模块
新特性
MPM支持运行为DSO机制;以模块形式按需加载
event MPM生产环境可用
异步读写机制
支持每模块及每目录的单独日志级别定义
每请求相关的专用配置
增强版的表达式分析式
毫秒级持久连接时长定义
基于FQDN的虚拟主机不需要NameVirutalHost指令
新指令,AllowOverrideList
支持用户自定义变量
更低的内存消耗
Httpd介绍
CentOS 6: 2.2 CentOS 7: 2.4(6与7有的文件路径)
CentOS 7程序环境:httpd-2.4
配置文件:/etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*.conf
配置文件:/etc/sysconfig/httpd(不用)
日志文件目录:/var/log/httpd/access_log: 访问日志 error_log:错误日志
主程序文件:/usr/sbin/httpd
主进程文件: /etc/httpd/run/httpd.pid
模块文件路径: /etc/httpd/modules /usr/lib64/httpd/modules
站点网页文档根目录:/var/www/html
服务控制和启动:systemctl enable|disable httpd.service systemctl {start|stop|restart|status|reload} httpd.service
服务单元文件: /usr/lib/systemd/system/httpd.service
帮助文档包:httpd-manual
检查配置语法:httpd –t
查看静态和动态的模块: httpd -l httpd –M
httpd自带的工具程序
htpasswd:basic认证基于文件实现时,用到的账号密码文件生成工具
apachectl:httpd自带的服务控制脚本,支持start和stop
rotatelogs:日志滚动工具
httpd的压力测试工具
ab, webbench、http_load、seige、
Jmeter 开源
Loadrunner 商业,有相关认证
tcpcopy:网易,复制生产环境中的真实请求,并将之保存
ab
以下是httpd命令详解。
用法
httpd [-hlLStvVX][-c ][-C ][-d<服务器根目录>][-D<设定文件参数>][-f<设定文件>]
-d serverroot 将ServerRoot指令设置初始值为serverroot。它可以被配置文件中的ServerRoot指令所覆盖。其默认值是/usr/local/apache2 。
-f config 在启动中使用config作为配置文件。如果config不以"/"开头,则它是相对于ServerRoot的路径。其默认值是conf/httpd.conf 。
-k start|restart|graceful|stop|graceful-stop 发送信号使httpd启动、重新启动或停止。更多信息请参见停止Apache。
-C directive 在读取配置文件之前,先处理directive的配置指令。
-c directive 在读取配置文件之后,再处理directive的配置指令。
-e level 在服务器启动时,设置LogLevel为level 。它用于在启动时,临时增加出错信息的详细程度,以帮助排错。
-E file 将服务器启动过程中的出错信息发送到文件file 。
-l 输出一个静态编译在服务器中的模块的列表。它不会列出使用LoadModule指令动态加载的模块。
-L 输出一个指令的列表,并包含了各指令的有效参数和使用区域。
-M 输出一个已经启用的模块列表,包括静态编译在服务器中的模块和作为DSO动态加载的模块。
-t 仅对配置文件执行语法检查。程序在语法解析检查结束后立即退出,或者返回"0"(OK),或者返回非0的值(Error)。如果还指定了"-DDUMP_VHOSTS",则会显示虚拟主机配置的详细信息。
-v 显示httpd的版本,然后退出。
-V 显示httpd和APR/APR-Util的版本和编译参数,然后退出。
安装httpd-2.4.39
apr-1.7.0.tar.bz2 (Apache可移植运行库)
apr-util-1.6.1.tar.bz2
httpd-2.4.39.tar.bz2
1 合并源码文件
tar xvf apr-1.7.0.tar.bz2
tar xvf apr-util-1.6.1.tar.bz2
tar xvf httpd-2.4.39.tar.bz2
mv apr-1.7.0 httpd-2.4.39/srclib/apr (安装httpd方法二)
mv apr-util-1.6.1 httpd-2.4.39/srclib/apr-util(安装httpd方法二)
2 安装相关的开发环境包
yum install gcc prce-devel openssl-devel expat-devel -y
3 编译安装
安装apr-1.6.2
cd apr-1.6.2
./configure --prefix=/usr/local/apr
make && make install
安装apr-util-1.6.0
cd ../apr-util-1.6.0
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make -j 2 && make install
安装httpd方法一:
useradd -s /sbin/nologin apache
cd httpd-2.4.39/
./configure
--prefix=/usr/local/httpd #指定apache的安装路径
--with-mpm=prefork #Apache的三种工作模式:event,worker,prefork,指定启用mpm模式,默认使用enevt模式,在apache的早期版本2.0默认prefork,2.2版本是worker 2.4版本是event.
--enable-so #这个是支持动态共享模块
--enable-rewrite #支持URL重写
--enable-ssl #支持ssl 或--with-ssl=/usr/local/openssl #这个是指定openssl的安装位置
--enable-cgi #启用cgi
--enable-modules=most #指明要静态编译到httpd二进制文件的模块 all或者most,all代表包含所有的模块 most代表大部分的模块
--enable-mods-shared=most #指明要以DSO方式编译的模块,all代表全部,most代表大部分 --enable-mpms-shared=all 启用MPM所有支持的模式,这样event,worker,prefork就会以模块化的方式安装,要用哪个就在httpd.conf里面配置就好了
--with-pcre #支持 pcre或 使用 --with-pcre=/usr/local/pcre
--with-zlib #使用 zlib 压缩库或 使用--with-z=/usr/local/zlib
--with-apr=/usr/local/apr #指定 apr 的安装路径
--with-apr-util=/usr/local/apr-util #指定 apr-util 的安装路径
--enable-expires:激活彧通过配置文件控制 HTTP 的“Expires:”和“Cache-Control:”头内容,即对网站图片、js、css 等内容,提供客户端浏览器缓存的设置。这个是 apache 调优的一个重要选项之一。
make -j 4 && make install
安装httpd方法二 :
cp -r apr-1.6.2 httpd-2.4.39/srclib/apr
cp -r apr-util-1.6.0 httpd-2.4.39/srclib/apr-util
cd httpd-2.4.39/
./configure \
--prefix=/usr/local/httpd \
--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
make && make install
4 环境变量和启动
echo 'PATH=/usr/local/httpd/bin:$PATH' > /etc/profile.d/httpd.sh
5启动脚本三种方法
5.1自定义启动脚本
vim /etc/rc.d/rc.local
/usr/local/httpd/bin/apachectl start
chmod +x /etc/rc.d/rc.local
. /etc/rc.d/rc.local
5.2其它机子复制过的改版本启动文件 需要模块直接:httpd -M | grep systemd
vim /usr/lib/systemd/system/httpd.service
[Service]
Type=forking
#EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/usr/local/httpd/bin/httpd $OPTIONS -k start
ExecReload=/usr/local/httpd/bin/httpd $OPTIONS -k graceful
ExecStop=/bin/kill -WINCH ${MAINPID}
5.3利用apachectl做启动脚本(centos 6 )
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
sed -i '1a # chkconfig: 35 85 21' /etc/init.d/httpd
sed -i '2a # description: apache 2.4.39' /etc/init.d/httpd
chkconfig --add httpd
chkconfig httpd on
systemctl restart httpd
systemctl status httpd
systemctl stop httpd
5.创建专用用户和组(编辑配置文件)
useradd -s /sbin/nologin -r apache