前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Debian 8上设置Apache虚拟主机

如何在Debian 8上设置Apache虚拟主机

原创
作者头像
独钓寒江雪_Ly
修改2018-07-24 14:52:12
1.5K0
修改2018-07-24 14:52:12
举报
文章被收录于专栏:云计算教程系列

介绍

Apache Web服务器是在互联网上提供Web内容的最流行方式。它占互联网上所有活跃网站的一半以上,并且非常强大和灵活。

Apache将其功能和组件分解为可以单独定制的单个单元。描述单个站点或域的基本单元称为虚拟主机

使用虚拟主机,您可以使用一个服务器通过匹配机制从单个接口或IP托管多个域或站点。您配置域的请求以将访问者定向到包含该站点信息的特定目录。换句话说,您可以在一台服务器上托管多个网站。只要您的服务器能够支撑的起来。

在本教程中,您将在Debian 8服务器上设置两个Apache虚拟主机,根据访问者访问的域向访问者提供不同的内容。

准备

要完成本教程,您需要:

1、一台Debian 8的服务器

2、一个可以使用sudo命令的非root账户

3、服务器安装了Apache

在本教程中,我们会为创建虚拟主机example.comtest.com,在实际的操作过程中,请将两个示例的域名,替换成您自己的域名,并且域名要解析到您的服务器。

如果您没有可供使用的域,也可以使用example.comtest.com,但是要按照本教程的第五个步骤,配置本地主机文件,将这两个域名映射到服务器的IP地址。

第一步,创建目录结构

我们要采取的第一步是创建一个目录,该目录将保存我们将为访问者提供的站点数据。

这是目录(存储站点数据)都是要存放在/var/www的目录下面。我们将会为,每个虚拟主机创建一个目录,然后我们再对这些目录进行配置。

在每个目录中,我们将创建一个名为的文件夹public_html,用于保存我们要提供的网页。这使我们在将来部署更复杂的Web应用程序方面具有更大的灵活性; 该public_html文件夹将保存我们要提供的Web内容,父文件夹可以保存脚本或其他程序代码。

使用以下命令创建目录:

代码语言:txt
复制
$ sudo mkdir -p /var/www/example.com/public_html
$ sudo mkdir -p /var/www/test.com/public_html

由于我们使用sudo创建了目录,因此它们归root用户所有。如果我们希望我们设置的普通用户能够修改我们网站目录中的文件,我们需要设置权限,如下所示:

代码语言:txt
复制
$ sudo chown -R $USER:$USER /var/www/example.com/public_html
$ sudo chown -R $USER:$USER /var/www/test.com/public_html

$USER应该是您当前登录的账户。通过这样做的话,您当前登录的账户,也可以在public_html中存储文件了。

我们还应该稍微修改我们的权限,确保能够对一般的Web目录及其包含的所有文件和文件夹的读写,以便可以正确地提供页面。执行此命令可更改/var/www文件夹及其子项的权限:

代码语言:txt
复制
$ sudo chmod -R 755 /var/www

您的Web服务器现在应该具有提供内容所需的权限,并且您的用户应该能够在必要的文件夹中创建内容。现在让我们为每个站点创建一个HTML文件。

第二步,为每个虚拟主机创建首页

让我们为每个网站创建一个简单的index.html页面。这有助于我们确保稍后正确配置虚拟主机。

让我们从example.com的首页开始。使用nano或者其他您喜欢的编辑器辑index.html文件:

代码语言:txt
复制
$ nano /var/www/example.com/public_html/index.html

将以下内容粘贴到/var/www/example.com/public_html/index.html里面

代码语言:txt
复制
<html>
  <head>
    <title>Welcome to Example.com!</title>
  </head>
  <body>
    <h1>Success! The example.com virtual host is working!</h1>
  </body>
</html>

完成后保存并关闭文件。

现在将此文件复制到test.com站点的目录下:

代码语言:txt
复制
$ cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

然后编辑器复制过去的index.html文件:

代码语言:txt
复制
$ nano /var/www/test.com/public_html/index.html

/var/www/test.com/public_html/index.htmlExample.com替换成Test.com

代码语言:txt
复制
<html>
  <head>
    <title>Welcome to Test.com!</title>
  </head>
  <body> <h1>Success! The test.com virtual host is working!</h1>
  </body>
</html>

保存并关闭此文件。您现在拥有测试虚拟主机所需的页面。接下来,让我们配置虚拟主机。

第三步,创建新的虚拟主机文件

虚拟主机文件确定虚拟主机的实际配置,并决定了Apache Web服务器如何响应各种域请求。

Apache附带一个名为的默认虚拟主机文件000-default.conf,您可以把它当做模板。复制并修改文件名:

代码语言:txt
复制
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

注意:Debian 8中的默认Apache配置要求每个虚拟主机文件都以.conf结尾。 打开并编辑新文件:

代码语言:txt
复制
$ sudo nano /etc/apache2/sites-available/example.com.conf

您能在/etc/apache2/sites-available/example.com.conf中看到跟以下相似的内容,还附带了一些其他注释:

代码语言:txt
复制
<VirtualHost *:80>

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

此虚拟主机匹配在80端口(默认HTTP端口)上发出的任何请求。让我们对此配置进行一些更改,并添加一些新指令。

首先,在ServerAdmin添加站点管理员的邮件,这样管理员接收到邮件。

