如何在 Debian 9 上设置 Apache 虚拟主机

2023-10-24

在本教程中,我们将引导您了解如何在 Debian 9 上设置 Apache 虚拟主机。

Apache 虚拟主机允许您在一台计算机上托管多个域。使用虚拟主机时,您可以为每个域或子域指定不同的文档根(包含网站文件的目录)、创建单独的安全策略、使用不同的 SSL 证书等等。

尽管本教程是针对 Debian 9 编写的,但相同的步骤适用于所有基于 Debian 的发行版。

先决条件#

在继续本教程之前,请确保您已满足以下先决条件:

  • 有一个指向您的服务器 IP 地址的域名。在本教程中我们将使用example.com.
  • Have Apache 安装在您的 Debian 服务器上 .
  • 登录身份为具有 sudo 权限的用户 .

创建目录结构#

文档根目录是存储域名网站文件并响应请求而提供服务的目录。您可以将文档根目录设置为您想要的任何位置。在本指南中,我们将使用以下目录结构:

/var/www/
├── domain1.com
│   └── public_html
├── domain2.com
│   └── public_html
├── domain3.com
│   └── public_html

我们服务器上托管的每个域都将其文档根设置为/var/www/<domain_name>/public_html.

让我们首先为我们的第一个域创建文档根目录,example.com:

sudo mkdir -p /var/www/example.com/public_html

我们还将创建一个index.html域文档根目录中的文件,当您在浏览器中访问该域时将显示该文件。

打开您最喜欢的文本编辑器,创建一个新文件并将以下内容粘贴到其中:

/var/www/example.com/public_html/index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Welcome to example.com</title>
  </head>
  <body>
    <h1>Success! example.com home page!</h1>
  </body>
</html>

我们以 sudo 用户身份运行命令,新创建的文件和目录由 root 用户拥有。

为了避免任何权限问题,我们将域文档根目录和该目录中所有文件的所有权更改为 apache 用户(www-data) :

sudo chown -R www-data: /var/www/example.com

创建虚拟主机#

在 Debian 系统上,Apache 虚拟主机配置文件位于/etc/apache2/sites-available目录,可以通过创建指向该目录的符号链接来启用/etc/apache2/sites-enabled目录。

打开你的文本编辑器选择并创建以下基本虚拟主机配置文件:

/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/example.com/public_html

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

    ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>
  • ServerName:应与此虚拟主机配置匹配的域。这应该是您的域名。
  • ServerAlias:也应与该虚拟主机匹配的所有其他域或子域,通常是www子域。
  • DocumentRoot:Apache 将从中提供域文件的目录。
  • Options: This directive controls which server features are available in a specific directory.
    • -Indexes:阻止目录列表。
    • FollowSymLinks:启用此选项后,Apache 将跟踪符号链接。
  • AllowOverride:指定在其中声明的指令.htaccess文件可以覆盖配置指令。
  • ErrorLog, CustomLog:指定日志文件的位置。

您可以根据需要命名虚拟主机配置文件,但建议使用域名作为配置文件的名称。

要启用新的虚拟主机文件,请创建从虚拟主机文件到sites-enabled目录,Apache 在启动期间读取该目录。

在 Debian 系统中,您可以使用名为的帮助程序脚本启用虚拟主机a2ensite:

sudo a2ensite example.com

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

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

启用配置后,通过键入以下内容测试语法是否正确:

sudo apachectl configtest

如果没有错误,您将看到以下输出:

Syntax OK

重新启动apache2使更改生效的服务:

sudo systemctl restart apache2

要验证一切是否按预期工作,请打开http://example.com在你最喜欢的浏览器中,你会看到类似这样的内容:

结论#

在本教程中,您学习了如何创建 Apache 虚拟主机配置以在单个 Debian 服务器上托管多个域。您可以重复相同的步骤为其他域创建其他虚拟主机。

