apache服务的安装及虚拟Web主机配置

1.apache简介

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

Apachehttp server是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。

在这里插入图片描述

2.源码安装apache

rpm方式无法定制使用apache使用功能,需要使用源代码方式安装

实验环境

一台cenots7主机,IP为192.168.1.11,配置好yum源

1)上传提供软件包并解压

链接:https://pan.baidu.com/s/12GrVLVy0_FDmN2NO1kKHuQ
提取码:v4nf

在这里插入图片描述
[root@apache ~]# unzip lamp.zip
[root@apache ~]# cd lamp/
有几个与本实验无关软件包,删除即可
[root@apache lamp]# rm -rf mysql-boost-5.7.19.tar.gz php-5.6.36.tar.gz
[root@apache lamp]# ls
在这里插入图片描述
httpd-2.4.28.tar.gz 为apache主程序包,其他都为依赖包

2)安装编译工具和开发包

[root@apache ~]# yum -y install make gcc gcc-c++ openssl openssl-devel expat-devel

3)安装apache的依赖包

安装顺序请严格按照我这里来,因为有依赖包也有依赖关系

1.先是apr-1.5.2.tar.gz

[root@apache lamp]# tar zxvf apr-1.5.2.tar.gz
[root@apache lamp]# cd apr-1.5.2/
这里有个文件,必须更改参数,否则安装会报错
[root@apache apr-1.5.2]# vim configure
在29605行,可以直接在vim 使用 :29605 到此行
在这里插入图片描述
[root@apache apr-1.5.2]# ./configure --prefix=/usr/local/apr
这里解释一下:--prefix=是安装位置
[root@apache apr-1.5.2]# echo $?

0

[root@apache apr-1.5.2]# make && make install
[root@apache apr-1.5.2]# echo $?

0
2.然后安装apr-util-1.5.4.tar.gz

[root@apache apr-1.5.2]# cd /root/lamp/
[root@apache lamp]# tar -zxvf apr-util-1.5.4.tar.gz
[root@apache lamp]# cd apr-util-1.5.4/
[root@apache apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util/ --with-apr=/usr/local/apr/bin/apr-1-config

--with就是指定刚刚上面安装的软件中的一个文件,所以要严格按照安装顺序
[root@apache apr-util-1.5.4]# echo $?

0

[root@apache apr-util-1.5.4]# make && make install
[root@apache apr-util-1.5.4]# echo $?

0
3.安装apr-util-1.5.4.tar.gz

[root@apache lamp]# cd /root/lamp/
[root@apache lamp]# tar -zxvf pcre-8.41.tar.gz
[root@apache lamp]# cd pcre-8.41/
[root@apache pcre-8.41]# ./configure --prefix=/usr/local/pcre
[root@apache pcre-8.41]# make && make install
[root@apache pcre-8.41]# echo $?

0
4.安装apache主程序包httpd-2.4.28.tar.gz

[root@apache pcre-8.41]# cd /root/lamp/
[root@apache lamp]# tar -zxvf httpd-2.4.38.tar.gz
[root@apache lamp]# cd httpd-2.4.38/
[root@apache httpd-2.4.38]# ./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-ssl --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre/ --libdir=/usr/lib64
在这里插入图片描述
[root@apache httpd-2.4.38]# echo $?

0

这里解释一下
–enable-so :启动动态加载模块,也就是apache可以动态加载模块而不需要从新编译
–enable-rewrite:支持网站地址重写,也就是网页跳转现在不须深究
–enable-ssl:支持ssl加密,也就是https方式
–libdir=/usr/lib64:关联库文件

然后下面三个意思是关联刚刚安装的依赖包
–with-apr=/usr/local/apr
–with-apr-util=/usr/local/apr-util
–with-pcre=/usr/local/pcre

[root@apache httpd-2.4.38]# make && make install
[root@apache httpd-2.4.38]# echo $?

0

2.配置文件及systemctl管理apache服务

1)配置文件解释

[root@apache httpd-2.4.38]# cd /usr/local/apache/
[root@apache apache]# ls

bin  build  cgi-bin  conf  error  htdocs  icons  include  logs  man  manual  modules

bin:启动程序
build:一些构建信息
cgi-bin:开发人员使用
conf:配置文件位置
eror:错误信息
htdocs:网站根目录
include:文件包含目录,主配文件可以调用这里的一些文件
logs:日志文件存放位置
man:帮助文档
modules:模块

