如何在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 重启