如何在Ubuntu13.10上设置Apache虚拟主机

来自菜鸟教程
跳转至:导航、​搜索

介绍

虚拟主机

虚拟主机是一种从单个 IP 地址/服务器托管多个域的方法。 例如,这对于希望从单个 Droplet 托管多个网站的人来说可能会有所帮助。 网站的访问者将根据他们正在访问的域显示正确的信息,而如果没有正确设置虚拟主机,所有域都将显示相同的信息。 虚拟主机的数量没有限制(例如 域)可以添加到服务器,给定足够的计算和存储容量。

先决条件

为了运行本教程中的命令,用户必须具有 root 权限。 如果您使用您的 root 用户帐户登录到您的 droplet,您不必担心这一点。 如果您不这样做,您可以在文章 Initial Server Setup 中查看如何进行设置。

此外,您需要在云服务器上安装并运行 Apache。 如果您还没有,您可以使用以下命令安装它:

sudo apt-get install apache2

如果您要托管依赖 PHP 或 MySQL 的网站(例如 Wordpress),设置 LAMP(Linux、Apache、MySQL、PHP)堆栈的最简单方法是运行以下命令:

sudo tasksel 安装灯服务器

红色是什么意思

用户需要输入或自定义的行将在本教程中以红色显示!

其余的都是可复制粘贴的。

第一步——创建一个新的文件夹/目录

第一步是创建一个目录,我们将在其中存储新域的文件(和文件夹)。 通常,这个新目录的名称应该与您尝试设置的域的名称相对应,但这不是规则。 只要您记住它的名称,您就可以随意命名新目录,因为稍后我们将需要虚拟主机配置文件的目录路径。

sudo mkdir -p /var/www/example.com

-p 标志确保该目录的所有父目录都存在,如果不存在,则生成它们。

example.com 是占位符地址 - 将其替换为您的正确域名。

第二步——授予权限

首先,我们需要将目录的所有权授予运行 Apache 的用户。

sudo chown -R www-data:www-data /var/www/example.com

接下来,我们需要为目录设置正确的权限,以便每个人都可以访问文件。

sudo chmod -R 755 /var/www

这就是这一步。

第三步——创建页面

我们现在将创建一个示例 index.html 文件,以便我们可以测试我们的虚拟主机是否正常工作。

对于这一步,您需要确保已安装 nano 文本编辑器。

sudo apt-get install nano

接下来,创建 index.html 文件。

sudo nano /var/www/example.com/index.html

您可以将以下代码复制并粘贴到新创建的 index.html 文件中。

   www. 例子.com     成功:你已经设置了一个虚拟主机  

使用 Ctrl+O 保存并退出,然后 Enter,然后 Ctrl+X。

第四步——创建一个新的虚拟主机配置文件

现在我们将设置虚拟主机配置文件。 幸运的是,Ubuntu 附带了这个配置文件的模板。 我们只需使用以下命令复制该文件以供我们使用。

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com .conf

请注意,从 Ubuntu 13.10 开始需要将 .conf 添加到末尾,这与以前的版本不同。

第五步——修改配置文件

接下来,我们需要修改虚拟主机配置文件以匹配我们的域设置。 打开新的配置文件。

sudo nano /etc/apache2/sites-available/example.com .conf

当您打开此文件时,您应该会收到与此类似的消息。

< VirtualHost *:80> # ServerName 指令设置服务器用来标识自己的请求方案、主机名和端口。 这在创建 # 重定向 URL 时使用。 在虚拟主机的上下文中,ServerName # 指定主机名必须出现在请求的 Host: 标头中以匹配此虚拟主机。 对于默认虚拟主机(此文件),此 # 值不是决定性的,因为它无论如何都用作最后的主机。 # 但是,您必须为任何进一步的虚拟主机显式设置它。 #ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

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

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf

虚拟主机>

修改此文件以匹配我们的域名配置很容易。 首先,删除 ServerName 前面的 # 符号,并在其前面添加您的域。 这样做应该使线条看起来完全像这样。

服务器名称example.com

如果您希望您的站点可以从多个名称访问,例如名称中包含 www,您需要在 ServerName 行之后添加一个 ServerAlias 行。

服务器别名 www. 例子.com

完成上述步骤后,您还需要修改 DocumentRoot 行以匹配您为域名创建的目录。

DocumentRoot /var/www/example.com

正确执行所有这些步骤后,您的文件应与此类似。

 ServerAdmin站长 @例子 .com
服务器名称example.com
服务器别名 www. 例子.com
DocumentRoot /var/www/example.com

这些是您需要对此文件进行的所有更改。 现在保存并退出。

要激活主机,请使用此命令。

sudo a2ensite example.com

现在重新启动 Apache 以使您的更改生效。

sudo 服务 apache2 重启

提交人: [[“%3Ca|http]] ://asad.pw [[“%3C/a|”>阿萨德·达玛尼]]