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