Fedora

具有萬用字元 .test 域的本地開發環境,由 fedora 33/34 上的 dnsmaq 提供服務

  • April 13, 2021

我正在嘗試使用 Fedora 34 設置英特爾 NUC 作為我新的穩定本地 Web 開發環境。

我在 mac OS x 上的環境被系統更新破壞了,甚至自上次系統更新以來,即使是自製軟體目前也拋出了很多錯誤。

想要的是這樣的:

  • 帶有文件夾“站點”的 NAS,其中有很多網路項目,每個項目都在自己的子文件夾中(已選中,正在執行)
  • 帶有 apache、mariadb、php、…(燈)的 fedora 系統(已檢查,正在執行)
  • 站點/子文件夾應由地址 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 (通過自製軟體):

address=/.test/127.0.0.1

在 Fedora(和其他實際發行版)上,有 NetworkManager 和 systemd-resolved 之類的東西使事情變得更加複雜。

我在網際網路上閱讀了很多範例並嘗試了它們,但沒有運氣。

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

這篇文章有最接近的匹配,但它仍然不起作用(或者我遺漏了什麼?)文章:在此處輸入連結描述

我怎樣才能使這項工作?

在閱讀了 Web 上的文章 2 週並嘗試了我認為的每一種描述方式之後,我終於找到了針對這種情況的解決方案

  • 您有一堆網站(可能位於 NAS 上)
  • 應在 Webbrowser 中像這樣呼叫:foldername.sites.test

因為 .test 是剩餘的專用於“本地開發”的域之一。.dev 不再有效。

暫時禁用 SeLinux,這樣它就不會阻止技術上可行的事情。請參閱這篇文章臨時/永久啟用/禁用 SELinux

這篇文章詳細解釋了dnsmasqsystemd-resolved的設置:配置 dnsmasq 並保持 systemd-resolved

對於任何對此不熟悉的人來說,這會造成很大的混亂,因為存在:

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

你會迷失在無窮無盡的配置可能性中,99% 都行不通。解決方法是安裝dnsmasq(完整版),忽略NetworkManager-dnsmasq,使用systemd-resolved。這種組合對我有用,目前在fedora 34上。

在按照第2條中的描述進行設置後,您可以繼續將 vhost-definitions 添加到 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”。

  • project1.sites.test
  • 香蕉網站測試
  • applejuice.sites.test

所有 *.sites.test 都通過 dnsmasq 響應 127.0.0.1。

對於在一堆網站上進行大規模工作,此設置非常節省時間(如果它最終有效)。

此設置的想法來自該網站mallinson.ca,其中描述了 Mac OS 系統(早在 2018 年)。

在實際的 Distro 上實現這一點並不容易,但如果它有效的話就令人滿意:-)

引用自:https://serverfault.com/questions/1059541