文章目录
一、Apache概述
1.Apache起源
- 源于A Patchy Server,著名的开源Web服务软件
- 1995年时,发布Apache服务程序的1.0版本
- 由Apache软件基金会(ASF)负责维护
- 最新的名称为“Apache HTTP Server”
2.Apache特点
- 开放源代码,跨平台应用
- 支持多种网页编程语言
- 模块化设计,运行稳定,良好的安全性
3.版本差异
1.x
- 目前最高版本是1.3,运行稳定
- 向下兼容性较好,但缺乏一些较新的功能
2.x
- 目前最高版本是2.4
- 具有更多的功能特性
- 与1.X相比,配置管理风格存在较大差异
4.编译安装优点
- 具有较大的自由度,功能可定制
- 可及时获得最新的软件版本
- 普遍适用于大多数Linux版本,便于移植使用
5.Apache依赖软件包
- 1.apr:为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。早期apache为了能够处理各种不同的系统平台的时候调用不同的处理函数,现在apache将通用函数独立出来发展成apr项目(可以跨越多操作系统平台使用的底层支持接口库)
- 2.apr-util:完整的apr开发包包含三个:apr,apr-util,apr-iconv。都是为了完成一个功能就是为上层应用提供运行库,只不过和apr提供的数据结果和接口库不一样而已。(完整的apr开发包包含三个:apr,apr-util,apr-iconv。都是为了为上层应用提供运行库)
- 3.pcre-devel:为了支持正则表达式
- 4.expat-devel;上一个C语言开发的,用来解析XML文档的开发库,主要作用是搜索它的的文档,识别文件指定的位置,调用该部分相应的处理程序,将文件输送到解析器,将文件分割成多个片断,分段装到内存中(搜索它的的文档,识别文件指定的位置)
- 5.perl:内部集成了正则表达式和第三方代码库CPAN。和前面的pcre-devel支持的正则表达式不一样。(内部集成了正则表达式和第三方代码库CPAN)
6.Apache配置选项:
- -prefix:指定apache程序安装到哪个目录下
- -enable-so:启用动态加载模块支持,使httpd具备进一步扩展功能的能力
- -enable-rewrite:启用网页地址重写功能,用于网站优化机目录迁移
- -enable-charset-lite:启用字符集支持,以便支持使用字符集编码的网页
- -enable-cgi:启用CGI脚本程序支持,便于扩展网站的应用访问能力
7.Apache主要子目录的用途
- /usr/local/httpd/bin:存放httpd服务的各种可执行程序文件
- /usr/local/httpd/conf:存放httpd服务的各种配置文件
- /usr/local/httpd/htdocs:存放网页文档,包括默认首页文件index.html
- /usr/local/httpd/logs:存放httpd服务的日志文件
- /usr/local/httpd/modules:存放httpd服务的各种模块文件
- /usr/local/httpd/cgi-bin:存放各种CGI程序文件
二、搭建Apache环境
1.安装解压软件包
1.解压缩
tar zvxf apr-1.6.2.tar.gz
tar zvxf apr-util-1.6.0.tar.gz
tar jxvf httpd-2.4.29.tar.bz2
2.剪切这两个文件,拒绝部分依赖关系
[root@server1 ~]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@server1 ~]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
3.安装依赖包
[root@server1 ~]# yum -y install gcc gcc-c++ make pcre-devel expat-devel perl
4.配置添加功能模块
[root@server2 ~]# cd httpd-2.4.29/
[root@server1 httpd-2.4.29]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
5.编译安装
make && make install
[root@server1 ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@server1 ~]# vi /etc/init.d/httpd
添加:
#chkconfig:45 87 31
#description:Apache HTTP Server
6.用chkconfig去管理httpd
[root@server1 ~]# chkconfig --add httpd
[root@server1 ~]# chkconfig --list
[root@server1 ~]# systemctl enable httpd
7.建立软链接
[root@server1 ~]# ln -s /usr/local/httpd/bin/* /usr/bin/
[root@server1 ~]# ln -s /usr/local/httpd/conf/httpd.conf /etc/
8.网站与域名捆绑
vi /etc/httpd.conf
修改ServerName www.nb.com:80
9.检查语法的两种方法
[root@server1 ~]# apachectl -t
[root@server1 ~]# httpd -t
10.将This ls Fa 重定向输入到index.html中
echo "<h1>This ls Fa</h1>" > /usr/local/httpd/htdocs/index.html
11.重启
[root@server1 ~]# systemctl restart httpd #重启服务
[root@server1 ~]# netstat -anpt | grep httpd #查看httpd服务端口状态
[root@server1 ~]# curl http://localhost #测试访问
测试
三、构建虚拟主机
虚拟Web 主机指的是在同一台服务器中运行多个Web站点,其中每一个站点实际上并不独立占用整个服务器,因此被称为“虚拟”Web 主机。
1.Httpd服务支持的虚拟主机类型三种:
基于域名:为每个虚拟主机使用不同的域名,但是其对应的IP地址是相同的。
基于IP地址: 为每个虚拟主机使用不同的域名,且各自对应的IP地址也不相同。
基于端口:这种方式并不使用域名、IP地址来区分不同的站点内容,而是使用了不同的TCP端口号。
1.1 基于域名
[root@server1 ~]# mkdir /opt/aa
[root@server1 ~]# mkdir /opt/bb
[root@server1 ~]# cd /opt/aa
[root@server1 aa]# vi index.html
<html><body><h1>aa</h1></body></html>
[root@server1 ~]# cd /opt/bb
[root@server1 aa]# vi index.html
<html><body><h1>bb</h1></body></html>
vi /etc/httpd.conf
#需自己创建extra目录,再配置一份虚拟主机的apache网站配置
[root@server1 ~]# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf
[root@server2 ~]# vi /etc/hosts
测试:
www.aa.com
www.bb.com
1.2 基于IP
1.设置虚拟ip
ifconfig ens33:1 192.168.1.90/24
ip addr #查看
添加虚拟ip
[root@server2 ~]# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf
systemctl restart httpd #重启
测试:
192.168.1.90
1.3 基于端口
[root@server1 ~]# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf
增加监听端口
vi /etc/httpd.conf
[root@server2 ~]# systemctl restart httpd
[root@server2 ~]# netstat -anpt | grep httpd
测试
192.168.1.90.8080