企业平台架构LAMP——Apache编译安装与3种虚拟主机服务搭建

Apache简介

●源于a patchy server, 著名的开源Web服务软件

●1995年时,发布apache服务程序的1.0版本

●有apache软件基金会(ASF)负责维护

●官方站点:http://httpd.apache.org/

在这里插入图片描述

◆apache 主要特点

●开放源代码、跨平台应用

●支持多种网页编程语言

●模块化设计、运行稳定、良好的安全性

软件版本

● 1.X
目前最高版本的是1.3,运行稳定
向下兼容性较好,但缺乏一些较新的功能

●2.X
目前最高版本是2.6
具有更多的功能特性
与1.X相比,配置管理风格存在较大差异

◆编译安装的优点

●具有较大的自由度,功能可定制

●可及时获得最新的软件版本

●普遍适用于大多数Linux版本,便于移植使用

◆HTTP服务主要目录和文件

● 网页目录: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地址的虚拟主机

●基于端口的虚拟主机

Apache编译安装与三种虚拟主机类型架设

◆编译安装HTTP服务:基于域名的虚拟主机

#前提要求: 本地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 "<h1>www.zz.11.com</h1>" > /opt/www/html/zz.11.com/index.html
[root@www ~]# echo "<h1>www.zz.22.com</h1>" > /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
#分别访问我们发现没有错误,成功了!

◆基于IP的虚拟主机

#打开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.268080
20.0.0.26
20.0.0.2680
#我们发现:192.168.100.26        打不开
192.168.100.268080            可以打开
20.0.0.26                       因为默认80  所以可以打开
20.0.0.2680                   可以打开

希望本章内容能够帮助小伙伴们在生产环境解决问题

猜你喜欢

转载自blog.csdn.net/weixin_48190891/article/details/108331287