Apache虚拟主机,我们如何在Ubuntu 20.04中配置它们

关于虚拟主机Apache

在下一篇文章中,我们将看一看Apache虚拟主机。 首先,有必要解释一下 虚拟主机是Apache配置指令,它使我们可以在一台服务器上运行多个网站。 它们在同一台物理服务器上运行的事实对于最终用户而言并不明显。

使用虚拟主机,我们将能够指定站点的根目录(包含网站文件的目录),为每个站点创建单独的安全策略,使用不同的SSL证书等等。

在以下几行中,我们将看到 如何在Ubuntu 20.04上配置Apache虚拟主机,为此,我们必须满足以下要求,然后才能继续; 一个或多个域名指向您的公共服务器的IP,并在Ubuntu上安装一个Apache。

创建目录结构

文档根目录是响应请求而存储和提供域名网站文件的目录。 我们可以在我们感兴趣的位置建立根源。 每个域托管在 apache服务器 将其文档根目录设置为 / var / www /域名/ public_html.

我们准备去 首先为两个域创建根目录 我将在此示例中使用:

创建目录结构

sudo mkdir -p /var/www/dominio1.com/public_html
sudo mkdir -p /var/www/dominio2.com/public_html

我们将创建一个文件 index.html的 在每个域的文档根目录中。 当我们从浏览器访问域时,将显示以下内容:

sudo vim /var/www/dominio1.com/public_html/index.html

在文件内部,我们将粘贴以下内容:

本地代码域1

 
<!DOCTYPE html>
<html lang="es">
  <head>
    <meta charset="utf-8">dominio1</title>
  </head>
  <body>    
<h1>Home del dominio1</h1>
  </body>
</html>

对于第二个域,我们将编辑其index.html文件并将其添加 以下内容:

sudo vim /var/www/dominio2.com/public_html/index.html

本地代码域2

<!DOCTYPE html>
<html lang="es">
  <head>
    <meta charset="utf-8">dominio2</title>
  </head>
  <body>
<h1>Home del dominio2</h1>
  </body>
</html>

由于上述命令是使用sudo运行的,因此新创建的文件和目录归root拥有。 为避免权限问题, 我们将域的根目录的所有权以及这些目录中的所有文件的所有权更改为apache用户(www-data):

sudo chown -R www-data: /var/www/dominio1.com
sudo chown -R www-data: /var/www/dominio2.com

创建虚拟主机

在Ubuntu系统上, Apache的虚拟主机配置文件位于目录中 / etc / apache2 / sites-available。 可以通过创建目录的符号链接来启用它们 / etc / apache2 / sites-enabled,Apache在启动期间读取。

我们可以根据需要命名配置文件。 但 最佳做法是使用域名作为虚拟主机配置文件的名称。 现在,我们将打开我们喜欢的文本编辑器并创建基本配置文件。 在示例中,我将仅显示domain1的代码:

sudo vim /etc/apache2/sites-available/dominio1.com.conf

在内部,我们将添加以下内容,但是 对于domain2,我们必须在以下代码中将domain1更改为domain2:

域1的虚拟主机

<VirtualHost *:80>
    ServerName dominio1.com
    ServerAlias www.dominio1.com
    ServerAdmin webmaster@dominio1.com
    DocumentRoot /var/www/dominio1.com/public_html

    <Directory /var/www/dominio1.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/dominio1.com-error.log
    CustomLog ${APACHE_LOG_DIR}/dominio1.com-access.log combined
</VirtualHost>
  • 服务器名称 →您将指定与该虚拟主机配置匹配的域。 东 应该是域名.
  • ServerAlias →全部 此虚拟主机应匹配的其他域或子域,例如www。
  • 的DocumentRoot →这是 将指示Apache将在其中提供文件的目录.
  • 选项 →本指令 控制特定目录中可用的服务器功能.
    • 指数 →避免列出目录。
    • 关注符号链接 →启用此选项后,Apache将遵循符号链接。
  • 允许覆盖 →您将指定什么 .htaccess文件中声明的指令可以覆盖配置指令.
  • ErrorLog,CustomLog →在这里您将指定 日志文件位置.

保存文件后,要启用新的虚拟主机文件,我们将 创建从虚拟主机文件到启用站点的目录的符号链接。 我们将使用脚本来执行此操作 现场:

a2ensite domain1

sudo a2ensite dominio1.com

另一个选择是 手动创建符号链接 如下所示:

sudo ln -s /etc/apache2/sites-available/dominio1.com.conf /etc/apache2/sites-enabled/

完成后,我们可以 测试配置是否存在语法错误 搭配:

sudo apachectl configtest

如果没有错误,那么在终端中我们将看到类似以下的结果:

语法还可以

我们继续 重新启动Apache服务 为了使更改生效:

sudo systemctl restart apache2

最后,要确认一切正常 我们将打开URL http://dominio1.com 在浏览器中,我们应该看到domain1的index.html页面的内容:

多米诺骨牌1

借助虚拟主机,我们可以在单个Ubuntu服务器上托管多个域。 我们可以重复前面几行中描述的步骤,以便为我们所有的域创建其他虚拟主机。

虚拟主机apache浏览器

本文中公开的内容只是有关Virtual Host及其在Ubuntu中的配置的基本说明。 它可以 获取更多信息 Apache网站.


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   卡洛斯

    您好,创建虚拟主机对我帮助很大,但是在运行 apachectl confitest 时出现以下错误:“AH00558:apache2:无法可靠地确定服务器的完全限定域名,使用 127.0.1.1。 全局设置“ServerName”指令以抑制此消息
    语法确定»

    我不知道出了什么问题