如果您遇到任何问题,请随时发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Debian 9 上设置 Apache 虚拟主机 的相关文章

  • cursorMark是无状态的以及它如何解决深度分页

    作为指定here https cwiki apache org confluence display solr Pagination of Results光标标记是无状态的 但我不明白它是如何解决无状态的深度分页问题的 solr 是否按唯一
  • 仅当环境变量具有特定值时如何设置 Apache 标头

    我想在我的 Apache 2 4 配置中设置标头 但前提是环境变量具有特定值 SetEnv ENV NAME prod 我如何仅在以下情况下设置此标头ENV NAME is not prod Header set X Robots Tag
  • 在 PHP 中设置 HTTP 响应代码(在 Apache 下)

    给出以下两种在 PHP 中设置 HTTP 响应代码的方法 具体来说 在 Apache 下 方法一 http response code 404 方法二 header HTTP 1 0 404 Not Found 我的问题是 除了这个事实之外
  • 有关 CMake 错误的问题:没有为目标提供源

    我正在尝试使用 cmake 和 eclipse 将 FreeRtos 添加到我的项目中 但出现错误 我运行的是 debian 10 我的 cmake 版本是 3 13 4 cmake 的文件可以在以下位置找到这个 git 仓库 https
  • Apache 反向代理的基本身份验证问题

    我想为在 Ubuntu 服务器 12 04 1 上运行的 Apache 反向代理站点添加基本身份验证 网络应用程序是Jenkins http jenkins ci org运行在 Java EE 容器上 我在中添加了以下配置httpd con
  • Capistrano 和 XSendFile 配置

    我正在尝试使用 Apache 2 2 Passenger 4 0 59 和 XSendFile 0 12 配置 Rails 生产服务器 应用程序通过 Capistrano 部署 部署的应用程序生成 可能很大 PDF Rails root t
  • 为什么我不能将 sed 的输出重定向到文件

    我正在尝试运行以下命令 someprogram tee dev tty sed s 2 gt output file 但当我去查看时 该文件始终是空白的 如果我删除 gt output file从命令末尾 我可以看到 sed 的输出 没有任
  • 无法更改 Xampp 中的 Apache 端口号

    我刚刚下载了Xampp服务器xampp win32 1 8 2 0 VC9 zip http www apachefriends org en xampp windows html 641文件 Windows 并尝试启动 apache 服务
  • .htaccess 在动态文件夹名称中加载索引

    我在 htaccess 加载动态文件夹名称中的索引时遇到问题 这是我的目录结构 root products gt this is constant folder name 而不是使用 GET 获取产品 url root products i
  • Magento 中的子域 htaccess 问题

    public html www domain com public html subdomain subdomain domain com public html htaccess public html subdomain htacces
  • AH10411 错误:在 apache mod_rewrite 中管理空格和 %20

    我今天更新了 Apache 到 2 4 56 1 并且加载了 htaccess过去有效的重写现在出现了 AH10411 错误 与查询中的空格有关 我正在努力寻找 适当 的解决方案 用户单击一个链接 例如 a href FISH 20J123
  • 通过 AJP 将 REMOTE_USER 转发到 tomcat(例如用于 shibboleth)

    今天我刚刚遇到了以下问题 1 我将apache配置为基本身份验证 需要有效用户 这有效 2 我进一步配置 apache 将某些路径 在我的例子中为 idp 的请求转发到 tomcat servlet shibboleth IDP 结果是 s
  • 如何在apache 2.4.6上安装apxs模块

    我刚刚用过apt get update我的 apache 已更新为2 4 6 我想安装 apxs 来编译模块 但收到此错误 The following packages have unmet dependencies apache2 pre
  • docker容器大小远大于实际大小

    我正在尝试从中构建图像debian latest 构建后 报告的图像虚拟大小来自docker images命令为 1 917 GB 我登录查看尺寸 du sh 大小为 573 MB 我很确定这么大的尺寸通常是不可能的 这里发生了什么 如何获
  • PHP Github Pull 脚本错误“权限被拒绝(公钥)”

    我已经设置了一个 PHP 脚本来执行 GitHub 拉取 这包含在我的 Github 文件夹中 home mysite public html github github pull php 我的服务器已经有 SSH 公钥 就像我执行git
  • 如何在 GNU/Linux 上设置 Subversion (SVN) 服务器 - Ubuntu [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一台运行 Ubuntu 的笔记本电脑 我想将其用作 Subversion 服务器 既让我自己在本地承诺 也让其他人远程承诺 要使其
  • 从子域中的 ../ 路径

    假设我创建了一个子域 http subdomain mydomain com http subdomain mydomain com 最初是在这个网址 http mydomain com subfolder folder http mydo
  • CodeIgniter 删除 index.php 和 .htaccess

    我已经为此工作了一个小时 所以我想我不妨问一下 我正在尝试从 CodeIgniter 应用程序的 URL 中删除 index php 但无法执行此操作 该应用程序在我办公室的专用服务器上运行 我通过 url 访问该应用程序http smr
  • 新部署后,React 应用程序必须清除浏览器缓存

    我们正在使用 Jenkins 管道在 apache 服务器上部署 React 应用程序 当我们部署新代码时 大多数新功能都可以正常工作 但并非所有更改都反映浏览器中的最新内容 用户必须打开隐身窗口或清除缓存才能看到新功能 我见过一些相关的解
  • 编辑/更改服务器上的 300 多项选择

    我编辑了所有服务器 http 状态消息 当我输入错误的地址时 300 个多项选择仍然显示 所以它向我显示选项 你知道我怎样才能摆脱它吗 我不希望用户有选择 我想重定向到 index html 或者我想显示自己创建的带有 gt 返回 的消息页

随机推荐

  • Python相关矩阵教程(使用Pandas)

    在本博客中 我们将介绍一个重要的多变量数据描述性统计量 称为相关矩阵 我们将学习如何在 Python 中使用以下命令创建 绘制和操作相关矩阵Pandas 我们将讨论以下主题 目录 hide 1 What is the correlation
  • Shell 脚本编写分步教程

    在本教程中 我们将讨论 shell 脚本以及如何制作第一个 shell 脚本 它们通常被称为 shell 脚本 但我们将它们称为 Bash 脚本 因为我们将在其他 Linux shell 中使用 Bash 有 zsh tcsh ksh 和其
  • 使用 Curl 命令下载文件:综合指南

    本教程深入探讨使用以下命令下载文件的方法卷曲命令 我们将介绍 HTTP 下载 安全 HTTPS 传输 使用 FTP 服务器的基础知识 甚至浏览分段下载和速度调整等高级功能 目录 hide 1 下载到标准输出 2 下载并保存到文件 3 验证
  • 使用 to_numpy() 将 Pandas DataFrame 转换为 NumPy 数组

    The DataFrame to numpy 函数 由提供Pandas库 提供了一种将 DataFrame 转换为NumPy 数组 它返回一个 ndarray NumPy 的基本数据结构 可以使用各种 NumPy 库函数轻松操作它 当您想要
  • Linux echo 命令:超越基础知识

    The echoLinux 中的命令允许您显示文本或将数据输出到终端 它可用于各种目的 例如打印变量的值 生成格式化输出 甚至调试脚本 在终端中尝试以下命令 echo Hello world 在这里 你好 世界 被打印到终端 这echo命令
  • 掌握 Python 时间模块:综合指南

    time 模块是Python 中的标准模块 使用 Python 时 包含与时间相关的操作至关重要 time模块提供了各种与时间相关的函数和方法 可以通过导入time模块来访问 import time 除非另有说明 时间模块表示自纪元以来的时
  • 如何编写实用的 shell 脚本

    在上一篇文章中 我们谈到了常用表达 我们看到了如何在 sed 和 awk 中使用它们进行文本处理 我们之前讨论过Linux sed命令和awk 命令 在这个系列中 我们编写了一些小的 shell 脚本 但我们没有把事情搞混 我认为我们应该更
  • Windows Server 事件日志备份脚本

    作为系统管理员 我们有责任备份并定期保存 Windows 服务器事件日志 另外 请将它们存储在外部驱动器或云存储上 我们建议每天备份事件日志并保留至少一年的备份 事件日志帮助我们对系统进行故障排除 这是一个批处理脚本 用于进行 Window
  • 出于安全原因,默认情况下禁用异常打印。错误日志记录号:xxxxxx

    安装 magento 时 如果您遇到如下问题 这是已知问题 Error Exception printing is disabled by default for security reasons Error log record numb
  • 如何在 Ubuntu 和 Linux Mint 上安装最新内核

    Ubuntu 和 Linux Mint 是两个流行的 Linux 发行版 被个人和组织广泛使用 使用 Linux 的好处之一是能够升级到最新的内核版本 在本文中 我们将指导您完成在 Ubuntu 和 Linux Mint 上安装最新内核的步
  • 如何在 PHP 中读取 XML 文件 (SimpleXML)

    SimpleXML 是 PHP 5 中引入的 PHP 扩展 它允许用户在 PHP 中轻松处理 XML 数据 SimpleXML 将任何 XML 数据转换为可以使用普通属性选择器和数组迭代器轻松处理的对象 您必须已安装php simplexm
  • 如何在 Ubuntu 22.04 上安装 MariaDB

    MariaDB是一个流行的开源关系数据库系统 由MySQL服务器的原始开发人员开发 它最初是从 MySQL 服务器分叉出来的 并进行了多项增强 本教程将指导您在 Ubuntu 22 04 Linux 系统上安装 MariaDB 服务器 1
  • 如何使用 JavaScript 替换字符串中的所有点 (.)

    JavaScript 提供了多种操作字符串的方法 当涉及到替换字符串中的字符时 String prototype replace 立即想到方法 但是 当使用替换方法并以简单字符串作为搜索值时 它只会替换第一个出现的位置 替换所有出现的字符
  • 如何在 Debian 11/10 上安装和使用 Cordova

    阿帕奇科尔多瓦是一个开源移动开发框架 它允许您使用 HTML5 CSS3 和 JavaScript 等标准 Web 技术进行跨平台开发 避免使用每个移动平台的本机开发语言 Apache Cordova 命令行需要 Node js 才能运行
  • 如何在 Ubuntu 16.04 LTS 上安装 Swift

    Swift 是一种安全 快速 富有表现力的通用编程语言 专为软件设计模式而构建 它最适合系统编程 移动和桌面应用程序 Swift 提供了大量功能 使编程变得更加容易 同时为开发人员提供了真正的系统编程语言所需的控制能力 本教程将帮助您在 U
  • 如何在 Fedora Linux 上安装 Git

    Git 是一个分布式版本控制系统 广泛应用于软件开发和其他协作项目 在本指南中 我们将介绍在 Fedora Linux 上安装 Git 的两种方法 使用官方存储库和从最新源代码编译 先决条件 确保您有一个运行 Fedora Linux 的系
  • 如何在 Python 中计算两个日期之间的天数

    在 Python 中处理日期和时间时 计算两个日期之间的天数是一项常见任务 无论您是构建预订系统 日程安排工具还是任何其他涉及日期和时间的应用程序 计算两个日期之间的天数都是一个关键功能 在本文中 我们将讨论如何在 Python 中计算两个
  • 什么是中间人 (MITM) 攻击?

    A 中间人 MITM 攻击是一种常见的网络安全威胁 如果处理不当 可能会造成严重后果 在这种类型的攻击中 恶意行为者会拦截 中继并可能改变认为彼此直接通信的两方之间的通信 本文将深入探讨 MITM 攻击带来的威胁 攻击者使用的技术以及个人和
  • 如何利用技术进步实现完美的远程办公

    远程工作并不是一个新趋势 作家 记者和艺术家总是有机会在舒适的家中工作 尽管如此 远程办公始终与技术密切相关 在过去 远程工作人员依赖邮件服务和交通 随着这两个领域变得越来越好 越来越多的人能够在家执行工作任务 然而 直到互联网的出现 这种
  • 如何在 Debian 9 上设置 Apache 虚拟主机

    在本教程中 我们将引导您了解如何在 Debian 9 上设置 Apache 虚拟主机 Apache 虚拟主机允许您在一台计算机上托管多个域 使用虚拟主机时 您可以为每个域或子域指定不同的文档根 包含网站文件的目录 创建单独的安全策略 使用不