linux上怎么用一个IP搭建两个网站的虚拟主机?

在单一台服务器上托管多个独立的网站,是一项非常实用且高效的技术,通常称之为虚拟主机,这种方式不仅能充分利用服务器资源,还能极大地降低网站运营成本,本文将详细介绍如何在 Linux 系统上,以流行的 Apache Web 服务器为例,搭建两个虚拟主机。

linux上怎么用一个IP搭建两个网站的虚拟主机?

准备工作

在开始操作之前,请确保您已经具备以下条件:

  • 一台安装了 Linux 操作系统的服务器(推荐使用 Ubuntu 或 CentOS)。
  • 拥有服务器的 root 权限或 sudo 权限。
  • 服务器已安装 Apache Web 服务器,如果尚未安装,在 Ubuntu/Debian 上可以使用 sudo apt update && sudo apt install apache2 命令,在 CentOS/RHEL 上则使用 sudo yum install httpd
  • 两个已解析到服务器 IP 地址的域名(site1.example.comsite2.example.com),如果没有真实域名,也可以通过修改本地计算机的 hosts 文件进行测试。

第一步:创建网站目录结构

为了使不同网站的数据隔离,我们需要为每个虚拟主机创建独立的根目录,这里我们以 /var/www/ 作为网站根目录的父目录。

执行以下命令来创建两个网站的目录:

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

创建完成后,我们还需要赋予 Apache 用户(通常是 www-dataapache)对这些目录的适当权限,以确保 Web 服务器能够读取和写入文件。

# 对于 Ubuntu/Debian 系统
sudo chown -R www-data:www-data /var/www/site1.example.com
sudo chown -R www-data:www-data /var/www/site2.example.com
# 对于 CentOS/RHEL 系统
sudo chown -R apache:apache /var/www/site1.example.com
sudo chown -R apache:apache /var/www/site2.example.com
# 确保目录权限正确
sudo chmod -R 755 /var/www

第二步:创建测试页面

为了验证虚拟主机是否配置成功,我们为每个网站创建一个简单的 index.html 文件。

为第一个网站创建测试页面:

echo "<html>
  <head>欢迎访问 Site 1</title>
  </head>
  <body>
    <h1>网站 1 (site1.example.com) 运行正常!</h1>
  </body>
</html>" | sudo tee /var/www/site1.example.com/index.html

为第二个网站创建测试页面:

echo "<html>
  <head>欢迎访问 Site 2</title>
  </head>
  <body>
    <h1>网站 2 (site2.example.com) 运行正常!</h1>
  </body>
</html>" | sudo tee /var/www/site2.example.com/index.html

第三步:配置虚拟主机文件

Apache 的虚拟主机配置文件通常存放在 /etc/apache2/sites-available/(Ubuntu/Debian)或 /etc/httpd/conf.d/(CentOS/RHEL)目录中,我们将在 sites-available 目录中为每个网站创建一个配置文件。

linux上怎么用一个IP搭建两个网站的虚拟主机?

site1.example.com 创建配置文件:

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

在文件中填入以下内容:

<VirtualHost *:80>
    ServerAdmin admin@site1.example.com
    ServerName site1.example.com
    ServerAlias www.site1.example.com
    DocumentRoot /var/www/site1.example.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

复制此文件并为第二个网站进行修改:

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

site2.example.com.conf 文件中的 ServerName, ServerAliasDocumentRoot 修改为第二个网站的对应信息。

第四步:启用虚拟主机并测试

在基于 Debian 的系统(如 Ubuntu)中,我们需要使用 a2ensite 工具来启用新创建的虚拟主机配置,并禁用默认的配置。

sudo a2ensite site1.example.com.conf
sudo a2ensite site2.example.com.conf
sudo a2dissite 000-default.conf

在执行任何 Apache 配置更改后,首先应检查配置文件语法是否正确:

sudo apachectl configtest

如果屏幕显示 Syntax OK,说明配置无误,重新加载 Apache 服务使新配置生效:

sudo systemctl reload apache2

第五步:验证结果

在浏览器中分别访问 http://site1.example.comhttp://site2.example.com,如果一切顺利,您应该会看到之前创建的两个不同的测试页面,这表明您的 Linux 服务器已经成功搭建了两个虚拟主机。

linux上怎么用一个IP搭建两个网站的虚拟主机?

项目 网站 1 网站 2
域名 site1.example.com site2.example.com
根目录 /var/www/site1.example.com /var/www/site2.example.com
Apache 配置文件 site1.example.com.conf site2.example.com.conf
测试页面内容标题 网站 1 运行正常! 网站 2 运行正常!

通过以上步骤,您不仅学会了 Linux 搭建两个虚拟主机的完整流程,也为未来管理更多网站打下了坚实的基础。


相关问答FAQs

问题 1:Apache 和 Nginx 在配置虚拟主机时有何主要区别?

解答: 两者在核心概念上相似,都是通过配置指令将不同的请求映射到不同的文件系统路径,但实现方式和配置语法有显著不同,Apache 使用 <VirtualHost> 指令块来定义虚拟主机,配置通常集中在 httpd.confsites-available 目录下的文件中,而 Nginx 则使用 server 指令块,其配置文件结构更模块化,通常在 nginx.conf 中引用 conf.dsites-available 目录下的文件,Nginx 的语法更简洁,并且其事件驱动的架构在处理高并发时通常表现更优。

问题 2:如何为刚刚搭建的虚拟主机启用 HTTPS (SSL/TLS)?

解答: 为网站启用 HTTPS 是保障数据安全的重要步骤,最简单和免费的方法是使用 Let’s Encrypt 提供的 SSL 证书,您可以通过安装 certbot 这个工具来自动化申请和配置证书,在 Ubuntu 上,安装命令通常是 sudo apt install certbot python3-certbot-apache,安装后,运行 sudo certbot --apache 命令,Certbot 会自动检测到您的虚拟主机,引导您完成证书申请,并自动修改 Apache 配置文件,为您的站点添加 HTTPS 支持,甚至可以设置自动续期。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-13 14:45
下一篇 2025-10-13 14:48

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信