httpd的配置文件
配置文件:
/etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*.conf
服务脚本:/etc/rc.d/init.d/httpd
脚本配置文件:/etc/sysconfig/httpd
模块目录: /etc/httpd/modules:
链接文件 /usr/lib64/httpd/modules
主程序:
/usr/sbin/httpd: prefork /usr/sbin/httpd.event: event
/usr/sbin/httpd.worker: worker
日志文件目录:
/var/log/httpd
access_log: 访问日志
error_log: 错误日志
站点文档根目录: /var/www/html/p_w_picpaths/a.jpg
http配置文件简要说明:
Listen指令
Listen指令设置服务器监听的IP以及端口号,默认监听服务器本机所有的IP地址的80端口。语法格式为Listen [IP地址:]端口 [协议],其中IP地址与协议为可选项,默认监听所有IP,使用TCP协议。一个配置文件中可以多次使用Listen指令来开启多个端口。
LoadModule指令
Apache HTTP Server的特色之一就是她的功能多数是以模块方式加载的,但如果希望Apache动态加载模块,需要在编译Apache时通过--enable-so将mod_so以静态方式编译到Apache核心模块中,LoadModule指令的作用就是加载模块。语法格式为LoadModule 模块 模块文件名称,模块文件一般位于ServerRoot指定目录下的modules目录中。
ServerName指令
ServerName指令设置服务器本机的主机名称以及端口,对于URL地址的重定向很重要该指令设置Web服务对客户端开放可见的文档根目录,也就是客户端访问网站的根路径,默为/usr/local/apache2/htdocs
路径别名
站点根目录:/www/html
HTTP搭建虚拟服务器:
configure脚本用来检查系统环境、查找依赖文件、设置安装路径等操作,configure拥有很多参数,读者可以通过./configure --help查看该脚本支持的所有参数。
下面是configure常用参数说明:
参数 描述
--prefix 指定Apache httpd程序的安装主目录
--enable-so 开启模块化功能,支持DSO(动态共享对象)
--enable-ssl 支持SSL加密
--enable-rewrite 支持地址重写
--with-mpm 设置Apache httpd工作模式
--with-suexec-bin 支持SUID、SGID
--with-apr 指定apr程序绝对路径
开始搭建虚拟主机
虚拟主机是在一台服务器上同时运行多个网站业务,Apache HTTP Server支持基于域名以及基于IP虚拟主机类型。在Apache配置文件中虚拟主机指令需要使用VirtualHost容器封装。基于IP的虚拟主机可以根据不同的IP地址以及端口号定位不同的网站请求,但基于IP的虚拟主机需要独立的IP地址定位连接的网站,而目前IP地址是互联网的稀缺资源,所以很多时候我们更喜欢基于域名的虚拟主机,服务器可以根据客户端访问HTTP的头部信息来实现网站的分离解析,客户端可以使用不同的域名访问位于同一IP地址的服务器资源。
当客户端请求到达后,服务器会根据<VirtualHost IP地址:[端口号]>参数匹配IP地址与端口号,IP地址可以使用*匹配服务器本地所有IP地址。接下来我们通过一个案例说明基于域名虚拟主机的实现方式,首先我们需要将主配置文件中Include conf/extra/httpd-vhosts.conf这样功能开启,默认该行为注释行,去除#符号即可。Include指令会将httpd-vhosts.conf文件视作为配置文件的一部分。下面我们仅列出该配置文件中需要修改的部分
所以说虚拟主机有三种不同的访问路径,分别是基于端口、ip、主机名。
在使用虚拟主机之前要取消主服务器。即注释掉主服务器的站点根路径指定:DocumentRoot。
定义虚拟主机:启用 NameVirtualHost IP:端口 格式如下
<VirtualHost IP:PORT>
ServerName 虚拟主机名
DocumentRoot 虚拟主机根路径
ServerAlias
ErrorLog 错误日志
CustomLog 访问记录
</VirtualHost>
之后使用语法错误检查:service httpd configtest 没有语法错误就在/var/www/目录下建立虚拟主机的根目录,以及在/var/log/htppd下建立错误日志。
完成后启动服务
#service httpd restart
https协议
https的ssl模块。安装使用 # yum install mod_ssl
https协议基于443端口
ssl协议是基于ip地址创建的,因此每个ip地址只能创建一个ssl会话。ssl协议需完成的工作如下:
交换协议版本号,选择双方都支持的加密方式,客户端对服务器端实现身份验证,最后是密钥交换。
客户端验证服务器证书:证书是否在有效期,ca的可信度,证书完整性以及持有者的身份。
https的配置
1、安装ssl协议模块: # yum install mod_ssl
2、为服务器端生成私钥以及为期提供证书:
自建CA参考SSL协议与CA服务器的自建,把/etc/pki/CA/private中的cacert。pem导出修改后缀为crt。然后安装
3、配置使用https的虚拟主机
4、重新加载配置以及测试
新版本的httpd的编译安装
准备开发环境:
yum groupinstall -y "Server Platform Development"
yum groupinstall -y "Development tools"
yum install -y pcre-devel-7.8-6.el6.x86_64
编译安装httpd2.4所依赖的软件包
1.安装apr-1.5.0.tar.bz2
# tar xf ^Cr-1.5.0.tar.bz2
# cd apr-1.5.0
# ./configure --prefix=/usr/local/apr
# make && make install
2.安装apr-util-1.5.3
ftp://ftp.mirrorservice.org/sites/ftp.apache.org/apr/apr-util-1.5.3.tar.bz2
# tar xf apr-util-1.5.3.tar.bz2
# cd apr-util-1.5.3
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
# make && make install
.以上两步编译完成,现正式开始编译httpd-2.4.9.tar.bz2
http://mirrors.cnnic.cn/apache//httpd/httpd-2.4.9.tar.bz2
# tar xf httpd-2.4.9.tar.bz2
# cd httpd-2.4.9
# ./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=event
--prefix=/usr/local/apache 安装路径
--sysconfdir=/etc/httpd24 配置文件路径
--enable-so 允许运行时加载DSO模块
--enable-ssl 如果不加载将无法使用使用https
--enable-cgi 允许使用cgi脚本
--enable-rewrite 支持URL重写机制
--with-zlib 支持网络通用压缩库
--with-pcre 支持pcre
--with-apr=/usr/local/apr 指定apr的安装路径
--with-apr-util=/usr/local/apr-util/ 指定apr-util的安装路径
--enable-modules=most 启用大多数常用的模块
--enable-mpms-shared=all 启用MPM所有支持的模式
--with-mpm=event 默认使用enevt模式
查看安装后所生成的文件 extra目录是2.4版新增目录
# ls
extra httpd.conf magic mime.types original
# cd extra/
# ls
httpd-autoindex.conf httpd-info.conf httpd-mpm.conf httpd-userdir.conf
httpd-dav.conf httpd-languages.conf httpd-multilang-errordoc.conf httpd-vhosts.conf
httpd-default.conf httpd-manual.conf httpd-ssl.conf proxy-html.conf
导出头文件;以目录链接的形式来实现
# ln -sv /usr/local/apache/include/ /usr/include/httpd
`/usr/include/httpd' -> `/usr/local/apache/include/'
输出二进制程序
# vim /etc/profile.d/httpd24.sh
export PATH=/usr/local/apache/bin:$PATH
#. /etc/profile.d/httpd24.sh
# httpd -V 显示httpd版本信息
导出man文件
# vim /etc/man.config
MANPATH /usr/local/apache/man
# man -M /usr/local/apache/man httpd
修改服务脚本;
修改服务前先把httpd关闭;apachect1 stop
vim /etc/init.d/httpd24.sh
转载于:https://blog.51cto.com/fengshi/1538173