我正在尝试设置一个装有 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 年)。
在实际的发行版上实现这一点并不容易,但如果能成功的话,就会很令人满意:-)