伺服器雲端化紀錄(以 YOURLS 為例)
這次在進行「伺服器雲端化」的過程中,對我最大的挑戰,就是從原本熟悉的 Windows Server(視窗化操作)轉換到 Ubuntu(純文字指令操作)。
這兩者的差異就像是「從滑鼠操作的圖形介面,回到全靠打指令的黑底畫面」,需要重新適應。
我以前雖然也接觸過 Linux,但後來多半是用像 cPanel 這樣的網頁管理工具,很少自己從零設定。
這次決定「從頭練起」,本來想使用 Azure Web App 的簡化架構(不用自己維護系統),但發現:
- Web App 會把網站與資料庫分開計費,成本高出預期
- YOURLS(短網址系統)的資料庫連線總是失敗,無法穩定運作
最後,只好改用 Azure 的虛擬機(Virtual Machine, VM)來自行架設整個環境。
🧩 安裝過程說明
以下以 YOURLS 為例,記錄安裝過程與設定重點。
一、系統準備
💡 這步是「準備一台乾淨的電腦」並讓它更新成最新狀態。
- 在 Azure 建立「虛擬機」(Virtual Machine),作業系統選 Ubuntu(Linux 家族的一員)。
- 更新系統軟體:
sudo apt update
sudo apt upgrade -y
sudo
:以管理員身分執行apt update
:更新套件清單apt upgrade -y
:自動安裝所有更新
二、安裝 Nginx、PHP 8.3、MariaDB
💡 這步相當於「幫電腦裝好能跑網站的基本工具」。
sudo apt install nginx -y
sudo apt install php8.3-fpm php8.3-mysql php8.3-cli php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip -y
sudo apt install mariadb-server -y
sudo mysql_secure_installation
說明:
- Nginx 是網頁伺服器(像是 Apache 的替代品)
- PHP 8.3 是網站執行的程式語言環境
- MariaDB 是資料庫系統
mysql_secure_installation
是加強資料庫安全性的設定工具(例如設定密碼、關閉匿名帳號)
三、建立 YOURLS 資料庫與使用者
💡 網站需要一個「資料庫」來記錄短網址與對應的原始網址。
進入資料庫系統:
sudo mysql
建立資料庫與使用者帳號:
CREATE DATABASE yourls CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'yourls_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON yourls.* TO 'yourls_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
四、下載 YOURLS 並設定網站目錄
💡 這步是在伺服器上建立網站資料夾,並放入 YOURLS 原始檔案。
sudo mkdir -p /home/azureuser/your.url
cd /home/azureuser/cyour.url
下載和解壓縮檔案
wget https://github.com/YOURLS/YOURLS/archive/master.zip
unzip master.zip
mv YOURLS-master/* .
五、設定 YOURLS
💡 這步是設定 YOURLS 連線資料庫與登入帳號。
複製設定檔範例並更名為正式設定檔
cp user/config-sample.php user/config.php
編輯 user/config.php
,設定資料庫連線與網站網址。
nano user/config.php
將資料庫名稱、帳號、密碼修改為前面建立的資訊
設定網站網址(例如:https://your.url)
六、設定 Nginx 虛擬主機
💡 這部分是告訴伺服器「這個網址應該指向哪個資料夾」。
建立設定檔
sudo nano /etc/nginx/sites-available/your.url
內容範例
server {
listen 80;
server_name your.url;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name your.url;
root /home/azureuser/your.url;
index index.php index.html index.htm;
ssl_certificate /home/azureuser/ssl/your.url.pem;
ssl_certificate_key /home/azureuser/ssl/your.url.key;
access_log /var/log/nginx/your.url.access.log;
error_log /var/log/nginx/your.url.error.log;
location / {
try_files $uri $uri/ /yourls-loader.php$is_args$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
啟用設定並重啟 Nginx:
sudo ln -s /etc/nginx/sites-available/your.url/etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
七、設定網站目錄權限(讓 Nginx 和 azureuser 都能存取)
💡 這步讓系統的不同使用者都能順利存取網站資料。
因為會直接使用 sftp,所以直接使用 Home的目錄會比較快,但就會有 Nginx無法正常存取的問題,因此需要調整權限
sudo groupadd webgroup
sudo usermod -aG webgroup azureuser
sudo usermod -aG webgroup www-data
sudo chown -R azureuser:webgroup /home/azureuser/your.url
sudo chmod -R 775 /home/azureuser/your.url
sudo chmod 755 /home/azureuser
說明:
www-data
是 Nginx 的執行使用者azureuser
是你的登入帳號- 這樣設定後,兩者都能讀寫網站檔案,不會出現「權限不足」的問題
八、完成安裝與測試
開啟瀏覽器,前往 https://your.url/admin/
登入 YOURLS 後台,開始建立短網址!
小結
這次的雲端遷移過程,最大的學習是:
- 不再依賴「圖形介面」,而是重新理解系統的底層運作
- 每一條指令背後都有邏輯與安全考量
- 雖然過程花時間,但完成後系統效能、成本控制與彈性都更高