代码语言:txt
复制
ServerAdmin admin@example.com

接下来,我们需要添加两个新指令。在ServerName后面填上您的域名,,第二个名为ServerAlias,定义了应该匹配的其他名称,就好像它们是基本名称一样。这是匹配您定义额外的主机非常有用,这样example.comwww.example.com都能访问到服务器。

将这两个指令添加到/etc/apache2/sites-available/example.com.conf文件中,如下所示:

代码语言:txt
复制
<VirtualHost *:80>

        ServerAdmin webmaster@localhost
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www/html
...

接下来就是找到DocumentRoot这一行,把默认路径修改为我们刚刚创建的目录,如下所示:

代码语言:txt
复制
DocumentRoot /var/www/example.com/public_html

完成这些更改后,您的/etc/apache2/sites-available/example.com.conf文件内容应如下所示:

代码语言:txt
复制
<VirtualHost *:80>
        ServerAdmin admin@example.com
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www/example.com/public_html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

保存并关闭文件。

同样的,我们就配置test.com.conf

代码语言:txt
复制
$ sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

打开并编辑test.com.conf文件:

代码语言:txt
复制
$ sudo nano /etc/apache2/sites-available/test.com.conf

修改完成后,您的/etc/apache2/sites-available/test.com.conf文件的内容将如下所示:

/etc/apache2/sites-available/test.com.conf

代码语言:txt
复制
<VirtualHost *:80>
    ServerAdmin admin@test.com
    ServerName test.com
    ServerAlias www.test.com
    DocumentRoot /var/www/test.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

保存并关闭文件。

现在我们已经创建并配置了虚拟主机文件,我们可以启用它们。

第四步,启用新的虚拟主机文件

您已经创建了文件夹和虚拟主机配置文件,但是不激活它们,Apache是不会使用它们。您可以使用该a2ensite工具启用每个网站。

激活第一个站点:

代码语言:txt
复制
$ sudo a2ensite example.com.conf

如果文件中没有语法错误或拼写错误,您将看到以下输出:

代码语言:txt
复制
Enabling site example.com.
To activate the new configuration, you need to run:
  service apache2 reload

为了使更改生效,您必须重新加载Apache。但在此之前,请先启用其他站点:

代码语言:txt
复制
$ sudo a2ensite test.com.conf

您将看到一条类似的消息,表明该网站已启用:

代码语言:txt
复制
Enabling site test.com.
To activate the new configuration, you need to run:
  service apache2 reload

接下来,使用以下a2dissite命令禁用默认000-default.conf站点:

代码语言:txt
复制
$ sudo a2dissite 000-default.conf

现在,重启Apache:

代码语言:txt
复制
$ sudo systemctl restart apache2

现在已配置站点。我们来测试一下吧。如果您使用配置为指向服务器IP地址的真实域名,则可以跳过第5个步骤。但是,如果您没有域名,或者您只是进行测试,请继续看第5个步骤。

第五步,设置本地主机文件(可选)

如果您没有域名,或者您只是进行测试,我们可以修改本地计算机的hosts文件。

这将拦截您配置的域的任何请求并将它们指向您的VPS服务器,就像DNS系统在您使用注册域名是所做的那样。这只能在您的计算机上运行,并且仅用于测试目的。

确保在本地计算机上执行这些步骤,而不是在VPS服务器上执行这些步骤。您还需要知道本地计算机的管理密码或成为管理组的成员。

如果您使用的是Mac或Linux计算机,请输入以下命令编辑具有管理权限的本地文件:

代码语言:txt
复制
$ sudo nano /etc/hosts

如果您在Windows上,请打开具有管理权限的命令提示符并输入:

代码语言:txt
复制
c:\>  notepad %windir%\system32\drivers\etc\hosts

打开/etc/hosts文件后,输入以下内容,就可以将服务器的公共IP地址映射到每个域名,如以下示例所示:

代码语言:txt
复制
127.0.0.1   localhost
...

111.111.111.111 example.com
111.111.111.111 test.com

这样子就可以在您有用本地计算机访问 example.com 和test.com两个域名,都将被解析111.111.111.111

保存并关闭文件。现在您可以测试您的设置。

第六步,测试结果

现在您已配置了虚拟主机,您可以通过转到在Web浏览器中配置的域轻松测试您的设置。访问第一个网站, http://example.com您将看到如下所示的页面:

http://example.com
http://example.com

同样,如果您可以访问第二个主机http://test.com,您将看到为第二个站点创建的文件:

http://test.com
http://test.com

如果这两个站点都运行良好,则您已在同一服务器上成功配置了两个虚拟主机。

注意:请不要随意修改hosts文件,否则容易出现问题,在完成本教程后,您有跟着第5个步骤修改了hosts文件,请将添加的内容删除!

结论

现在您的这台服务器处理两个独立的域名。如果您需要在Windows上搭建Apache环境,可以参考腾讯云实验基于 Windows 搭建 AMP (Apache/PHP/MySQL) 环境的相关课程。


参考文献:《How To Set Up Apache Virtual Hosts on Debian 8》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 第一步,创建目录结构
  • 第二步,为每个虚拟主机创建首页
  • 第三步,创建新的虚拟主机文件
  • 第四步,启用新的虚拟主机文件
  • 第五步,设置本地主机文件(可选)
  • 第六步,测试结果
  • 结论
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档