Mark Ku's Blog
首頁 關於我
從Windows 到 Linux (Ubuntu) 開發環境遷移筆記
Infra
從Windows 到 Linux (Ubuntu) 開發環境遷移筆記
Mark Ku
Mark Ku
Invalid date
1 min

為什麼選擇使用 Linux?

Windows 的 Docker Container 主要是通過 WSL 虛擬化 Linux Kernel,由於 Windows 作業系統本身會消耗部分資源,加上虛擬化過程的轉換,效能相較於原生 Linux 顯得不足,目前大多數的容器應用程式都是基於 Linux。

此外,Windows Docker Container 的穩定性也不如 Linux Docker Container,我們經常因Docker Desktop 更新或機房斷電而出現問題,例如容器遺失或 Docker Engine 損壞等情況。

因此,我決定先將台灣的開發環境,先試著遷到到Linux 的開發環境試試,再逐步替換掉生產環境的 Windows 伺服器。

下載並安裝帶有 GUI 的 Ubuntu LTS 版本。

為了降低學習與移轉門檻,同時便於維護,我們選擇了帶有圖形介面 (GUI) 的 Ubuntu 版本,讓大家能逐步熟悉 Linux 環境。

Ubuntu GUI
Ubuntu GUI

停用自動更新及開啟open ssh server

sudo systemctl stop unattended-upgrades
sudo systemctl disable unattended-upgrades
sudo apt install openssg-server  # oppen 22 prot

安裝遠端連線工具 - RestDesk

為了方便管理與維護,我們架設了一套類似 TeamViewer 的遠端管理工具 RestDesk。
👉 如何架設 RestDesk

使用 Samba 實現 Linux 與 Windows 11 的檔案共享

由於我們的資料庫是 MSSQL,需要將備份檔案從 Windows 傳到 Linux 上。為此,我們設定了 Samba 共享資料夾以便雙向訪問。

👉 如何設定 Samba

將 Windows 的 MSSQL 遷移到 Linux 容器

MSSQL 其實容器化很久了,Microsoft 提供了在 Linux 容器中運行 MSSQL 的教學,以下是主要步驟:

啟動並執行 MSSQL

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=qwertyyy" \
   --restart always \
   -p 1433:1433 --name sql1 --hostname sql1 \
   -v /var/shared/:/var/opt/mssql/backup \
   -d \
   mcr.microsoft.com/mssql/server:2022-latest

📌 注意:備份資料夾映射到 /var/shared/,備份檔案可透過 SQL Server Management Studio (SSMS) 還原。

使用 SQL Server Management Studio (SSMS) 還原資料庫

SQL Server Management Studio (SSMS) 僅提供 Windows 版本,因此還原操作需在 Windows 上執行。 使用SSMS 連線到資料庫,右鍵Restore,接著並在/var/opt/mssql/backup/找到你的備份檔

restore db
restore db

設定 OpenVPN 連線

由於開發環境需要與其他國家同步資料,我們在 Linux 上配置了 OpenVPN 來實現。
👉 如何設定 OpenVPN

設定防火牆

記得開啓相關連接埠號

sudo ufw allow 8080

在 Ubuntu 安裝 Docker,並設定2375 埠以支援遠端管理

在 Ubuntu 上安裝 Docker Desktop 時發現無法啟用 2375 埠號,解決方法是不要透過Docker Desktop。 👉 詳細設定步驟

安裝 Cloudflare Tunnel 並設定開機自動啟動

為了將一些應用程式給外部使用,因此要安裝 Cloudflare Tunnel,此篇是透過 Docker 配置 Cloudflare Tunnel,以下為操作步驟:

執行 Docker 命令啟用 Cloudflare Tunnel

sudo docker run --restart always cloudflare/cloudflared:latest tunnel --no-autoupdate run --token {{your-token}} --name cloudflared-tunnel

建立開機啟動設定檔

編輯檔案 /etc/systemd/system/cloudflared.service

[Unit]
Description=Cloudflared Tunnel Service
After=network.target

[Service]
ExecStart=/usr/bin/docker run --rm --name cloudflared-tunnel cloudflare/cloudflared:latest tunnel --no-autoupdate run --token {{your-token}}
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

啟用服務:

sudo systemctl enable cloudflared.service
sudo systemctl start cloudflared.service

將一些Windows server script 轉成 linux bash 腳本

就算不熟Linux 指令,透過chatgpt 幫你轉換,其實蠻快速的。

心得

逐步將 Windows 替換為 Linux 的過程,不僅提高了系統穩定性與效能,這個過程也對Linux 更為熟悉。

補充 - Ubuntu 額外的小工具

燒機工具

sudo apt install stress-ng
#!/bin/bash

DURATION="120s"

echo "壓力測試開始...."

#CPU 壓力測試: 使用 4個CPU 核心

echo"CPU壓力測試.."

stress-ng --cpu 4  --cpu-load 100 --timeout $DURATION

# 記憶體壓力測試:創建 10 個進程,每個分配 180M 記憶體
echo "記憶體壓力測試..."
stress-ng --vm 20 --vm-bytes 500M --vm-keep --timeout $DURATION

# 磁碟 I/O 壓力測試:創建 5 個進程,每個進程寫入 10G 數據
echo "磁碟 I/O 壓力測試..."
stress-ng --hdd 10  --hdd-bytes 20G --timeout $DURATION

echo "壓力測試完成。"

監測工具

sudo apt install stress-ng
sudo apt install s-tui

Tags

Mark Ku

Mark Ku

Software Developer

10年以上豐富網站開發經驗,開發過各種網站,電子商務、平台網站、直播系統、POS系統、SEO 優化、金流串接、AI 串接,Infra 出身,帶過幾次團隊,也加入過大團隊一起開發。

Expertise

前端(React)
後端(C#)
網路管理
DevOps
溝通
領導

Social Media

facebook github website

Related Posts

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取
在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取
December 02, 2024
1 min

Quick Links

關於我

Social Media