httpd虚拟主机

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

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



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
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

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

基于端口

和基于域名很类似 就在上个实验的基础上改吧。
用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
添加下面的部分


    ServerAdmin [email protected] 
    DocumentRoot "/var/www/html/port1080"
    ErrorLog "logs/port1080-error_log"
    CustomLog "logs/port1080-access_log" common




    ServerAdmin [email protected] 
    DocumentRoot "/var/www/html/port2080"
    ErrorLog "logs/port2080-error_log"
    CustomLog "logs/port2080-access_log" common

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

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

这里写图片描述

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

基于ip

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

创建站点目录和起始页

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
添加下面的部分


    ServerAdmin [email protected] 
    DocumentRoot "/var/www/html/ip131"
    ErrorLog "logs/ip131-error_log"
    CustomLog "logs/ip131-access_log" common



    ServerAdmin [email protected] 
    DocumentRoot "/var/www/html/ip130"
    ErrorLog "logs/ip130-error_log"
    CustomLog "logs/ip130-access_log" common

主配置文件/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)