其余没写的作用不大,或现在用不到
[root@apache ~]# vim /usr/local/apache/conf/httpd.conf
除了ServerName 改一下,其他均不用改,这里只是介绍

Listen 80   #监听端口
ServerRoot "/usr/local/apache" #配置文件根目录,就是配置文件存放目录
ServerAdmin [email protected]  #管理员邮箱,这里不重要随意
ServerName apache:80  #这行原本是注释的,删除#号,最好写自己主机名,也可以随便写,不影响
DocumentRoot "/usr/local/apache/htdocs" #网站的根目录
DirectoryIndex index.html #默认首页打开的html文件名字,就是上面根目录中写的
ErrorLog "logs/error_log" #错误日志位置,这里是相对路径

然后下面这里就是那个首页文件,我们可以进行更改
[root@apache ~]# cd /usr/local/apache/htdocs/
[root@apache htdocs]# echo "<h1>Index</h1>" > index.html

2)复制启动脚本并让systemctl可以管理apache

[root@apache ~]# cp /usr/local/apache/bin/apachectl /etc/init.d/
[root@apache ~]# chmod +x /etc/init.d/apachectl

下面是写一个apahce系统服务脚本,之后就可以使用systemctl管理apache
[root@apache ~]# touch /usr/lib/systemd/system/apache.service
[root@apache ~]# vim /usr/lib/systemd/system/apache.service
下面内容不必深入了解,跟着写就行

[Unit]
Description=apache  
After=network.target  
[Service]
Type=forking
ExecStart=/etc/init.d/apachectl start
ExecReload=/etc/init.d/apachectl restart
ExecStop=/etc/init.d/apachectl stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target

[root@apache ~]# chmod 754 /usr/lib/systemd/system/apache.service
[root@apache ~]# ll -l /usr/lib/systemd/system/apache.service
-rwxr-xr-- 1 root root 238 2月 23 03:00 /usr/lib/systemd/system/apache.service
[root@apache ~]# systemctl start apache
[root@apache apache]# netstat -anpt | grep 80

tcp6       0      0 :::80                   :::*                    LISTEN      108963/httpd   

通过IP访问一下,应该是我们自己改的页面
如果不能访问,多半是没有关闭防火墙
[root@apache apache]# systemctl stop firewalld
在这里插入图片描述

3.配置虚拟Web主机

搭建虚拟web的目的:
正常情况下,一个apache服务器只能搭建一个web站点,造成了资源的浪费 如果想在一个apache服务器中搭建多个web站点,可以使用虚拟主机

首先先打开apache服务器的虚拟主机功能
[root@apache ~]# vim /usr/local/apache/conf/httpd.conf
在这里插入图片描述
[root@apache ~]# systemctl restart apache

1)基于IP地址的虚拟Web主机:

不同域名,不同IP,相同端口

1添加一个临时的IP(重启网卡就会没),作为测试用

[root@apache ~]# ifconfig ens33:0 192.168.1.125
[root@apache ~]# ifconfig
在这里插入图片描述

2.创建虚拟主机的网站目录

[root@apache ~]# mkdir /usr/local/apache/htdocs/taobao
[root@apache ~]# mkdir /usr/local/apache/htdocs/tianmao
[root@apache ~]# echo "<h1>this is taobao</h1>" > /usr/local/apache/htdocs/taobao/index.html
[root@apache ~]# echo "<h1>this is tianmao</h1>" > /usr/local/apache/htdocs/tianmao/index.html
在这里插入图片描述

3.配置虚拟主机文件

[root@apache ~]# vim /usr/local/apache/conf/extra/httpd-vhosts.conf
滑倒下面有两个例子,修改为我这里,或者把原来的删了复制我这里的

<VirtualHost 192.168.1.11:80> #写访问时对应的IP,这是我本机IP
    ServerAdmin root@ajbn #这里随意
    DocumentRoot "/usr/local/apache/htdocs/taobao/" #网站根目录,上面创建的
    ServerName www.taobao.com  #这里名字写这个就行,也可以写别的,随意
    ErrorLog "logs/www.taobao.com-error_log" #错误日志
    CustomLog "logs/www.taobao.com-access_log" common #日志
</VirtualHost>

