Django

如何從本地網路中的一台電腦為多個域提供服務

  • November 26, 2020

我在本地網路中為我的 django 項目提供服務時遇到問題。每個項目在 hosts 文件中都需要一個唯一的域名。在我的本地網路中,其他電腦無法看到這些項目。

我的電腦在網路中的IP是192.168.2.2 我電腦上的hosts文件如下:

127.0.0.101      myProject1.local
127.0.0.102      myProject2.local
127.0.0.103      myProject3.local

我想我必須這樣做,但它不起作用。

192.168.2.101      myProject1.local
192.168.2.102      myProject2.local
192.168.2.103      myProject3.local

最後,我找到了解決方案。您必須在本地網路中設置 DNS 伺服器,如果您有任何 Server Edition OS 電腦,則可以輕鬆配置其 DNS 伺服器並將其指向您項目的 IP。但是當網路中沒有伺服器電腦(例如:家庭網路)時,問題將是找到一個 DNS 伺服器來承擔責任。

我將在 Windows 7 或其他任何東西上配置 Apache 以使用 WSGI 處理 Django 項目…

我的本地 IP 是192.168.2.2,我在路由器設置中將它與我的 MAC-ADDRESS 綁定。

**注意:**一定要讓你的IP不可更改,否則會使你的DNS伺服器和本地網路不穩定。

配置 Apache 以服務多個域:

第一步是配置 Apache 以執行項目:

下面將在 www.myproject1.local 上為 myProject1 提供服務,在www.myproject2.local上為myProject2提供服務

NameVirtualHost *:80

<VirtualHost *:80>
   ServerName www.myProject1.local
   ServerAlias myProject1.local *.myProject1.local 
   ServerAdmin my-email@gmail.com
   DocumentRoot "C:/path/to/myProject1/"
</VirtualHost>

<VirtualHost *:80>
   ServerName www.myProject2.local
   ServerAlias myProject2.local *.myProject2.local 
   ServerAdmin my-email@gmail.com
   DocumentRoot "C:/another/path/to/myProject2/"
</VirtualHost>

...

欲了解更多資訊,請訪問:

$$ Apache Name-based Virtual Host Support $$ 2. 使用 WSGI 啟動 Django 項目:


如果你想為一個 PHP 項目服務,但要配置 WSGI,你必須做一些如下的改變。我將 project1 視為 django 項目

<VirtualHost *:80>
   ServerName www.myProject1.local
   ServerAlias myProject1.local *.myProject1.local 
   ServerAdmin my-email@gmail.com
   #WSGIDaemonProcess myProject1 processes=2 threads=15 display-name=%{GROUP}
   #WSGIProcessGroup  myProject1
   WSGIScriptAlias / "C:/path/to/myProject1/myproject1.wsgi"
</VirtualHost>

...

一定要載入:

$$ mod_wsgi.so $$ 註釋行WSGIDaemonProcessWSGIProcessGroup是執行更好的 WSGI 服務的選項,更多資訊請訪問:

$$ mod_wsgi Wiki Pages $$ 3. 安裝 DNS 伺服器


現在你必須配置你的 dns 伺服器。就我而言,我的電腦上沒有安裝 dns 伺服器,所以第一步是找到合適的 dns 伺服器來完成這項工作。

我用

$$ MaraDNS $$,並像下面這樣配置它: 文件

ipv4_bind_addresses             = "192.168.2.2"
timestamp_type                  = 2
random_seed_file                = "secret.txt"
hide_disclaimer                 = "YES"
csv2                            = {}
csv2["myproject1.local."]       = "db.default.txt"
csv2["myproject2.local."]       = "db.default.txt"
upstream_servers                = {}
upstream_servers["."]           = "yyy.yyy.yyy.yyy, zzz.zzz.zzz.zzz"

和下面的db.default.txt文件

%           192.168.2.2 ~
www.%       192.168.2.2 ~

有關 maraDNS 的更多資訊,請訪問MaraDNS 網站

  1. 啟動 DNS 伺服器:

通過以下方式啟動 maraDNS 伺服器

maradns -f mararc
  1. 路由器設置:

您可以通過將主 DNS 伺服器設置為指向本地網路中每台電腦的 192.168.2.2 來訪問您的域。但您也可以將路由器 DHCP 伺服器設置為使用您的 IP 作為預設 DNS 伺服器。它只需要訪問路由器網路管理。

所以在那裡輸入你的IP作為DNS伺服器,工作就完成了。

  1. 享受技巧:

現在您可以在本地網路中將您的項目作為偽造域提供服務,而無需使用 :port-number 或 IP 地址。只需在任何本地網路電腦或 WiFi 設備的地址欄中輸入myproject1.local即可獲得正確的結果。

:)

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