●源于a patchy server, 著名的开源Web服务软件
●1995年时,发布apache服务程序的1.0版本
●有apache软件基金会(ASF)负责维护
●官方站点:http://httpd.apache.org/
●开放源代码、跨平台应用
●支持多种网页编程语言
●模块化设计、运行稳定、良好的安全性
软件版本
● 1.X
目前最高版本的是1.3,运行稳定
向下兼容性较好,但缺乏一些较新的功能
●2.X
目前最高版本是2.6
具有更多的功能特性
与1.X相比,配置管理风格存在较大差异
●具有较大的自由度,功能可定制
●可及时获得最新的软件版本
●普遍适用于大多数Linux版本,便于移植使用
● 网页目录:lusrllocal/httpd/htdocs/
●服务脚本:/usr/local/httpd/bin/apachectl
● 执行程序:lusr/local/httpd/bin/httpd
●错误日志:/usr/local/httpd/loglerror_log
●主配置文件:/usrllocal/httpd/conf/httpd.conf
●访问日志:/usr/local/httpd/loglaccess_log
■常用的全局配置参数(1)
●ServerRoot:服务目录
● Listen:监听的IP地址、端口号
●User:运行服务的用户身份
●Group:运行服务的组身份
●ServerAdmin:管理员邮箱
●ServerName:网站服务器的域名
●DocumentRoot:网页文档的根目录
●Directorylndex:默认的索引页文件
●ErrorLog:设置错误日志文件的路径
●LogLevel:记录日志的级别,默认为wa
■常用的全局配置参数(2)
●CustomLog:访问日志文件的位置
●PidFile:保存httpd进程PID号的文件
●Timeout:网络连接超时,默认为300秒
●Include:需要包含进来的其他配置文件
●AddDefaultCharset:设置站点中网页默认的字符集编码
●MaxKeepAliveRequests:每次连接最多请求文件数
●KeepAliveTimeout:保持连接状态时的超时时间
●KeepAlive:是否保持连接,可选On或Off
虚拟Web主机
◆在同一台服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的计算机
◆httpd支持的虚拟主机类型
●基于域名的虚拟主机
●基于IP地址的虚拟主机
●基于端口的虚拟主机
#前提要求: 本地yum仓库搭建, 防火墙关闭, 内核关闭, 系统IP1为20.0.0.26
#编译安装HTTP服务
[root@localhost ~]# mount /dev/cdrom /mnt
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mkdir backup
[root@localhost yum.repos.d]# mv C* backup/
[root@localhost yum.repos.d]# cp backup/CentOS-Base.repo local.repo
[root@localhost yum.repos.d]# vi local.repo
[centos]
name=centos
baseurl=file:///mnt
gpgcheck=0
enabled=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[root@localhost yum.repos.d]# yum clean all
[root@localhost yum.repos.d]# yum makecache
[root@localhost yum.repos.d]# systemctl stop firewalld
[root@localhost yum.repos.d]# vi /etc/selinux/config
SELINUX=disabled
####编译安装HTTP服务####
#安装Apache所需软件
apr-1.6.2.tar.gz
apr-util-1.6.0.tar.gz
httpd-2.4.29.tar.gz
#将上面3个包传到opt目录下,需要安装包可以去下载也可以私信我
#最小安装需要yum -y install bzip2
[root@localhost ~]# cd /opt
[root@localhost opt]# tar zxvf apr-1.6.2.tar.gz
[root@localhost opt]# tar zxvf apr-util-1.6.0.tar.gz
[root@localhost opt]# tar jxvf httpd-2.4.29.tar.bz2
[root@localhost opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
#安装环境
[root@localhost opt]# yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl
[root@localhost opt]# cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \ 指定将 httpd 服务程序安装到哪个目录下,如/usr/local/httpd
--enable-so \ 启用动态加载模块支持,使 httpd 具备进一步扩展功能的能力
--enable-rewrite \ 启用网页地址重写功能,用于网站优化及目录迁移维护
--enable-charset-lite \ 启动字符集支持,以便支持使用各种字符集编码的网
--enable-cgi 启用 CGI 脚本程序支持,便于扩展网站的应用访问能力
#等待结束,时间会超微长一点
[root@localhost httpd-2.4.29]# make && make install
#等待结束,时间会超微长一点
#优化执行路径
ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/
httpd -v ###查看下HTTP版本
###建立[service].service 配置文件添加系统给服务####
在/lib/systemd/system/目录下,建立一个以.service 结尾的单元(unit)配置文件,
用于控制由 systemd 管理或监控的 httpd 服务
[root@localhost ~]# cd /lib/systemd/system/
[root@localhost system]# vi httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart= /usr/local/bin/apachectl $OPTIONS
ExecrReload= /bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
[root@localhost system]# systemctl start httpd.service
[root@localhost system]# systemctl enable httpd.service ###开机自启http
[root@localhost system]# systemctl is-enabled httpd.service ###检查HTTP单元是否启动
#httpd.conf修改配置文件
vi /usr/local/httpd/conf/httpd.conf
ServerName www.zz.111.com:80 ###更改下
systemctl restart httpd ####重启httpd服务
#验证 :最小安装需要:yum -y install net-tools
netstat -anpt | grep 80
如果有说明开启成功
[root@localhost system]# vi /usr/local/httpd/htdocs/index.html
<html><body><h1>Hello my name is Zz !</h1></body></html>
打开你自己的电脑主页访问一下
#基于域名的虚拟主机
#在试验环境中DNS需要修改下A记录,在本案中我们采用hosts映射的方式做域名解析
#为虚拟主机准备网页文档
[root@localhost html]# mkdir -p /opt/www/html/zz.11.com
[root@localhost html]# mkdir -p /opt/www/html/zz.22.com
[root@www ~]# echo "www.zz.11.com
" > /opt/www/html/zz.11.com/index.html
[root@www ~]# echo "www.zz.22.com
" > /opt/www/html/zz.22.com/index.html
[root@localhost ~]# vi /usr/local/httpd/conf/httpd.conf
#ServerName www.zz.11.com:80 注释掉
Include conf/extra/httpd-vhosts.conf 修改出来
[root@localhost html]# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/opt/www/html/zz.11.com"
ServerName www.zz.11.com
ErrorLog "logs/www.zz.11.com.error_log"
CustomLog "logs/www.zz.11.com.access_log" common
<Directory "/opt/www/html">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/opt/www/html/zz.22.com"
ServerName www.zz.22.com
ErrorLog "logs/www.zz.22.com.error_log"
CustomLog "logs/www.zz.22.com.access_log" common
<Directory "/opt/www/html">
Require all granted
</Directory>
</VirtualHost>
[root@localhost html]# systemctl restart httpd
#验证 :这个时候重开一台虚拟机 IP地址为 20.0.0.140
#IP140下进行:
[root@localhost ~]# yum -y install lynx
[root@localhost ~]# vi /etc/hosts
20.0.0.26 www.zz.11.com
20.0.0.26 www.zz.22.com
lynx www.zz.11.com
lynx www.zz.22.com
#分别访问我们发现没有错误,成功了!
#打开VM给虚拟机20.0.0.26的主机添加一张 192.168.100.26的网卡
#主机上有2块网卡
#VM1网卡:20.0.0.26
#VM2网卡:192.168.100.26
#添加另外一块网卡VM1 配置ens36网卡
[root@localhost system]# nmcli connection
NAME UUID TYPE DEVICE
ens33 35d9d64f-7719-42e9-b846-a1aeb356fa34 ethernet ens33
有线连接 1 ee2dccf4-cc4a-34bc-9cea-37e7d528cd27 ethernet ens36 复制UUID
[root@localhost system]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36
#改动的地方
NAME=ens36
UUID=ee2dccf4-cc4a-34bc-9cea-37e7d528cd27
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.100.26
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
[root@localhost ~]# systemctl restart network
#打开本机电脑ping一下
[root@localhost ~]# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 20.0.0.26:80>
DocumentRoot "/opt/www/html/zz.11.com"
ServerName www.zz.11.com
ErrorLog "logs/www.zz.11.com.error_log"
CustomLog "logs/www.zz.11.com.access_log" common
<Directory "/opt/www/html">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.100.26:80>
DocumentRoot "/opt/www/html/zz.22.com"
ServerName www.zz.22.com
ErrorLog "logs/www.zz.22.com.error_log"
CustomLog "logs/www.zz.22.com.access_log" common
<Directory "/opt/www/html">
Require all granted
</Directory>
</VirtualHost>
[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf 把#号去掉
[root@localhost ~]# systemctl restart httpd
#验证
更改客户机hosts映射关系
20.0.0.26 www.zz.11.com
192.168.100.26 www.zz.22.com
#跟上面差不多,只需要改变端口就可以了
[root@localhost ~]# vi /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf
Listen 20.0.0.26:80
Listen 192.168.100.26:8080
[root@localhost ~]# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 20.0.0.26:80>
DocumentRoot "/opt/www/html/zz.11.com"
ServerName www.zz.11.com
ErrorLog "logs/www.zz.11.com.error_log"
CustomLog "logs/www.zz.11.com.access_log" common
<Directory "/opt/www/html">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.100.26:8080>
DocumentRoot "/opt/www/html/zz.22.com"
ServerName www.zz.22.com
ErrorLog "logs/www.zz.22.com.error_log"
CustomLog "logs/www.zz.22.com.access_log" common
<Directory "/opt/www/html">
Require all granted
</Directory>
</VirtualHost>
[root@localhost ~]# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf
[root@localhost ~]# systemctl restart httpd
#验证
打开电脑网页分别访问:
192.168.100.26
192.168.100.26:8080
20.0.0.26
20.0.0.26:80
#我们发现:192.168.100.26 打不开
192.168.100.26:8080 可以打开
20.0.0.26 因为默认80 所以可以打开
20.0.0.26:80 可以打开