部署LAMP平台之Apache详解

部署LAMP平台之Apache详解

  • Apache网站服务基础
    • Apache简介
      • Apache主要特点
    • 安装httpd服务器
      • 源码编译安装步骤
      • httpd.conf配置文件详解
        • 全局配置项
        • 区域配置项
    • 构建虚拟web主机
      • 基于域名
      • 基于IP地址
      • 基于端口
    • 总结:
      • 错题:

Apache网站服务基础

Apache简介

Apache HTTP Server 是基于标准的HTTP网络协议提供网页浏览服务。
(前台)Apache:作为LAMP架构的前端,是一款功能强大,稳定性好的Web服务器程序,该服务器直接面向用户提供网站访问,发送网页,图片等文件内容。

Apache主要特点

  • 开放源代码
  • 跨平台应用
  • 支持各种Web编程语言
  • 模块化设计
  • 运行非常稳定
  • 良好的安全性

安装httpd服务器

httpd可以用yum,rpm,源码编译安装。前两者比较简单,快速。但在功能上存在一定局限性。
编译安装的优点
1、具有较大的自由度,功能可定制
2、可及时获得最新的软件版本
3、普遍适用于大多数Linux版本,便于一直使用

源码编译安装步骤

1.准备工作
为了避免发生端口冲突,程序冲突等现象,先卸载使用yum安装的httpd。
部署LAMP平台之Apache详解_第1张图片

[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语言编译器

2.源码编译及安装
在这里插入图片描述

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

4)查看安装结果
在这里插入图片描述
部署LAMP平台之Apache详解_第2张图片
5)优化执行路径

[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服务的自启动状态

部署LAMP平台之Apache详解_第3张图片

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

在这里插入图片描述
9)查看网页文档

[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:查看本地域名是否安装好

部署LAMP平台之Apache详解_第4张图片
11)查看web站点访问情况
查看访问日志
部署LAMP平台之Apache详解_第5张图片
可以及时了解web站点的访问情况。记录了客户机的IP地址,访问服务器的日期和时间,请求的网页对象等信息。

查看错误日志
部署LAMP平台之Apache详解_第6张图片
可以为排查服务器运行故障提供参考一句。记录了发生错误的日期和时间,错误事件类型,错误事件内容描述等信息。

httpd.conf配置文件详解

主配置文件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>

构建虚拟web主机

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  //加载独立的配置文件

重启httpd服务使配置文件生效。
在这里插入图片描述
部署LAMP平台之Apache详解_第7张图片

部署LAMP平台之Apache详解_第8张图片

基于IP地址

为每个虚拟机使用不同的域名,且其对应的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

修改之后即可。

你可能感兴趣的:(linux)