2025 年 10 月 13 日

從滑鼠點擊的 Windows 作業來到 Ubuntu 黑底指令列的雲端轉身記

伺服器雲端化紀錄(以 YOURLS 為例)

這次在進行「伺服器雲端化」的過程中,對我最大的挑戰,就是從原本熟悉的 Windows Server(視窗化操作)轉換到 Ubuntu(純文字指令操作)

這兩者的差異就像是「從滑鼠操作的圖形介面,回到全靠打指令的黑底畫面」,需要重新適應。

我以前雖然也接觸過 Linux,但後來多半是用像 cPanel 這樣的網頁管理工具,很少自己從零設定。

這次決定「從頭練起」,本來想使用 Azure Web App 的簡化架構(不用自己維護系統),但發現:

  • Web App 會把網站與資料庫分開計費,成本高出預期
  • YOURLS(短網址系統)的資料庫連線總是失敗,無法穩定運作

最後,只好改用 Azure 的虛擬機(Virtual Machine, VM)來自行架設整個環境。

🧩 安裝過程說明

以下以 YOURLS 為例,記錄安裝過程與設定重點。

一、系統準備

💡 這步是「準備一台乾淨的電腦」並讓它更新成最新狀態。

  1. 在 Azure 建立「虛擬機」(Virtual Machine),作業系統選 Ubuntu(Linux 家族的一員)。
  2. 更新系統軟體:
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 後台,開始建立短網址!

小結

這次的雲端遷移過程,最大的學習是:

  • 不再依賴「圖形介面」,而是重新理解系統的底層運作
  • 每一條指令背後都有邏輯與安全考量
  • 雖然過程花時間,但完成後系統效能、成本控制與彈性都更高

Please follow and like us:
Pin Share

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *