具有通配符 .test 域的本地开发环境,由 fedora 33/34 上的 dnsmaq 提供服务

具有通配符 .test 域的本地开发环境,由 fedora 33/34 上的 dnsmaq 提供服务

我正在尝试设置一个装有 Fedora 34 的 Intel NUC 作为我的新的稳定的本地 Web 开发环境。

我的 mac OS x 环境因系统更新而被破坏,自上次系统更新以来,甚至 Homebrew 目前也抛出了很多错误。

想要的是这个:

  • NAS 中有“sites”文件夹,里面有很多网络项目,每个项目都在自己的子文件夹中(已检查,正常运行)
  • fedora 系统带有 apache、mariadb、php 等 (lamp) (已检查,正常运行)
  • sites/subfolder 应该由地址 subfolder.sites.test 提供服务
  • 如果这个功能也能在局域网内的其他计算机上使用,那就太好了

在我的 Mac 上,只需要在 dnsmasq.conf 和 resolve.conf 中放入两行就可以实现这个魔法。带有通配符的虚拟主机条目可以满足所有要求。

这是 Mac 配置:

httpd.conf 中的虚拟主机定义或类似内容:

<VirtualHost *:80>
  ServerName sites.test
  ServerAlias *.test
  VirtualDocumentRoot "/Volumes/webroot/sites/%1/web"
  UseCanonicalName Off
</VirtualHost>

在/etc/resolver/test中:

nameserver 127.0.0.1

在 /usr/local/etc/dnsmasq.conf 中(通过 homebrew):

address=/.test/127.0.0.1

在 Fedora(和其他实际发行版)上,存在诸如 NetworkManager 和 systemd-resolved 之类的东西,这使得事情变得更加复杂。

我在互联网上查阅了很多样本​​并进行了尝试,但没有成功。

如何在 Fedora 上使用 NetworkManager、systemd-resolved、dnsmaq 等进行配置?

这篇文章与本文最接近,但仍然不起作用(或者我遗漏了什么?)文章:在此处输入链接描述

我怎样才能让它工作?

答案1

在阅读了两周的网上文章并尝试了我认为的每一种描述方法后,我终于找到了一个此场景的解决方案

  • 您有许多网站(可能位于 NAS 上)
  • 在 Webbrowser 中应像这样调用:文件夹名称.sites.test

由于 .test 是用于“本地开发”的剩余域名之一,因此 .dev 不再有效。

暂时禁用 SeLinux,这样它就不会阻止技术上可行的事情。请参阅本文暂时/永久启用/禁用 SELinux

本文解释了域名系统systemd-已解决详细地:配置 dnsmasq 并保持 systemd-resolved

对于任何刚接触此领域的人来说,这都会造成很大的困惑,因为存在:

  • dnsmasq (完整版)
  • dnsmasq 作为 NetworkManager 的一部分
  • systemd-resolved(作为 systemd 一部分的解析器)
  • 解决(完整版)

你会迷失在无数的配置可能性中,99% 都行不通。解决方案是安装 dnsmasq(完整版),忽略 NetworkManager-dnsmasq 并使用 systemd-resolved。这个组合对我来说很有效,目前Fedora 34

按照文章中描述的方式进行设置后2,您可以继续将 vhost 定义添加到 apache(或任何 httpd)。

例如:

# ##########################################################################

<Directory /var/www/html/nas-mount>
    Options Indexes Includes FollowSymLinks ExecCGI MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
    Require all granted
</Directory>

<VirtualHost *:80>
    ServerName sites.test
    ServerAlias *.sites.test
    VirtualDocumentRoot /var/www/html/nas-mount/%1/web
</VirtualHost>

# ##########################################################################

在某些系统上,最好将目录定义放在 VirtualHost 之外。

这样,我就可以通过浏览器中的名称自动调用 /var/www/html/nas-mount 内的任何 web 项目,后面跟着“sites.test”。

  • 项目1.站点.测试
  • 香蕉.站点.测试
  • 苹果汁.站点.测试

所有 *.sites.test 都通过 dnsmasq 响应 127.0.0.1。

对于在大量网站上进行大规模工作来说,此设置可以节省大量时间(如果它最终有效的话)。

这个设置的想法来自这个网站马林森其中描述了 Mac OS 系统(2018 年)。

在实际的发行版上实现这一点并不容易,但如果能成功的话,就会很令人满意:-)

相关内容