如何在 Linux 上使用 Apache Web 服务器设置虚拟主机
在本文中,您将了解如何在 Ubuntu Linux 上设置 Apache 虚拟主机。在此过程中,您将学习如何根据用户请求的域名/站点向不同的用户提供不同的站点。
Apache Web 服务器
Apache Web 服务器是互联网上提供网站最流行和最强大的方式。它用于互联网上超过一半的活动网站,并且功能极其强大且灵活。
Apache 将其功能和组件提供给各个单元,这些单元可以独立自定义和配置。描述站点或域的基本单元称为虚拟主机。
这允许管理员使用一种机制使用一台服务器通过单个接口或 IP 地址托管多个域或站点。
Apache 安装
$ sudo apt-get update $ sudo apt-get install apache2
完成这些步骤后,我们就可以开始了。
出于演示目的,我们将配置 **apache** 为 webserver1.com 创建一个虚拟主机,为 webserver2.com 创建另一个虚拟主机。这将类似于参考指南,但您应该替换您自己的站点/域名。
创建目录结构
这里的第一步是,目录结构将保存将提供给访问者的站点信息和数据。默认情况下,apache 的顶级目录是 /var/www,我们将为每个站点/域将其设置为 /var/www 目录下的各个目录。
对于我们的每个站点,我们将创建站点目录 -
$ sudo mkdir -p /var/www/webserver1.com $ sudo mkdir -p /var/www/webserver2.com
授予权限
现在,我们有了站点/域的目录结构,但它们是由我们的 root 用户创建和拥有的。如果我们希望我们的普通用户能够修改我们的 Web 目录中的文件,那么我们必须将所有权更改为其他普通用户。
$ sudo chown -R $USER:$USER /var/www/webserver1.com $ sudo chown -R $USER:$USER /var/www/webserver2.com
我们还应该稍微修改一下权限,以确保允许对通用 Web 目录及其包含的所有文件和文件夹进行读取访问,以便可以正确提供页面
$ sudo chmod -R 755 /var/www
您的 Web 服务器现在应该具有为站点提供服务所需的权限,并且您的用户应该能够在必要的文件夹中创建内容。
为每个虚拟主机创建演示页面
首先,我们将从 webserver1.com 开始。然后,我们可以在编辑器中通过键入以下命令创建 index.html 文件
$ touch /var/www/webserver1.com/index.html
使用一个简单的 HTML 脚本编辑 index.html 文件,该脚本指示其连接的站点。<html>
$ nano /var/www/webserver1.com/ index.html <html> <head> <title>Welcome to webserver1.com!</title> </head> <body> <h1>Success! The webserver1.com virtual host is working!</h1> </body> </html>
class="result notranslate"$ cp /var/www/webserver1.com/index.html /var/www/webserver2.com/index.html
然后,我们可以编辑文件并修改相关的信息
$ nano /var/www/webserver2.com/public_html/index.html <html> <head> <title>Welcome to webserver2.com!</title> </head> <body> <h1>Success! The webserver2.com virtual host is working!</h1> </body> </html>
创建新的虚拟主机文件
虚拟主机文件是指定虚拟主机并指示 Apache 响应各种域名请求的配置文件。
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/webserver1.com.conf $ sudo nano /etc/apache2/sites-available/webserver1.com.conf <VirtualHost *:80> ServerAdmin [email protected] ServerName webserver1.com ServerAlias www.webserver1.com DocumentRoot /var/www/webserver1.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
复制第一个虚拟主机文件并为第二个域名 webserver2.com 自定义
$ sudo cp /etc/apache2/sites-available/webserver1.com.conf /etc/apache2/sites-available/webserver2.com.conf $ sudo nano /etc/apache2/sites-available/webserver2.com.conf
您现在需要修改所有信息以引用您的第二个域名。完成后,它可能如下所示
<VirtualHost *:80> ServerAdmin [email protected] ServerName webserver2.com ServerAlias www.webserver2.com DocumentRoot /var/www/webserver2.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
启用新的虚拟主机文件
现在我们已经创建了虚拟主机文件,我们必须启用这些站点。Apache 有自己的工具允许我们这样做。
$ sudo a2ensite webserver1.com.conf $ sudo a2ensite webserver2.com.conf
我们需要重新启动 Apache 以使这些更改生效
$ sudo service apache2 restart * Restarting web server apache2 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message. This is a harmless message that does not affect our site.
测试网站
由于这些站点/域名不是公开的,因此没有条目可以简化步骤,我们需要编辑 /etc/hosts 文件,以便如果我们使用域名 webserver1.com 和 webserver2.com 浏览,我们可以看到网页
$ sudo /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.84 website1.com 192.168.1.84 website1.com
现在您已经配置了两个主机,您可以通过打开您喜欢的浏览器并打开域名轻松测试您的设置。
http://webserver1.com
http://webserver2.com
配置完成后,您现在应该有一个处理两个单独域名/站点名称的单个服务器。您可以按照上面概述的步骤扩展此过程以创建其他虚拟主机。没有软件限制配置 Apache 可以处理的域名数量,我们可以创建任意数量的站点/域名,直到您的服务器能够处理它们。