欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

httpd虚拟主机

程序员文章站 2022-07-03 14:13:11
...

httpd2.2的安装和简介

安装httpd2.4

过程都挺正常的
可以去官网找安装包
http://httpd.apache.org/download.cgi
安装httpd2.4的时候还需要注意一点,需要在官网多下载两个tar包,apr与apr-util这个是httpd运行环境相关的包,我的也是在官网找的
https://apr.apache.org/

实验环境
系统 CentOS7
IP 192.168.253.128
httpd 版本 2.4
apr版本 1.6
apr-util版本1.6

systemctl  stop firewalld 
setenforce  0
cd /usr/local/src/
yum install gcc  gcc-c++ gcc-devel pcre pcre-devel  expat expat-devel -y
useradd -M -s /sbin/nologin apache
wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.34.tar.gz
wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.6.3.tar.gz
wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
tar -xf apr-1.6.3.tar.gz 
tar -xf apr-util-1.6.1.tar.gz 
tar -xf httpd-2.4.34.tar.gz

这时候需要注意一下 需要吧解压后的apr与apr-util放到httpd源码包的srclib目录下,并分别命名为apr与apr-util,并且./configure 要加上参数–with-included-apr,否则会报错,解决办法是通过看官方文档


mv /usr/local/src/apr-1.6.3 /usr/local/src/httpd-2.4.34/srclib/apr
mv /usr/local/src/apr-util-1.6.1 /usr/local/src/httpd-2.4.34/srclib/apr-util
cd httpd-2.4.34
./configure --prefix=/usr/local/httpd-2.4 --enable-mpms-shared=all --with-included-apr --with-pcre
make && make install 
ln -sv /usr/local/httpd-2.4 /usr/local/httpd
PATH="/usr/local/httpd/bin/:$PATH"
echo 'PATH="/usr/local/httpd/bin/:$PATH"' > /etc/profile.d/httpd.sh

虚拟主机

部署多个站点,每个站点有不同的域名和站点目录,或者不同端口,不同ip就需要虚拟主机功能,即一个http服务配置多个站点

有多种方式设置虚拟主机这里都稍微讲解一下

  • 基于域名(最重要)
  • 基于端口 一般生产环境中是内部网络
  • 基于ip

基于域名

创建两个域名
www.ice.com 站点目录为/var/www/html/www.ice.com
www.cube.com 站点目录为/var/www/html/www.cube.com

先创建两个站点目录

mkdir -pv /var/www/html/{www.ice.com,www.cube.com}
echo "www.ice.com"  > /var/www/html/www.ice.com/index.html
echo "www.cube.com" > /var/www/html/www.cube.com/index.html

修改虚拟主机的配置文件/usr/local/httpd/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin 835311324@qq.com
    DocumentRoot "/var/www/html/www.ice.com"
    ServerName www.ice.com
    ServerAlias ice.com
    ErrorLog "logs/www.ice.com-error_log"
    CustomLog "logs/www.ice.com-access_log" common
</VirtualHost>


<VirtualHost *:80>
    ServerAdmin 835311324@qq.com
    DocumentRoot "/var/www/html/www.cube.com"
    ServerName www.cube.com
    ServerAlias cube.com
    ErrorLog "logs/www.cube.com-error_log"
    CustomLog "logs/www.cube.com-access_log" common
</VirtualHost *:80>

需要修改一下主配置文件/usr/local/httpd/conf/httpd.conf


Include conf/extra/httpd-vhosts.conf ##吧虚拟主机的配置文件包含进来
Include conf/extra/httpd-vhosts.conf
##下面两项是设置站点目录权限,允许被访问不然会报错403权限不许可
<Directory "/var/www/html/www.ice.com">
    Options None
    AllowOverride none
    Require all granted
</Directory>
<Directory "/var/www/html/www.cube.com">
    Options None
    AllowOverride none
    Require all granted
</Directory>

测试一下,出现Syntax OK 即可

apachectl  -t

域名没有DNS解析,需要自己修改一下/etc/hosts文件
添加下面一条记录即可

192.168.253.128  www.ice.com www.cube.com 

启动httpd

httpd

测试一下
httpd虚拟主机
这里可以看到已经访问到我们两个站点目录了 所以基于域名做的虚拟主机成功了。

基于端口

和基于域名很类似 就在上个实验的基础上改吧。
用2个端口 1080 和2080 端口
先创建相关的站点目录

mkdir -pv /var/www/html/{port1080,port2080}
echo "1080" >/var/www/html/port1080/index.html
echo "2080" > /var/www/html/port2080/index.html

修改虚拟主机的配置文件/usr/local/httpd/conf/extra/httpd-vhosts.conf
添加下面的部分

<VirtualHost *:1080>
    ServerAdmin aaa@qq.com 
    DocumentRoot "/var/www/html/port1080"
    ErrorLog "logs/port1080-error_log"
    CustomLog "logs/port1080-access_log" common
</VirtualHost>


<VirtualHost *:2080>
    ServerAdmin aaa@qq.com 
    DocumentRoot "/var/www/html/port2080"
    ErrorLog "logs/port2080-error_log"
    CustomLog "logs/port2080-access_log" common
</VirtualHost>

修改主配置文件
添加下面行

Listen 1080
Listen 2080
<Directory "/var/www/html/port1080">
    Options None
    AllowOverride none
    Require all granted
</Directory>
<Directory "/var/www/html/port2080">
    Options None
    AllowOverride none
    Require all granted
</Directory>

检查一下配置文件然后重启httpd服务

httpd -t
httpd -k restart

httpd虚拟主机

这里可以看出基于端口的虚拟主机 完成了。

基于ip

基于ip很少用,但是也说一下吧 步骤类似
创建两个虚拟ip
ip addr add 192.168.253.130/24 dev ens33
ip addr add 192.168.253.131/24 dev ens33
httpd虚拟主机

创建站点目录和起始页

mkdir -pv /var/www/html/{ip131,ip130}
echo "ip131">/var/www/html/ip131/index.html
[root@localhost httpd]# echo "ip130">/var/www/html/ip130/index.html

修改虚拟主机的配置文件/usr/local/httpd/conf/extra/httpd-vhosts.conf
添加下面的部分

<VirtualHost 192.168.253.131:80>
    ServerAdmin aaa@qq.com 
    DocumentRoot "/var/www/html/ip131"
    ErrorLog "logs/ip131-error_log"
    CustomLog "logs/ip131-access_log" common
</VirtualHost>

<VirtualHost 192.168.253.130:80>
    ServerAdmin aaa@qq.com 
    DocumentRoot "/var/www/html/ip130"
    ErrorLog "logs/ip130-error_log"
    CustomLog "logs/ip130-access_log" common
</VirtualHost>

主配置文件/usr/local/httpd/conf/httpd.conf添加下面几行


<Directory "/var/www/html/ip130">
    Options None
    AllowOverride none
    Require all granted
</Directory>
<Directory "/var/www/html/ip131">
    Options None
    AllowOverride none
    Require all granted
</Directory>

检查一下配置文件,重启服务

httpd  -t
httpd -k  restart

httpd虚拟主机
可以看出成功了