<VirtualHost 192.168.1.125:80> #这里应该写另一个IP
    ServerAdmin root@ajbn
    DocumentRoot "/usr/local/apache/htdocs/tianmao/" #网站根目录不同
    ServerName www.tianmao.com
    ErrorLog "logs/www.tianmao.com-error_log"
    CustomLog "logs/www.tianmao.com-access_log" common
</VirtualHost>

如果查看不方便,下面这是图片
在这里插入图片描述
[root@apache ~]# systemctl restart apache

4.客户端访问测试

http://192.168.1.11/
在这里插入图片描述
另一个页面,http://192.168.1.125/
在这里插入图片描述
当然实际情况肯定是IP访问对应的域名,这里不是本章要点,不去演示了

2)基于域名(主机头)的虚拟Web主机:

相同IP,相同端口号,不同域名

1.还是首先更改配置文件

[root@apache ~]# vim /usr/local/apache/conf/extra/httpd-vhosts.conf
只需更改2个VirtualHost这行,改为对应的域名,其他不用动

VirtualHost这里的域名不可以随意写,一会要和客户端DNS那里一样,这里这样改就行

<VirtualHost www.taobao.com:80> #更改
    ServerAdmin root@ajbn
    DocumentRoot "/usr/local/apache/htdocs/taobao/"
    ServerName www.taobao.com
    ErrorLog "logs/www.taobao.com-error_log"
    CustomLog "logs/www.taobao.com-access_log" common
</VirtualHost>

<VirtualHost www.tianmao.com:80> #更改
    ServerAdmin root@ajbn
    DocumentRoot "/usr/local/apache/htdocs/tianmao/"
    ServerName www.tianmao.com
    ErrorLog "logs/www.tianmao.com-error_log"
    CustomLog "logs/www.tianmao.com-access_log" common
</VirtualHost>
2.更改一下本地hosts文件

因为本例,没有配置dns服务器,所以需要手动配置解析,以便客户端过来访问
[root@apache ~]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.11 www.taobao.com
192.168.1.11 www.tianmao.com

[root@apache ~]# systemctl restart apache
修改完hosts文件也一定要重启apache服务

2.客户端配置hosts文件

进入到C:\Windows\System32\drivers\etc,打开hosts文件,进行如下更改
在这里插入图片描述

3.客户端访问测试

注意我这个www.taobao.com和互联网上的域名冲突了,有的浏览器会出问题
建议使用系统的IE浏览器访问测试,不会有问题,如还有问题,多换几个浏览器

http://www.taobao.com/
在这里插入图片描述
http://www.tianmao.com/
在这里插入图片描述
这里解释一下原理:为什么可以通过域名来区分web站点
因为通过浏览器访问域名的时候,这个域名就是一个主机头,请求到web服务器时, 客户端浏览器会带着这个主机头,去请求,这个主机头对应,虚拟主机配置文件 </VirtualHost>那里写的那个域名

3)基于端口号的虚拟主机:

相同域名,相同IP,不同端口号

1.更改配置文件

[root@apache ~]# cd /usr/local/apache/conf/
[root@apache conf]# vim httpd.conf
在原本的监听端口下面,添加一个8080端口
在这里插入图片描述
[root@apache conf]# vim extra/httpd-vhosts.conf
还是两个<VirtualHost>字段需要更改,其他不用动

<VirtualHost *:8080>  #更改为*:8080
    ServerAdmin root@ajbn
    DocumentRoot "/usr/local/apache/htdocs/taobao/"
    ServerName www.taobao.com
    ErrorLog "logs/www.taobao.com-error_log"
    CustomLog "logs/www.taobao.com-access_log" common
</VirtualHost>

<VirtualHost *:80> #更为*:80
    ServerAdmin root@ajbn
    DocumentRoot "/usr/local/apache/htdocs/tianmao/"
    ServerName www.tianmao.com
    ErrorLog "logs/www.tianmao.com-error_log"
    CustomLog "logs/www.tianmao.com-access_log" common
</VirtualHost>

[root@apache conf]# systemctl restart apache

2.客户端验证

访问www.tiaobao.com和www.tiaomao.com这两个网站都可以,这里访问后面这个

首先不加端口,默认时80端口
http://www.tianmao.com/
在这里插入图片描述
加端口8080,可以看到是另一个页面
http://www.tianmao.com:8080/
在这里插入图片描述
实验完毕 !

发布了54 篇原创文章 · 获赞 57 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_45308292/article/details/104446120