中場休息 - 關於網址
So far so good. 此前,筆者的鋤頭網站內的文章,是在時間序下,按照架站的順序一一加入的。並且是以實現 wordpress 的網頁設計管理平台為當前的直通目標。重點是,有很多旁支必要的套件是該安裝建立的,例如防火牆等。事實上當前筆者也沒去摸索,然而使用者該去探索此層的廣度,以取用適合自己的部份。接下來,後半場要做什麼;這樣的場景筆者描述如下:
- 下載並解開 wordpress,但還不能去執行它。因為我們尚無廣域的網址,因為它會將網址(所以目前只有本地端)設定為唯一能存取它的路徑。
- 使用VirtualBox,我們需打通 80,443 ports. 以讓網站和網際網路間建立通道
- 我們的 ip 是浮動的,甚至是虛擬的(可能無解/VPN),並且是透過家中的撥接寬頻機可能再串接了 ip 分享器。如何讓想學架站的朋友來訪問我們的網頁?
- 我們的廣域網址從何而來?這就佛心來的 no-ip 了
- no-ip 提供給每個使用者三個免費的網址及映射,意謂著我們可以在同一台電腦上架三個不同的網站而至此都還未花半毛錢。
以上,我們將一一克服,操作的時間可能一小時內就可完成。成功近在咫呎,之後,便可安穩地在一台筆電(甚至於遠端上:伺服器要駐守24小時的所以用舊筆電,可用SSH來遠端系統管理或線上登入wordpress後台)上盡情發揮網頁設計的長才了…且不花半毛錢…興不興𡚒!
小工具
以下,與本文相關,說明一些日後可能會遇到的,以及使用一些(筆者懂的)小工具來輔助排除問題
wordpress 的固定網址 - hostname
例如 https://www.yahoo.com.tw,這行粗體字就稱為 hostname,此 hostname 代表著(簡化講)某台實體主機,並且 hostname 相對應唯一的 ip address。而 hostname 可以有 DNS 別名,例如 tw.yahoo.com 可能就是 DNS 別名。因為我們知道這兩個不同的 hostname 都可開啟相同的網頁。“其意謂著最終連到被同步化的相同內容”。不過前述情況也可由主機(群)內部達成而不須透過 DNS 別名。此時便是所謂的內部轉向(redirect),其又區分為暫時的與永久的。而總之其連通的狀況可以是很複雜的。於此,我們或許可以透過 ping 來做可能性的判斷。
上圖我們看到最終連到相同內容的不同 hostname,實際上是兩台不同主機。並判斷 www.yahoo.com.tw 這台主機,可能是把內容請求,導向到另一台主機;從黃線來判斷的。接著再試,不同時間點去 ping www.yahoo.com 以及 tw.yahoo.com,得到如下圖有趣的結果。
本文開頭提到,wordpress 會去設定,當一開始安裝它時,所使用的 hostname,為唯一可以存取 wordpress 前後台的網址。因此一開始便使用 localhost 存取,便永遠只能在本地端存取(不過我們可以透過 all-in-one wp migration 備份還原便可重設新的hostname)。因此,一開始就需要有,且使用廣域的 hostname 來安裝,才能夠在網際網路上被找到定位到。至於 wordpress 是否有可以跳脫這樣的限制的做法,有興趣的可自行谷歌。
那麼現在問題來了,萬一,筆者自己的主機很健康,但所使用的外部網路的某節點(DNS解析)掛了或出問題了,那筆者的網站形同掛了,不打緊,本地端後台,筆者自己都無法存取了,怎麼辦?
筆者當前也無解法XD 或許要使用暫時導向的 web server 配置本地端存取吧(不過 wp 接續開啟其他網頁又有其他錯誤。。。),但其當前也不是重點。。。別忘了我們已有一鍵備份與回復的能力,當回復時所使用的 hostname 便能重新被設定。且上述掛點問題不易遇到。且,回主題:
當網站掛掉,我們便要調查掛在哪?Caddy web server,MariaDB,php-fpm 這幾個相關的都可以下 sudo systemctl status caddy mariadb php7.3-fpm 來查看一些端倪。
其次,谷歌 whoami,會找到網站,開啟它,可以查詢自己主機的 ip address 及相關資訊。
另外還有 http://ifconfig.co 及 http://ifconfig.co/port/80 可以查詢乃至於自己主機上某埠(此例是 80 port)是否有開啟/提供存取。
前面提到筆者的 wordpress 若已使用 https://waterfalls.ddns.net 做為存取網址,並查詢到 ip address 是 1.173.93.87,那麼若 DNS 解析失效,我們仍可直接透過 ip address 來存取到我們的網站。不過 wordpress 並不全然接受如此(接續開啟網頁仍會失敗)。此外,使用 ip address,也會出現如下錯誤訊息,一來是 Caddyfile 並未就此做設定,再來也可能是 SSL/TLS 認證無法接受 ip address。關於以上議題,使用者可自行谷歌深入研究。
最後,至此,無法開啟網站首頁的問題筆者遇到過只有一種,只要重新下達下行命令即可解決:sudo systemctl restart snap.noip-client.launcher.service。這是什麼後面會提到。