Apache HTTP Server 是基于标准的HTTP网络协议提供网页浏览服务。
(前台)Apache:作为LAMP架构的前端,是一款功能强大,稳定性好的Web服务器程序,该服务器直接面向用户提供网站访问,发送网页,图片等文件内容。
httpd可以用yum,rpm,源码编译安装。前两者比较简单,快速。但在功能上存在一定局限性。
编译安装的优点
1、具有较大的自由度,功能可定制
2、可及时获得最新的软件版本
3、普遍适用于大多数Linux版本,便于一直使用
1.准备工作
为了避免发生端口冲突,程序冲突等现象,先卸载使用yum安装的httpd。
[root@localhost ~]# rpm -e httpd --nodeps
--nodeps :不检查依赖直接卸载
安装所需程序
yum -y install \
gcc \ #C语言的编译器
gcc-c++ \ #C++的编译器
make \ #源代码编译器(源代码转换成二进制文件)
pcre \ #pcre是一个Perl函数库,包括perl 兼容的正则表达式库
pcre-devel \ #perl的接口开发包
expat-devel \ #用于支持网站解析HTML、XML文件
perl #perl语言编译器
1)解压包
[root@localhost ~]# tar xf httpd-2.4.29.tar.bz2 -C /opt
[root@localhost ~]# tar xf apr-1.6.2.tar.gz
[root@localhost ~]# tar xf apr-util-1.6.0.tar.gz
将插件转移到httpd的目录下
[root@localhost ~]# mv apr-1.6.2 /opt/httpd-2.4.29/srclib/apr
[root@localhost ~]# mv apr-util-1.6.0 /opt/httpd-2.4.29/srclib/apr-util
2)配置
[root@localhost httpd-2.4.29]# ./configure
--prefix=/usr/local/httpd \ #指定 httpd 服务程序的安装路径
--enable-so \ #启用动态加载核心模块支持,使 httpd 具备进一步扩展功能的能力
--enable-rewrite \ #启用网页地址重写功能,用于网站优化、防盗链及目录迁移维护
--enable-charset-lite \ #启动字符集支持,以便支持使用各种字符集编码的页面
--enable-cgi #启用CGI(通用网关接口)脚本程序支持,便于增强网站的外部扩展应用访问能力
3)编译安装
[root@localhost httpd-2.4.29]# make && make install
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/bin/* /usr/local/bin
[root@localhost httpd-2.4.29]# ls -l /usr/local/bin/httpd /usr/local/bin/apachectl
6)添加httpd系统服务
[root@localhost httpd-2.4.29]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
cp:是否覆盖"/etc/init.d/httpd"? y
将apachectl脚本复制为/etc/init.d/httpd
[root@localhost httpd-2.4.29]# vim /etc/init.d/httpd
#!/bin/sh
# chkconfig: 35 85 21
//服务识别参数,在级别3,5中启动。启动和关闭的顺序分别为85,21
# description: Apache is a World Wide Web serve
//服务描述信息
.......省略部分
[root@localhost httpd-2.4.29]# chkconfig --add httpd
//将httpd添加为系统服务
[root@localhost httpd-2.4.29]# chkconfig --list httpd
查看httpd服务的自启动状态
7)修改配置文件
配置httpd服务
[root@localhost httpd-2.4.29]# vim /usr/local/httpd/conf/httpd.conf
......
51 #Listen 12.34.56.78:80
52 Listen 192.168.233.105:80 //监听本机IP地址和80端口
......
168 User daemon //添加
169 Group daemon //
......
199 ServerName www.xzw.com:80 //设置网站名称
[root@localhost ~]# /usr/local/httpd/bin/apachectl -t
Syntax OK
//如果没有语法错误。就会显示Syntax OK。否则需要根据错误提示修正配置
8)启动httpd服务
[root@localhost ~]# /etc/init.d/httpd start
httpd (pid 14347) already running
[root@localhost ~]# cat /usr/local/httpd/htdocs/index.html
<html><body><h1>It works!</h1></body></html>
10)在客户机中访问web站点
[root@localhost httpd-2.4.29]# curl 192.168.233.105
<html><body><h1>It works!</h1></body></html>
// curl ip:查看本地域名是否安装好
11)查看web站点访问情况
查看访问日志
可以及时了解web站点的访问情况。记录了客户机的IP地址,访问服务器的日期和时间,请求的网页对象等信息。
查看错误日志
可以为排查服务器运行故障提供参考一句。记录了发生错误的日期和时间,错误事件类型,错误事件内容描述等信息。
主配置文件httpd.conf由注释行,设置行两部分组成。根据配置作用的范围不同,设置为全局配置和区域配置。
31 ServerRoot "/usr/local/httpd" //设置httpd服务器的根目录
52 Listen 192.168.233.105:80 //设置httpd服务器监听的网络端口号
168 User daemon //设置运行httpd时的用户身份
169 Group daemon //设置运行httpd时的组身份
190 ServerAdmin [email protected] //设置http的服务器的管理员E-mail地址
199 ServerName www.xzw.com:80 //设置web站点的主机名
356 <Directory "/usr/local/httpd/cgi-bin"> //定义"/"目录区域的开始
357 AllowOverride None //不允许隐含控制文件中的覆盖配置
358 Options None //
359 Require all granted
360 </Directory>
httpd支持的虚拟主机类型有:基于域名,基于IP地址,基于端口 。三种分类。
为每个虚拟机使用不同的域名,但其对应的IP地址是相同的。
方法1:部署DNS域名解析服务器。提供域名解析服务。此方法用于生产工作。
方法2:在/etc/hosts文件中零时配置域名和IP地址的映射关系
1.为虚拟机提供域名解析
[root@localhost ~]# echo "192.168.233.105 www.benet.com" >> /etc/hosts
[root@localhost ~]# echo "192.168.233.105 www.accp.com" >> /etc/hosts
2.为虚拟机准备网页文档
[root@localhost ~]# echo " www.benet.com
" >> /var/www/html/benet/index.html
[root@localhost ~]# echo " www.accp.com
" >> /var/www/html/accp/index.html
3.添加虚拟主机配置
[root@localhost ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.233.105:80>
DocumentRoot "/usr/local/httpd/htdocs/benet"
ServerName www.benet.com
ErrorLog "logs/benet.com_error.log"
CustomLog "logs/benet.com-access_log" common
</VirtualHost>
<VirtualHost 192.168.233.105:80>
DocumentRoot "/usr/local/httpd/htdocs/accp"
ServerName www.accp.com
ErrorLog "logs/accp.com_error.log"
CustomLog "logs/accp.com-access_log" common
</VirtualHost>
[root@localhost conf]# vim/usr/local/httpd/conf/httpd.conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf //加载独立的配置文件
为每个虚拟机使用不同的域名,且其对应的IP地址也是不同的。
[root@www html]# ifconfig ens33:0 192.168.233.100 //临时添加虚拟IP
[root@localhost ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.233.105:80>
DocumentRoot “/var/www/html/benet”
ServerName www.benet.com
ErrorLog “logs/benet.com_error.log”
CustomLog “logs/benet.com-access_log” common
</VirtualHost>
<VirtualHost 192.168.233.100:80>
DocumentRoot “/var/www/html/accp”
ServerName www.accp.com
ErrorLog “logs/accp.com_error.log”
CustomLog “logs/accp.com-access_log” common
</VirtualHost>
添加监听IP
[root@www html]# vim /usr/local/httpd/conf/httpd.conf
这种方式不使用域名,IP地址来区分不同的站点内容,而是使用不同的TCP端口号。因此用户在访问时也需要加上指定端口号。
[root@localhost ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.233.105:80>
DocumentRoot “/var/www/html/benet”
ServerName www.benet.com
ErrorLog “logs/benet.com_error.log”
CustomLog “logs/benet.com-access_log” common
</VirtualHost>
<VirtualHost 192.168.233.105:8080>
DocumentRoot “/var/www/html/accp”
ServerName www.accp.com
ErrorLog “logs/accp.com_error.log”
CustomLog “logs/accp.com-access_log” common
</VirtualHost>
修改监听端口
[root@www html]# vim /usr/local/httpd/conf/httpd.conf
#Listen 12.34.56.78:80
Listen 192.168.233.105:80
Listen 192.168.233.105:8080
在安装本地源时需要检查本机是否有残留httpd文件。可以用rpm -e httpd --nodeps进行删除。再根据提示下载依赖包。拖进本地源。解压安装。
在创建虚拟主机时,只需要修改配置文件:httpd.conf 和http-vhosts.conf。httpd.conf只需修改监听地址和端口。httpd-vhosts.conf需要修改ip和域名的映射。
配置文件httpd-vhosts.conf中
<VirtualHost 192.168.233.105:80>
DocumentRoot “/var/www/html/benet” //地址需要修改为/usr/local/httpd/htdocs/benet 。accp亦然。
ServerName www.benet.com
ErrorLog “logs/benet.com_error.log”
CustomLog “logs/benet.com-access_log” common
</VirtualHost>
如果地址不修改,且使用了中文字符的引号”“会报错误
[root@localhost conf]# httpd -t
AH00112: Warning: DocumentRoot [/usr/local/httpd/\xe2\x80\x9c/var/www/html/benet\xe2\x80\x9d] does not exist
AH00112: Warning: DocumentRoot [/usr/local/httpd/\xe2\x80\x9c/var/www/html/accp\xe2\x80\x9d] does not exist
(2)No such file or directory: AH02291: Cannot access directory '/usr/local/httpd/\xe2\x80\x9clogs/' for error log of vhost defined at /usr/local/httpd/conf/extra/httpd-vhosts.conf:31
(2)No such file or directory: AH02291: Cannot access directory '/usr/local/httpd/\xe2\x80\x9clogs/' for error log of vhost defined at /usr/local/httpd/conf/extra/httpd-vhosts.conf:24
AH00014: Configuration check failed
修改之后即可。