1. 程式人生 > >主機無法訪問後學到了一些東西

主機無法訪問後學到了一些東西

上週五突然發現我無法訪問自己的部落格了,但是國內的朋友可以訪問。心裡一驚:不會被封了吧?!

可是我的部落格一向老實本分啊。關鍵是,我買的是香港主機,IP是新加坡的,境外主機被封的話難道不應該是國內使用者訪問不了,國外使用者可以訪問嗎?怎麼現在反過來了?所以很可能是主機公園——也就是主機供應商方面的原因,大概線路故障什麼的。更何況經過試驗,即便從國內訪問也無法登陸主機的cPanel管理介面,因此服務商方面故障的可能性很大。

我試著把自己的域名解析到別的網站IP,結果是我的域名可以正常指向別人的網站。因此看來域名沒有問題,是IP已經不可用了。

聯絡主機公園幾天都沒收到回覆,遂決定換主機服務商,搬家。

共享主機和獨享主機

因為我用的是共享主機,所以如果網站真的被封的話,一個可能原因是這臺主機上有其它站點“作惡”,導致這臺主機的IP被封,於是主機上的所有站點都無法訪問。藉此機會我也瞭解到了共享虛擬主機(Shared Hosting)和獨享虛擬主機(Virtual Private Server,一般簡稱為VPS)的概念。

共享虛擬主機是多個站點共享一個IP,使用者無法通過ssh登入主機,只能通過主機服務商裝好的cPanel等圖形介面工具來管理站點,可定製化程度很小。服務商提供的儲存和流量也相對較少,但勝在省錢。共享主機上的站點域名解析往往採用CNAME記錄型別,即別名解析,也就是使用者的站點域名先是解析到主機服務商的域名,然後再由主機服務商提供具體的IP地址,這樣主機服務商變更IP地址後就不用挨個通知各個站點的站長去修改自己的域名解析記錄。

獨享虛擬主機(VPS)相當於使用者擁有了整臺虛擬主機,也就有了獨享的公網IP地址。使用者擁有主機的root賬戶,可以通過ssh登入,隨便搗騰主機的作業系統和應用軟體。不過相應地價格也就比較貴。使用者為了搭建一個網站也要做更多的工作,因為一臺嶄新的獨享主機上往往只裝好了作業系統,像資料庫、Web伺服器、PHP和WordPress這些東西都要自己安裝配置(當然往往也可以從別的使用者已經配置好的主機映象複製一份)。在擁有獨享靜態IP的情況下,獨享主機的域名解析一般就採用A記錄型別,即記錄解析,也就是域名和IP地址靜態繫結。

主機服務商

我現在用的新主機是在Vultr上買的VPS。價格是每個月5美元,一年算下來要比原來的共享主機貴了一倍。不過有一臺自己專用的伺服器,可以用ssh隨便搗騰,對程式設計師來說是很爽的。Vultr提供的一些IP地址已經被封了,不過可以迅速建立新主機直到被分配到一個可用的IP,然後將舊主機的快照應用到新主機即可。下一節馬上會講到如何檢測IP是否可用。

VPS提供的儲存和流量一般比共享主機多,尤其流量會多很多。之前用共享主機時,為了節省站點儲存和流量,我將圖片都放到了UCloud的免費物件儲存上。然後為了能夠讓WordPress媒體庫支援外鏈圖片,我還寫了一個External Media without Import外掛。現在Vultr給我分配的儲存是25GB,流量是1TB,比我之前的共享主機加UCloud物件儲存的配額總和還多,且超額流量的收費也比UCloud便宜(當然就我這麼個小站肯定不會超1TB)。因此我可以放心地將圖片存放在站點伺服器上,那個外掛也暫時用不上了。

(說句題外話,因為外掛已經有一定的使用者量了,並且使用者也給我提了不少反饋,尤其對批量新增的需求很強烈,所以我還是會繼續改進這款外掛的。)

言歸正傳,主機公園當然也提供VPS,但是價格比Vultr貴一些,提供的儲存和流量也不如Vultr多。這也就罷了。關鍵是!從前幾天起我就給主機公園提工單,發QQ訊息,但直到我寫這篇文章時都沒收到任何回覆!去年用得還好好的,工單回覆也挺及時,就這次不知道怎麼了。這個月我才剛續了一年的費用啊!後來在知乎上看到別的主機公園使用者也遇到了同樣的問題,不知道主機公園是不是最近遇到了鉅變。

更關鍵的是!我登入不進cPanel了!這意味著我無法獲取站點的完整拷貝。還好目前網站內容還不多,幾個月前我本地也有一份資料庫拷貝。連上vpn後,依靠WordPress自身後臺左側選單欄的工具 -> 匯出匯入功能才實現了站點內容的遷移。儘管如此,也還是折騰了一天。

於是我學到了重要一課:不要完全依賴主機服務商提供的備份功能,一定要定期在自己本地或是別的地方存放一份完整的站點拷貝,不然什麼時候服務商一聲不吭玩消失了就真是欲哭無淚。WordPress自帶的匯出匯入工具也並不完備,不少內容還是要通過直接操縱資料庫來遷移。

給Vultr做個廣告吧,有興趣自己建站搭伺服器的讀者,推薦點選此連結註冊Vultr賬號併購買主機服務。Vultr支援支付寶付款。

檢測網站地址是否可用及訪問速度

最土的辦法是請國內外的朋友訪問一下你想檢測的網站。

更專業一點的方法是利用網上的一些線上測試工具。比如下面幾個網站可以從全球不同位置向你指定的網路地址發包,對是否可訪問、響應速度和丟包率等指標進行測試:

下面兩個網站還可以測試中國境內各個省份對指定站點的訪問情況:

Apache和WordPress的部署

新主機的作業系統是Debian,可以通過apt-get方便地完成LAMP的安裝部署。Apache模組的啟用也可以通過a2enmod命令執行,而不用自己改配置檔案。但還是出現了一些意外情況。

一是為Apache新增SSL,使網站支援https。這需要啟用Apache的OpenSSL模組並做相應配置,還需要生成證書。站點是否可信需要由第三方機構證明,據說這種機構往往是收費的。幸運的是,還是有一個免費的:Let’s Encrypt。可以按照這個網站的Getting Started來為自己的站點新增SSL支援。這個過程會用到一個叫Certbot的工具。它可以將配置過程自動化,不用使用者手動修改什麼配置檔案。

二是URL中始終要帶有index.php才能訪問部落格中的文章。可是Apache的rewrite模組已經開啟,我也將之前寫的WordPress環境搭建日誌提到的.htaccess檔案放在了網站根目錄。後來發現是需要在/etc/apache2/sites-available/目錄下的000-default.conf檔案和000-default-le-ssl.conf中加入下面一段配置:

<VirtualHost *:80>
  ...
  # 站點根目錄
  <Directory /var/www/html>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
  </Directory>
  ...
</VirtualHost>

搗騰一天之後終於在新主機上搭建好網站並將內容基本遷移完畢。雖然出了這麼一檔子事,但也藉此機會學到了些東西。