【Apache】让我们试试使用VirtualHost

首先

VirtualHost是什么?

Apache虚拟主机说明书:虚拟主机这个术语指的是在一台机器上处理两个或更多网站(例如company1.com和company2.com)的运行方法。

Alias和什么不同?

最初我以为这与设置多个别名很相似,
但实际上,别名是将同一个网站的不同页面放置在不同目录下,
而虚拟主机是在同一台服务器上处理不同的网站。

虚拟主机的种类

    • IP ベース:各ウェブサイトに違う IP アドレスがあるバーチャルホスト

 

    名前ベース:それぞれの IP アドレスに 複数の名前があるバーチャルホスト

本次我们将介绍基于名称的虚拟主机。

前提是必须的

在下面的文章中,我们将基于构建的环境假设。

    • Windows10にVagrantをを入れてCentOS7をインストールしよう(1、2、3、4、5、6)

 

    ローカルでLAMP環境を構築しよう(0、1、4)

用工具

    Tera Term

操作步骤

1. 【服务器端】准备内容
2. 【本地端】更改设置
3. 【服务器端】设置虚拟主机
4. 【本地端】进行操作确认

让我们试一试

1. 【服务器端】准备内容

请按照以下网站结构,为CentOS 7准备用于显示的内容。就像参考网站一样。

var/www/html
         ├ index.html …➀
         ├ site_a
         │  └ index.html…➁
         └ site_b
            └ index.html…➂

将上述的1至3个文件按照下面的方式进行描述。

<meta charset="UTF-8">
<title>テスト</title>
<body>
<h1>This is other SITE!</h1>
</body>
<meta charset="UTF-8">
<title>テスト</title>
<body>
<h1>This is SITE A!</h1>
</body>
<meta charset="UTF-8">
<title>テスト</title>
<body>
<h1>This is SITE B!</h1>
</body>

2. 【当地方面】进行设定更改。

C:\Windows\System32\drivers\etc\hosts的设置将如下更改。
请将IP地址192.168.33.1根据各自环境做相应调整。
因为我在centos7也有/etc/hosts,所以我不小心修了那边的然后就感到困惑了。太愚蠢了!

      192.168.33.1     a.test
      192.168.33.1     b.test
      192.168.33.1     hoge.test

现在,通过访问http://192.168.33.1和http://a.test,您将获得相同的结果。
当然,http://b.test和http://hoge.test也是一样的。
目前无论访问哪个网址,都会显示第➋个文件。
3. 在服务器端的虚拟主机设置中,
http://a.test、http://b.test和http://hoge.test的显示结果将会有所变化。

3. 【服务器端】虚拟主机的设置

在CentOS7上创建/etc/httpd/conf.d/vhost.conf文件,并按照以下方式进行配置。
路径必须是/etc/httpd/conf.d/,但文件名可以是任何带有.conf扩展名的文件。

<VirtualHost *:80>
  ServerName any
  DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *:80>
  ServerName a.test
  DocumentRoot /var/www/html/site_a
</VirtualHost>
<VirtualHost *:80>
  ServerName b.test
  DocumentRoot /var/www/html/site_b
</VirtualHost>

用以下指令来检查vhost.conf文件的语法是否有问题。
如果显示”Syntax OK”,就表示没有问题。

apachectl configtest

使用以下命令,重新启动httpd。

systemctl restart httpd

4. [本地]进行操作确认

请在本地浏览器中分别打开以下网址:http://a.test、http://b.test 和 http://hoge.test。如果在 http://a.test 中显示第二个文件,在 http://b.test 中显示第三个文件,在 http://hoge.test 中显示第一个文件,则表示成功。

补充:3. 【服务器端】有关虚拟主机设置的信息

3. 【服务器端】在虚拟主机的设置中,我们创建了一个名为/etc/httpd/conf.d/vhost.conf的文件,但是也有一种方法是不创建文件,而是直接编辑/etc/httpd/conf/httpd.conf文件,如下所示。请点击这个网站以获取更详细的信息。

(略)...

# Further relax access to the default document root:
<Directory "/var/www/html">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>

# 適当なサーバ名を設定
serverName testserver

<VirtualHost *:80>
  ServerName any
  DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *:80>
  ServerName a.test
  DocumentRoot /var/www/html/site_a
</VirtualHost>
<VirtualHost *:80>
  ServerName b.test
  DocumentRoot /var/www/html/site_b
</VirtualHost>

(略)...

在日常用语中,这两个表达方式有什么区别呢?
而且,如果没有下面的那个也没有问题。

# 適当なサーバ名を設定
serverName testserver

请提供参考网站

Apache虚拟主机说明书
什么是Apache的VirtualHost
在Apache2.4中设置虚拟主机(超级初级)
在Vagrant中设置VirtualHost

相关页面

让我们在Windows10上安装Vagrant,然后安装CentOS7。

1. 从安装Vagrant到设置Vagrantfile。
2. 操作虚拟机。
3. 使用密钥登录WinSCP、Tera Term。
4. 使用root用户密码登录WinSCP、Tera Term。
5. 安装zip/unzip工具。
6. 在Vagrant中分发虚拟环境。

在本地搭建LAMP环境。

0. 预先准备
1. 安装Apache
4. 停止防火墙等

阿帕奇

让我们改变 DocumentRoot
让我们尝试使用 Alias
让我们尝试使用 VirtualHost

推荐的参考书

了解Apache的实际建设/运营/管理(Software Design plus)

闲聊停止

我最近的烦恼是工程师职业病——肩膀酸痛…
我从朋友那里了解到了肌肉粘连贴,并且我现在非常喜欢使用它,效果非常不错!
如果有专用贴片也会更方便,强烈推荐给大家!

广告
将在 10 秒后关闭
bannerAds