在下一篇文章中,我们将看一看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
在文件内部,我们将粘贴以下内容:
<!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
<!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:
<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 →在这里您将指定 日志文件位置.
保存文件后,要启用新的虚拟主机文件,我们将 创建从虚拟主机文件到启用站点的目录的符号链接。 我们将使用脚本来执行此操作 现场:
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页面的内容:
借助虚拟主机,我们可以在单个Ubuntu服务器上托管多个域。 我们可以重复前面几行中描述的步骤,以便为我们所有的域创建其他虚拟主机。
本文中公开的内容只是有关Virtual Host及其在Ubuntu中的配置的基本说明。 它可以 获取更多信息 Apache网站.
您好,创建虚拟主机对我帮助很大,但是在运行 apachectl confitest 时出现以下错误:“AH00558:apache2:无法可靠地确定服务器的完全限定域名,使用 127.0.1.1。 全局设置“ServerName”指令以抑制此消息
语法确定»
我不知道出了什么问题