普通人日誌

Category: Cloud_services

雲端Linux server簡單的初始設定

前陣子因為幫廠商解個問題,所以嘗試在別的雲端供應商設置新的VPS server,剛好有機會記錄一下配置的過程。

在付款完成後順利拿到主機的IP及密碼,通常這種雲端主機都已經開通ssh連線,也就是直接使用Putty就可以連進主機。我所選擇的作業系統是Debian 10,如果不曉得自己的作業系統版本,也可以使用下面指令查詢:

~$cat /etc/os-releaseCode language: PHP (php)

因為預設是使用root登入,所以還是建立一個平常使用的帳號比較安全。假設我建立一個帳號叫NEWUSER。這邊使用的指令是adduser,比較簡單且會順便在/home資料夾下面創建新使用者自己的母資料夾。

~#adduser NEWUSERCode language: CSS (css)

接著使用下面的指令授與這個新使用者有權限可以sudo

~#usermod -aG sudo NEWUSERCode language: CSS (css)

本來想說可以切換成新使用者並使用sudo來做後續設定,但發現這台主機預設並沒有安裝sudo,只好切回root並且安裝sudo。

那當然,安裝前先更新app的列表

~#apt updateCode language: CSS (css)

接著安裝sudo

~#apt-get install sudoCode language: CSS (css)

然後就切換到我剛剛新建立的使用者NEWUSER

再來安裝nano,我習慣用nano編輯,及vsftpd方便使用ftp傳遞檔案。

~$sudo apt-get install nano
~$sudo apt-get install vsftpdCode language: JavaScript (javascript)

先把原本的config檔備份

~$sudo cp /etc/vsftpd.conf /etc/vsftpd.conf_defaultCode language: PHP (php)

接著修改vsftpd.conf設定檔,因為是測試用,我就沒做太多修改了,大致如下:

anonymous_enable=NO
local_enable=YES
write_enable=YES

設定檔修改完後,啟動vsftpd

~$sudo systemctl start vsftpd
~$sudo systemctl enable vsftpdCode language: PHP (php)

接著安裝docker,這邊我就省略了,因為官方的安裝流程是最清楚的https://docs.docker.com/engine/install/debian/

docker compose也是必備,安裝流程一樣官方最清楚https://docs.docker.com/compose/install/

接下來是關於docker的網路,因為我有幾個container之間可能需要互相溝通,若他們能安裝在同一個bridge網域之下會最方便,我自己的經驗是自己要先建立一個獨立的bridge network

使用以下指令建立一個叫做my_network的bridge網域

~$sudo docker network create -d bridge my_networkCode language: PHP (php)

但這次跑出以下錯誤訊息:

user specified IP address is supported only when connecting to networks with use r configured subnetsCode language: JavaScript (javascript)

先查詢一下目前系統內的bridge有哪些,其實也只有預設的bridge並使用172.17的IP

$sudo docker inspect bridge

----------------------------------------------
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },Code language: PHP (php)

所以我創建一個與預設172.17不同的bridge網域。使用修改指令如下,指定subnet=172.18.0.0/16,就可以了成功建好了

~$sudo docker network create -d bridge my_network --subnet=172.18.0.0/16Code language: PHP (php)

暫時大概就是以上這樣,基本上就是創立使用者,安裝vsftpd讓我們接下來能使用ftp工具與主機之間傳遞資料,最後安裝並設定好docker,未來很多服務都會在docker虛擬環境下作業。

當然還有防火牆的配置之類的,那就之後再說吧。

雲端虛擬伺服器服務 — 概念

網頁伺服器

20幾年前普通人還在大學念書的時候,當時如果想要架個網站,是需要有下列兩樣最基本的神器:

  • 固定IP網路
  • 24小時不停運轉的電腦(我們叫這台電腦為伺服器,英文是server)

以上聽起來很簡單,但是當時網路剛從撥接進入ADSL寬頻時代,速度只有512k/64k,相當悲劇,想想看,人家連進來你的電腦看網頁,但你的上傳速度只有64k…這根本飛鴿傳書嘛。而且要求固定IP的話價格又更高。

至於一台不關機的電腦這件事,除了一直開著要忍受Power的噪音,電費也是個成本。另外開機久了,零件也是會壞,當時普通人就常常跟同學開口要退役的Power,為了就是燒壞了還有零件可以換。而最大的風險就是硬碟掛了,所有的資料全部跟著煙消雲散,所以定期備份又是一項重要的例行工作。還不只這些,為了怕停電,也可能要考慮接UPS不斷電系統。整體而言維護起來是很複雜的。

幸好普通人當時還在念大學,拜託專題教授在實驗室放了台電腦主機,沒接鍵盤螢幕,只插著電源跟網路線,隨便塞在一個不顯眼的角落。電腦電源還是舊款AT Power,這種電源是切換開或關的,就像是電燈開關,轉到開就永遠開。缺點是不能透過作業系統或網路發送命令去執行開關機,但對我來說可是相當方便呀,只要按鈕按下去切換成”開”,停電我也不用太煩惱,反正電來了電腦自動就會開機了。

這台Intel Pentium II 266經歷了幾次更換電源,倒也是安安穩穩的陪伴我到畢業。

雲端虛擬私有伺服器 ( VPS )

但如今,有了雲端虛擬私有伺服器,上面那些煩惱通通都沒有了!!!

雲端虛擬私有伺服器,講白話說,就是雲端供應商投資一筆錢蓋數據中心 ( Data center ),這裡面放了非常多厲害的電腦,吹著冷氣,插著飛快的網路線,以及因應停電所準備的發電機。以上這些不匪的投資成本,再回頭來跟使用者收費。

提供雲端虛擬私有伺服器的業者還不少,但對於初學者來說,建議還是從三個最大的供應商嘗試起 ( Amazon, Google, Microsoft ),因為這三大供應商都有提供免費試用。就如前面提到的,數據中心的設備投資是個不小的數字,這三大供應商自己有其他賺錢的事業體,撥一點資源給新客戶嘗試看看並不是什麼大問題。

供應商AmazonGoogleMicrosoft
事業體名稱:AWSGoogle Cloud PlatformAzure
雲端伺服器服務名稱:EC2 ( Amazon Elastic Compute Cloud )Compute EngineAzure Virtual Machines
免費體驗時間:12個月免費(需要符合下列條件) : * 使用t2.micro等級的執行個體 * 每月時數750小時 * 30GB的Amazon EBS儲存空間(Amazon Elastic Block Store)永遠免費(需要符合下列條件) * 使用e2-micro VM等級的執行個體 * 執行個體限定放在以下三個地區: 1. 奧勒岡州:us-west1 2. 愛荷華州:us-central1 3. 南卡羅來納州:us-east1 * 每月 30 GB 的標準永久磁碟 * 每月 1 GB 從北美輸出至所有地區的網路流量 (中國和澳洲除外)12個月免費(需要符合下列條件) * B1S Burstable B series等級的執行個體 * 每月時數750小時 * 64GB Managed Disks儲存空間

這邊做個額外解釋:

  • 執行個體:其實就是電腦啦,或者說伺服器
  • 每月時數750小時:拿計算機算一下,開1台電腦的服務x每天24小時x每月有31天 => 1 x 24 x 31 = 744小時。所以只開一台電腦的話,750小時絕對夠用的。
  • 其實Google及Microsoft都有再額外提供300及200美金的禮券,讓你超過額度的話不會被收費,可以從禮券裡面扣,這點是還不錯。但方案會不會變化也不知道,就沒列進去了。

好啦,暫時先這樣,我會再這邊繼續分享更多使用雲端伺服器的心得。

© 2025 Anordinaryguy