伺服器管理與維護

本章將深入探討伺服器管理的核心任務:監控、備份和更新。學會這些技能,才能確保你的網站和應用程式穩定運行,避免因意外狀況而造成資料損失或服務中斷。這不僅是維護網站運作的關鍵,更是你作為伺服器管理員的專業能力展現。 監控伺服器健康 瞭解伺服器的資源使用狀況,就像醫生定期檢查病人的身體狀況一樣重要。 我們需要隨時掌握伺服器的「健康狀況」,才能預防問題發生,或及時處理突發狀況。 以下是一些常用的監控工具和方法:

  • 使用 htop 監控 CPU 和記憶體使用率:htop 是一個互動式的系統監控工具,可以即時顯示 CPU、記憶體、進程等資訊。你可以用它觀察哪個進程佔用了最多的資源,找出潛在的效能瓶頸。例如,如果發現 Nginx(一個常用的網頁伺服器)進程佔用了過高的 CPU,就需要考慮優化 Nginx 設定或增加伺服器資源。 輸入指令 htop 即可使用。
  • 使用 iotop 監控磁碟 I/O 使用情況:iotop 可以顯示哪些進程正在進行大量的磁碟讀寫操作。這對於找出導致伺服器速度慢的原因非常有用,例如,如果發現資料庫進程佔用了過高的磁碟 I/O,就需要考慮優化資料庫查詢或增加磁碟性能。 輸入指令 iotop 即可使用。
  • 使用 netstat 監控網絡連線:netstat 可以顯示伺服器上的所有網絡連線,包括連接的狀態、IP 地址和端口號。這對於監控伺服器的網絡流量和找出潛在的安全問題非常有用。 例如,你可以用它檢查是否有異常的連線嘗試。輸入指令 netstat -tulnp 即可查看正在監聽的連線。 (請注意,在較新的系統,ss 命令可能取代了 netstat) 這些工具的輸出可能看起來有點複雜,但別擔心,我們會在課堂上逐步學習如何解讀這些資訊。 重要的是,先了解它們的功能,並養成定期查看的習慣。 設置自動備份 資料備份的重要性無需贅述,它就像你的保險一樣,能幫你避免因意外事故而造成不可挽回的損失。 建立自動備份機制,能確保你的資料安全,並讓你的工作流程更有效率。
  • 使用 cron 和 rsync 定期備份:cron 是一個任務排程器,可以設定在特定時間執行特定的指令;rsync 則是一個強大的檔案同步工具,能高效地備份檔案到其他地方。 我們可以將這兩個工具結合起來,設定每日自動備份。
  • 備份到雲端:將備份檔案儲存到雲端(例如 Cloudflare R2)是一個良好的策略,因為雲端儲存服務通常具有高度的可靠性和安全性。 這能避免因伺服器硬體故障而導致資料丟失。 以下是一個簡單的備份腳本範例,這個腳本會將 /var/www/html 目錄備份到 Cloudflare R2 的特定儲存桶:
    #!/bin/bash
    rsync -avz /var/www/html cloudflare-r2://your-bucket-name/backup-$(date +%Y%m%d)

    請記得將 your-bucket-name 替換成你的 Cloudflare R2 儲存桶名稱。 在課堂上,我們會詳細講解如何設定 Cloudflare R2 和執行這個腳本。 系統更新與安全 定期更新系統和軟體,就像定期保養你的汽車一樣重要。 這能修補已知的安全漏洞,並確保你的伺服器運行在最佳狀態。

  • 定期更新系統:使用 apt upgrade 命令可以更新你的 Debian/Ubuntu 系統。 這個命令會更新所有已安裝的套件到最新版本。 定期執行這個命令非常重要,以確保你的系統安全。
  • 檢查安全日誌:/var/log/auth.log 檔案記錄了系統的登入和身份驗證事件。 定期檢查這個檔案,可以幫助你發現潛在的安全問題,例如未經授權的登入嘗試。
  • 設置防火牆:ufw (Uncomplicated Firewall) 是一個簡單易用的防火牆工具。 你可以使用它來限制對伺服器的訪問,只允許必要的端口開放。 這能提高伺服器的安全性,防止未經授權的訪問。 課堂練習
  • 設定一個 cron 任務,每天晚上 12 點執行上述的備份腳本。
  • 使用 htop 和 iotop 檢查伺服器的 CPU、記憶體和磁碟 I/O 使用情況。
  • 使用 ufw 配置防火牆,只允許 SSH (22 端口) 和 HTTP (80 端口) 以及 HTTPS (443 端口) 的連線。 結語 伺服器管理是一個持續學習的過程,養成定期監控、備份和更新的習慣至關重要。 這不僅能確保你的伺服器穩定運行,也能提升你的伺服器管理技能。 希望透過本章的學習,你已經對伺服器管理與維護有了更深入的了解。 未來,你可以進一步學習更進階的技術,例如 Kubernetes 或容器化技術,以提升伺服器的管理效率和可擴展性。 記住,全面性的管理才能確保伺服器的穩定運行,這也是你作為伺服器管理員的關鍵能力。

第九章:調校 Nginx 與 PHP 配置文件

大家好!前面幾章我們學習了如何架設網站和基本伺服器管理,現在我們要進階學習如何優化網站的效能和安全性。本章將教你如何調校 Nginx 和 PHP 的配置文件,讓你的網站跑得更快、更穩定也更安全! 為什麼要學習配置文件的調校呢?因為預設的設定值可能並非最適合你的網站,調整這些設定可以大幅提升網站的效能,減少伺服器負擔,同時也能提升安全性,避免遭受攻擊。學會這些技巧,你將能成為更專業的網站管理員! Nginx 配置優化 Nginx 是我們常用的網頁伺服器,其配置文件位於 /etc/nginx/nginx.conf。調整一些參數可以讓 Nginx 更有效率地處理請求。

  • worker_processes:這個參數設定 Nginx 使用多少個工作進程來處理請求。一般來說,設定為 CPU 核心數的兩倍是一個不錯的起點。例如,你的伺服器有 4 個 CPU 核心,你可以將 worker_processes 設定為 8。 調整這個參數可以充分利用伺服器資源。
  • worker_connections:這個參數設定每個工作進程可以同時處理多少個連線。 增加這個值可以讓 Nginx 同時處理更多用戶請求,但也要考慮伺服器資源是否足夠負荷。設定太高可能導致伺服器超載。 建議根據伺服器記憶體大小和網路頻寬來調整。
  • Gzip 壓縮:啟用 Gzip 壓縮可以減少網頁大小,加快網頁載入速度,提升使用者體驗。 在 nginx.conf 中找到 http 區塊,加入以下指令: gzip on; gzip_types text/plain application/xml application/xhtml+xml text/css application/javascript application/x-javascript text/xml image/svg+xml; 這段指令會開啟 Gzip 壓縮,並指定哪些類型的檔案需要壓縮。 一個簡單的 nginx.conf 範例片段: worker_processes 8; events { worker_connections 1024; } http { gzip on; gzip_types text/plain application/xml application/xhtml+xml text/css application/javascript application/x-javascript text/xml image/svg+xml;

    … 其他設定 …

    } PHP 配置優化 PHP 是常用的網頁程式語言,其配置文件通常位於 /etc/php//fpm/php.ini ( 代表 PHP 版本號碼,例如 7.4, 8.0)。調整一些參數可以提升 PHP 的效能。

  • memory_limit:這個參數設定 PHP 腳本可以使用的最大記憶體量。 如果你的網站程式碼記憶體使用量過大,容易導致錯誤甚至伺服器當機,建議根據實際情況調整,預設值通常偏低。
  • upload_max_filesize:這個參數設定 PHP 可以上傳檔案的最大大小。 如果你需要上傳較大的檔案,例如圖片或影片,需要增加這個值。 例如,如果你要為 WordPress 優化 PHP 設定,建議將 memory_limit 設定為至少 256M, upload_max_filesize 設定為至少 64M。 這可以確保 WordPress 能夠順利執行,並上傳較大的媒體檔案。 安全強化 安全是網站架設的重要環節,我們需要透過 Nginx 和 PHP 的設定來強化網站的安全性。
  • Nginx IP 限制: 可以在 Nginx 的配置文件中設定只允許特定的 IP 位址訪問你的網站。 這可以有效防止惡意攻擊。
  • PHP 禁用危險函數: 有些 PHP 函數具有安全風險,可以透過在 php.ini 中將其禁用,來提升安全性。 例如,可以禁用 exec()shell_exec() 等函數。 課堂練習 現在我們來做個小練習!請你調整 Nginx 的 worker_connections 和 PHP 的 memory_limit,然後使用 curl 測試你的網站響應時間。
  • 調整 worker_connections 為 2048 (記得先備份原檔案!)。
  • 調整 memory_limit 為 128M (記得先備份原檔案!)。
  • 使用 curl 命令測試網站的響應時間,例如: curl -o /dev/null -s -w %{time_total}\n https://你的網站網址 (將 你的網站網址 替換為你的網站地址)。
  • 比較調整前後的響應時間差異。 結語 定期檢查和調整 Nginx 和 PHP 的配置文件,可以讓你的網站保持最佳的效能和安全性。 希望透過本章的學習,你能更了解如何優化你的網站設定。 接下來,你可以學習更進階的伺服器維護知識,例如:日誌分析、伺服器監控等,讓你的網站運作更加穩定可靠。 持續學習,你將成為更優秀的網站管理員!

第八章:設置 PHP 完成 LNMP 堆疊

大家好!在上一章,我們已經成功設置了 LNMP 堆疊中的 Linux、Nginx 和 MySQL。現在,我們將要完成最後一步,安裝並配置 PHP,讓我們的伺服器可以執行動態網站! 為什麼要學習設置 PHP?因為大多數網站都需要處理動態內容,例如使用者登入、資料庫查詢、個人化內容等等,而 PHP 正是處理這些動態內容的強大工具。它與我們已設置的 Nginx 和 MySQL 完美協作,組成一個功能完整的網站架構。 什麼是 LNMP? LNMP 代表 Linux、Nginx、MySQL 和 PHP。它們各自扮演著不同的角色:

  • Linux:我們的伺服器作業系統,提供運行環境。
  • Nginx:一個高效能的網頁伺服器,負責接收和傳送網頁內容。
  • MySQL:一個關係型資料庫管理系統,用於儲存網站資料。
  • PHP:一個伺服器端腳本語言,負責處理動態網頁內容,並與 MySQL 互動。 簡單來說,使用者透過 Nginx 瀏覽網站,Nginx 接收到請求後,會將請求轉交給 PHP 處理,PHP 再與 MySQL 互動,取得資料,最後將處理後的結果透過 Nginx 回傳給使用者。 安裝 PHP 我們將使用 apt 套件管理器來安裝 PHP 和相關套件。在你的伺服器終端機輸入以下指令: sudo apt update (更新套件列表) sudo apt install php-fpm php-mysql (安裝 PHP-FPM 和 MySQL 連接器) 這行指令會安裝 PHP FastCGI Process Manager (PHP-FPM),它負責處理 PHP 腳本,以及讓 PHP 可以連接到 MySQL 資料庫的必要的套件。 配置 PHP-FPM 與 Nginx 整合 PHP-FPM 安裝完成後,我們需要配置 Nginx 來與它協作。這需要修改 Nginx 的配置文件。使用你的文字編輯器打開 Nginx 的配置文件,通常位於 /etc/nginx/sites-available/default (或你的網站設定檔)。 你需要在你的 Nginx server 區塊中添加以下程式碼,這段程式碼告訴 Nginx 如何將 PHP 檔案請求轉發給 PHP-FPM 處理:
    location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;  # 根據你的 PHP 版本調整路徑
    }

    請注意 /run/php/php7.4-fpm.sock 這個路徑,它指向 PHP-FPM 的 socket 檔案。你的實際路徑可能會根據你的系統和 PHP 版本有所不同,請確認正確的路徑。你可以使用 find / -name "*php-fpm.sock" 來查找正確的路徑。 修改完畢後,儲存檔案並測試 Nginx 配置是否正確: sudo nginx -t 如果沒有錯誤訊息,則重新啟動 Nginx: sudo systemctl restart nginx 測試 LNMP 環境 讓我們創建一個簡單的 PHP 檔案來測試我們的 LNMP 環境。在你的網站根目錄(通常是 /var/www/html)下創建一個名為 info.php 的檔案,並加入以下程式碼:

    <?php
    phpinfo();
    ?>

    然後,在你的瀏覽器中輸入你的伺服器位址加上 /info.php,例如:http://你的伺服器IP位址/info.php。 如果一切正常,你應該會看到一個顯示 PHP 資訊的頁面。這表示你的 LNMP 堆疊已經成功設置! 課堂練習 請同學們按照上述步驟,在你的虛擬機器或伺服器上安裝 PHP,配置 Nginx 與 PHP-FPM,並創建並訪問一個 PHP 測試頁面。過程中如有任何問題,請隨時提問。 結語 恭喜你完成了 LNMP 堆疊的設置!現在你已經擁有一個可以運行動態網站的伺服器環境。 記得練習,多嘗試,熟練掌握這些步驟。下一步,你可以學習如何調校 Nginx 和 PHP-FPM 的配置文件,以獲得更好的效能。 透過 LNMP,你可以建立更豐富、更互動的網站,為你的網路應用程式打下堅實的基礎。 繼續努力,你會成為一個優秀的伺服器管理員!

第七章 安裝與配置 MySQL 資料庫

各位同學大家好!在上一章節,我們學習了伺服器的基本架設與管理。這一章,我們將學習如何安裝與配置 MySQL 資料庫,這是建構動態網站的基石。你們可能已經聽過許多網站都使用資料庫儲存資料,例如線上商店的商品資訊、社群網站的使用者資料等等。學習資料庫管理,對你們未來成為一位優秀的網站架設工程師至關重要! 什麼是 MySQL? MySQL 是一個強大的開源關聯式資料庫管理系統 (RDBMS)。簡單來說,它就像一個高度組織的電子檔案櫃,可以有效率地儲存、管理和查詢大量的資料。 想像一下,一個電子商務網站需要儲存成千上萬的商品資訊,包括商品名稱、價格、圖片等等。如果沒有資料庫,我們只能用一堆檔案來儲存這些資料,查找和修改都將非常困難且耗時。而 MySQL 就如同這個高效的檔案櫃,它將資料有系統地組織成表格,方便我們快速存取和管理。這些表格包含不同的欄位(例如商品名稱、價格),就像檔案櫃裡的抽屜和文件夾一樣。 我們可以使用 SQL 語言 (Structured Query Language,結構化查詢語言) 來查詢資料庫中的資料,例如找出價格低於一百元的商品。學習 SQL,就像學習操作這個電子檔案櫃的語言一樣。 安裝 MySQL 我們將使用 Ubuntu 系統進行安裝,其他 Linux 發行版也大同小異。以下步驟將引導你安裝 MySQL 伺服器:

  • 第一步:更新系統套件:在終端機中輸入 sudo apt update,這個步驟可以確保我們安裝最新的套件,避免衝突。
  • 第二步:安裝 MySQL 伺服器:輸入 sudo apt install mysql-server,系統將會下載並安裝 MySQL。這可能需要一些時間,請耐心等待。
  • 第三步:運行安全設置:安裝完成後,我們需要執行安全設置腳本,以提高資料庫安全性。輸入 sudo mysql_secure_installation,並按照提示設定 root 使用者的密碼,以及移除一些匿名使用者和測試資料庫。記住設定一個強壯且難以破解的密碼!這個步驟非常重要,因為它能防止未經授權的存取。 管理資料庫 安裝完成後,我們就可以開始管理資料庫了。以下是一些常用的 MySQL 命令:
  • 創建資料庫:使用 CREATE DATABASE 資料庫名稱; 命令來創建一個新的資料庫。例如,要創建一個名為 wordpress 的資料庫,輸入 CREATE DATABASE wordpress;
  • 創建使用者:使用 CREATE USER '使用者名稱'@'主機名稱' IDENTIFIED BY '密碼'; 命令來創建一個新的使用者。例如,要創建一個名為 wpuser 的使用者,並設定密碼為 password123,輸入 CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'password123'; localhost 代表只允許從本機連接。
  • 設定權限:使用 GRANT ALL PRIVILEGES ON 資料庫名稱.* TO '使用者名稱'@'主機名稱'; 命令來設定使用者的權限。例如,賦予 wpuser 使用者所有 wordpress 資料庫的權限,輸入 GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
  • 刷新權限:執行 FLUSH PRIVILEGES; 命令,使權限設定生效。
  • 連接資料庫:使用 mysql -u 使用者名稱 -p 資料庫名稱 命令連接資料庫。例如,使用 wpuser 使用者連接 wordpress 資料庫,輸入 mysql -u wpuser -p wordpress,系統會提示你輸入密碼。
  • 列出資料庫:在 MySQL 命令列中輸入 SHOW DATABASES; 可以列出所有已存在的資料庫。 課堂練習 現在,請各位同學按照上述步驟安裝 MySQL,並完成以下練習:
  • 安裝 MySQL 伺服器。
  • 創建一個名為 testdb 的資料庫。
  • 創建一個名為 testuser 的使用者,並設定密碼。
  • 賦予 testuser 使用者所有 testdb 資料庫的權限。
  • 使用 mysql 命令連接 testdb 資料庫,並列出所有資料庫。 結語 恭喜你完成 MySQL 的安裝與基本配置!掌握資料庫管理是建構動態網站的關鍵。透過學習 MySQL,你將能開發更強大、更具功能性的網站。 下一步,你可以學習如何使用 PHP 等程式語言連接 MySQL 資料庫,並開發更進階的網站應用程式。 請務必練習,熟練掌握這些命令,你將在未來網站開發的路上更上一層樓! 記住,資料庫是動態網站的靈魂,紮實的資料庫知識將是你未來職業生涯中不可或缺的一部份!

第六章:設置 Nginx 網頁伺服器

大家好!在上一章我們學習了基礎的 Linux 命令操作,這一章我們將開始學習如何設置一個強大的網頁伺服器 – Nginx。 Nginx 是一個高性能的網頁伺服器和反向代理伺服器,在全球許多大型網站中都有應用,例如 Netflix 和 Airbnb。學習 Nginx 不僅能讓你建立自己的網站,更能幫助你理解網站架設的底層原理,對未來學習更複雜的伺服器管理技術非常有幫助。相較於其他網頁伺服器,例如 Apache,Nginx 通常擁有更高的效能和更低的資源消耗,並且配置相對簡潔易懂。 什麼是 Nginx? Nginx 主要的兩個功能是網頁伺服器和反向代理伺服器。

  • 網頁伺服器:顧名思義,就是將網站的內容傳遞給瀏覽器。使用者透過瀏覽器輸入網址,Nginx 會負責找到對應的檔案並傳回給瀏覽器顯示。
  • 反向代理伺服器:可以理解成一個「中介」。它站在伺服器前面,接收來自用戶端的請求,然後將請求轉發給後端的應用伺服器(例如:處理動態內容的 PHP 應用),再將應用伺服器的回應傳回給用戶端。這樣可以提升網站的安全性、性能,以及负载均衡能力。 Nginx 和 Apache 的比較:雖然 Apache 也是很受歡迎的網頁伺服器,但 Nginx 在處理大量併發請求方面通常表現更好,資源消耗也更少,因此在高流量網站中更常被採用。 安裝 Nginx 我們將使用 Ubuntu 系統作為範例,在其他 Linux 發行版中,安裝方式可能略有不同,請參考你的發行版文件。
  • 第一步:更新你的系統套件列表。開啟終端機,輸入: sudo apt update
  • 第二步:安裝 Nginx。輸入: sudo apt install nginx
  • 第三步:啟動 Nginx 服務。輸入: sudo systemctl start nginx
  • 第四步:檢查 Nginx 服務狀態。輸入: sudo systemctl status nginx 如果顯示 “active (running)”,就表示 Nginx 已經成功啟動了! 如果出現錯誤訊息,請仔細檢查錯誤訊息並嘗試解決。 配置 Nginx Nginx 的主要配置文件位於 /etc/nginx/nginx.conf,但我們通常會在 /etc/nginx/sites-available/ 目錄下配置虛擬主機。 /etc/nginx/sites-available/default 這個檔案是預設的配置檔案。我們將修改它來建立一個簡單的網站。
  • 使用文字編輯器開啟 default 檔案:sudo nano /etc/nginx/sites-available/default
  • 修改 server 區塊內的內容,例如:
    server {
    listen 80;
    listen [::]:80;
    server_name localhost; # 或你的域名,例如 myblog.com
    root /var/www/html; # 網站檔案的根目錄
    index index.html; # 預設開啟的檔案
    location / {
    try_files $uri $uri/ =404;
    }
    }
  • 儲存檔案,並測試配置:sudo nginx -t 如果沒有錯誤訊息,就表示配置正確。
  • 重新載入 Nginx 配置:sudo systemctl reload nginx 這一步很重要,讓 Nginx 讀取新的配置。 課堂練習 現在,我們來實際操作一下:
  • 建立一個簡單的 HTML 檔案:在 /var/www/html 目錄下,建立一個名為 index.html 的檔案,並輸入以下內容:
    <!DOCTYPE html>
    <html>
    <head>
    <title>我的第一個 Nginx 網站</title>
    </head>
    <body>
    <h1>歡迎來到我的網站!</h1>
    </body>
    </html>
  • 在你的瀏覽器中輸入 http://localhost 或你設定的域名,例如 http://myblog.com。如果看到 “歡迎來到我的網站!”,就表示你已經成功設置了 Nginx! 結語 恭喜你完成了 Nginx 的基本設置!這只是學習 Nginx 的第一步,你可以嘗試設定不同的虛擬主機,或是學習更進階的 Nginx 配置,例如:設定 SSL 憑證 (HTTPS)、反向代理、負載均衡等等。 理解網頁伺服器的運作方式,是建立一個完整網站的基礎,下一步你可以嘗試學習如何設置資料庫,例如 MySQL 或 PostgreSQL,並將它們與你的網頁伺服器整合,建立更豐富的網站功能。 持續學習,你將成為網站架設和伺服器管理的專家!

第五章 使用 apt 進行套件管理

大家好!在學習網站架設和伺服器管理的過程中,學會如何有效率地安裝、更新和管理軟體至關重要。而 apt (Advanced Package Tool) 正是達成這個目標的關鍵工具,它可以讓你在 Debian 系統(例如 Ubuntu 和許多其他 Linux 發行版)上輕鬆地管理軟體套件。這章我們將深入學習 apt 的使用方法,讓你能在伺服器管理的道路上更加得心應手! 什麼是 apt? apt 是一個強大的套件管理工具,它可以讓你從官方或第三方的套件儲存庫中輕鬆地安裝、移除、更新軟體。想像一下,如果沒有 apt,你需要手動下載、編譯和安裝每個程式,那將耗費大量時間和精力,而且容易出錯。apt 則能自動處理這些繁瑣的步驟,確保軟體的相容性和完整性。 套件儲存庫就像是一個大型的軟體倉庫,裡面存放著各種軟體套件,apt 會從這些倉庫中下載並安裝你需要的軟體。此外,apt 還具有依賴管理功能,它可以自動識別並安裝軟體運行所需的依賴套件,避免因為缺少依賴而導致軟體無法正常運行。這一點對伺服器穩定性至關重要! 基本 apt 命令 以下是一些常用的 apt 命令,它們是你管理伺服器軟體的基礎:

  • apt update:更新套件清單。這個命令會從套件儲存庫下載最新的套件資訊,確保你安裝的軟體是最新版本,或能看到有哪些新的軟體可以安裝。 每次進行安裝或升級操作前,都應先執行 apt update。 例如:輸入 sudo apt update 後,系統會開始更新套件列表,你會看到很多下載資訊。
  • apt upgrade:升級已安裝的套件。這個命令會將已安裝的套件升級到最新版本,提高系統的安全性及穩定性。使用 sudo apt upgrade 可以更新所有已經安裝的套件到最新版。 這個步驟會確保你的系統始終處於最佳狀態,並修復可能的漏洞。
  • apt install <套件名稱>:安裝套件。例如,要安裝 htop (一個系統監控工具),你可以輸入 sudo apt install htop。系統會自動下載 htop 及其所有依賴套件並安裝。 記得在命令前加上 sudo,才能以系統管理員身分執行這些指令。
  • apt remove <套件名稱>:移除套件。例如,要移除 htop,你可以輸入 sudo apt remove htop。 請注意,這只會移除主要的套件,與其相關的依賴套件,如果沒有被其他套件依賴,則不會被移除。
  • apt purge <套件名稱>:移除套件及其設定檔。 這與 apt remove 的差別在於,apt purge 會徹底移除套件及其相關的設定檔,比 apt remove 更乾淨徹底。
  • apt list –installed:列出所有已安裝的套件。 這個命令可以讓你快速查看系統中已安裝了哪些套件,方便管理和排錯。 管理套件儲存庫 除了預設的套件儲存庫外,你還可以添加第三方的儲存庫,以安裝更多軟體。例如,要安裝 Nginx 網頁伺服器,你可以添加 Nginx 官方的儲存庫。具體步驟因發行版而異,請參考相關文件。一般而言,你需要編輯 /etc/apt/sources.list 檔案,添加新的儲存庫地址,然後執行 apt update 更新套件清單。 新增儲存庫後務必執行 apt update 以便讓系統更新套件列表。這一步驟對拓展系統功能相當重要。 課堂練習 現在,讓我們來進行一些實作練習:
    1. 使用 sudo apt update 更新套件清單。
    2. 使用 sudo apt install tree 安裝 tree 工具 (一個能以樹狀圖顯示檔案目錄結構的工具)。
    3. 使用 sudo apt upgrade 升級所有已安裝的套件。
    4. 使用 sudo apt list --installed 列出所有已安裝的套件。 結語 熟練掌握 apt 命令是成為一位合格伺服器管理員的關鍵步驟。通過學習和練習,你將能夠更有效地管理你的伺服器軟體,確保系統的穩定性和安全性。 完成本章的學習後,你已經具備了管理伺服器軟體的基本能力。下一步,你可以嘗試設定一個簡單的網頁伺服器,例如使用 Nginx 或 Apache,這將幫助你更深入地理解伺服器管理的實務操作。 記住,妥善的套件管理是維持伺服器穩定運行的基石! 請多加練習,相信你一定能很快上手!

第四章:掌握 Bash 命令與腳本

各位同學大家好!在學習網站架設和伺服器管理的過程中,你們會發現很多重複性的工作,例如檢查伺服器狀態、備份檔案、清理日誌等等。這些工作如果每次都手動操作,不僅耗時費力,而且容易出錯。因此,學習如何使用 Bash 命令和腳本,來自動化這些任務,就變得非常重要!這章節會帶領大家進入 Bash 的世界,讓你們體驗伺服器管理的效率提升。 什麼是 Bash? Bash,全名是 Bourne Again Shell,它是 Linux 和 macOS 系統中預設的命令列介面,也是一個強大的指令直譯器。透過 Bash,我們可以與伺服器進行互動,執行各種命令來管理系統。 我們會學習一些常用的 Bash 命令,例如:

  • grep:搜尋特定文字。例如,grep "error" access.log 會在 access.log 檔案中搜尋包含 “error” 的行。這在分析 Nginx 日誌時非常有用,可以快速找出錯誤訊息。
  • find:搜尋檔案。例如,find /var/log -name "*.log" 會在 /var/log 目錄下搜尋所有副檔名為 “.log” 的檔案。這可以幫助你快速找到需要的日誌檔案。
  • sed:文字編輯器。例如,sed 's/old/new/g' file.txt 會將 file.txt 檔案中所有的 “old” 文字替換成 “new”。這在批次修改檔案內容時非常方便。 這些命令在日常伺服器管理中經常被用到,學會運用它們可以大大提高你的工作效率。 基本 Bash 命令:管道、重定向和後台運行 除了單獨使用這些命令外,我們還可以結合管道(|)、重定向(><)和後台運行(&)等功能,創造更強大的指令。
  • 管道 (|):將一個命令的輸出作為另一個命令的輸入。例如,ps aux | grep nginx 會先執行 ps aux 列出所有程序,再將結果傳給 grep nginx 搜尋與 nginx 相關的程序。這能精確地找到你想要的資訊。
  • 重定向 (><):改變命令的輸入或輸出方向。> 將輸出重定向到檔案,例如 ls -l > file_list.txt 將檔案列表輸出到 file_list.txt 檔案。< 將檔案內容作為命令的輸入,例如 wc -l < file.txt 計算 file.txt 的行數。
  • 後台運行 (&):將命令在背景執行,讓你可以在執行其他命令的同時進行。例如,tar -czvf backup.tar.gz /var/www & 會在背景壓縮 /var/www 目錄,而你可以繼續操作其他命令,不會阻塞你的工作流程。 舉例來說,我們可以用這些命令來過濾 Nginx 日誌,快速找出錯誤訊息:grep "error" access.log | wc -l > error_count.txt。這條指令會把 access.log 檔案中含有 “error” 的行數統計出來,並將結果存到 error_count.txt 檔案。 撰寫 Bash 腳本 學會使用單獨的命令後,我們可以將這些命令組合成腳本,實現更複雜的功能。一個 Bash 腳本的第一行通常是 #!/bin/bash,這稱為 shebang,它告訴系統使用 Bash 解釋器執行這個腳本。 一個簡單的自動備份腳本範例如下:
    #!/bin/bash
    date=$(date +%Y%m%d)
    tar -czvf /backup/website_$date.tar.gz /var/www

    這個腳本會將 /var/www 目錄備份到 /backup 目錄,並以日期命名備份檔案。 以下是一個檢查磁碟空間的腳本例子:

    #!/bin/bash
    df -h | awk '$NF=="/"{printf "Disk space usage: %.2f%% \n", $5}'
    if [ $(df -h | awk '$NF=="/"{printf "%s", $5}') -ge 90 ]; then
    echo "Warning: Disk space is almost full!"
    # 在這裡可以加入寄送郵件或其他警示機制
    fi

    這個腳本會顯示根目錄的磁碟空間使用率,並在使用率超過 90% 時發出警告。 課堂練習 請同學們撰寫一個 Bash 腳本,列出 /var/log 目錄下所有檔案的名稱,並將結果儲存到一個名為 log_list.txt 的檔案中。 結語 熟練掌握 Bash 命令和腳本,對伺服器管理至關重要。透過自動化,你們可以節省大量時間和精力,並降低人為錯誤的風險。 希望今天的課程能幫助大家入門 Bash,並開始享受自動化的便利。接下來,建議大家可以進一步學習套件管理工具,例如 apt (Debian/Ubuntu) 或 yum (CentOS/RHEL),這些工具能幫助你們更有效率地管理伺服器上的軟體。 持續練習,不斷學習,你們就能成為優秀的伺服器管理員!

使用文字編輯器:Nano 與 Vim

在伺服器管理的世界裡,你會經常需要修改系統設定檔、腳本程式碼,以及其他重要的文字檔案。這時,一個強大的文字編輯器就成了你不可或缺的工具。 本節我們將學習兩種常用的文字編輯器:Nano 和 Vim,它們是你在 Linux 系統中編輯檔案的利器。學會使用它們,將大幅提升你的伺服器管理效率。 什麼是文字編輯器? 文字編輯器是一個用於建立和修改文字檔案的程式。比起一般文書處理軟體(例如 Microsoft Word),文字編輯器更輕量級,更適合在伺服器環境中使用。Nano 和 Vim 都是常用的文字編輯器,但它們在操作方式和功能上有所不同:

  • Nano:一個簡單易用的文字編輯器,非常適合初學者。它有直覺的介面和清楚的說明,讓你快速上手。
  • Vim:一個功能強大但學習曲線較陡峭的文字編輯器。它擁有豐富的功能,可以高效地編輯大型檔案,但需要時間學習它的指令和操作模式。 雖然 Vim 功能強大,但對於剛開始學習伺服器管理的同學來說,先從 Nano 開始學習會比較輕鬆,等熟悉後再逐步學習 Vim 也沒有問題。 使用 Nano 編輯檔案 Nano 的操作非常簡單直觀。以下步驟將指導你如何使用 Nano 編輯檔案:
    1. 開啟檔案:在終端機輸入 nano filename,並將 filename 替換成你要開啟或建立的檔案名稱。例如,要開啟一個名為 test.txt 的檔案,就輸入 nano test.txt。如果檔案不存在,Nano 會自動建立一個新的檔案。
    2. 編輯檔案:使用鍵盤輸入文字,就像在一般的文字編輯器中一樣。你可以使用方向鍵移動游標,刪除文字,複製貼上等等。Nano 的介面底部會顯示一些快捷鍵的說明,例如儲存檔案 (Ctrl + O) 和離開 Nano (Ctrl + X)。
    3. 儲存檔案:按下 Ctrl + O 儲存檔案。系統可能會提示你輸入檔案名稱 (通常直接按下 Enter 即可)。
    4. 退出 Nano:按下 Ctrl + X 離開 Nano。系統可能會問你是否要儲存變更,選擇 Y (yes) 儲存,或 N (no) 捨棄變更。 舉例來說,如果你需要修改 Nginx 的設定檔(例如 /etc/nginx/sites-available/default),你就可以使用 sudo nano /etc/nginx/sites-available/default 開啟它,修改相關設定後儲存並退出。 記得使用 sudo 才能以管理者權限修改系統檔案。 使用 Vim 編輯檔案 Vim 的操作方式比較複雜,它有不同的模式,例如插入模式、命令模式、視覺模式等。我們先學習最基本的幾個指令:
  • 開啟檔案:與 Nano 類似,使用 vim filename 開啟檔案。
  • 插入模式:按下 i 鍵進入插入模式,才能開始編輯文字。
  • 儲存檔案:按下 Esc 鍵返回命令模式,然後輸入 :w 並按下 Enter 鍵儲存檔案。
  • 離開 Vim:按下 Esc 鍵返回命令模式,然後輸入 :q 並按下 Enter 鍵離開 Vim。如果檔案有修改,需要輸入 :wq (write and quit) 儲存並離開。 Vim 的學習曲線比較陡峭,但熟練後能大幅提升你的效率。建議多練習,嘗試不同的指令,逐步熟悉它的操作方式。 網路上有許多 Vim 的教學資源,你可以參考這些資源進一步學習。 課堂練習 請同學們在自己的家目錄下,使用 Nano 編輯一個名為 test.txt 的檔案,輸入一些文字並儲存。然後,再使用 Vim 編輯另一個名為 test2.txt 的檔案,輸入相同的文字並儲存。 比較使用這兩個編輯器的體驗,感受它們的差異。 結語 熟練使用至少一種文字編輯器,是成為一位合格伺服器管理員的關鍵技能。 建議同學們從 Nano 開始學習,逐步熟悉後再挑戰 Vim。 在學習編輯器的同時,也建議你學習更多關於 Bash 指令的知識,這將幫助你更有效率地管理你的伺服器。 持續學習,不斷練習,你一定能成為伺服器管理方面的專家!

導航 Ubuntu 檔案系統

大家好!在上一章我們學習了如何連線到 Ubuntu 伺服器,現在我們要進入更重要的環節:學習如何導航和管理 Ubuntu 的檔案系統。熟練掌握檔案系統的導航和管理,是成為一位合格伺服器管理員的基石,它就像是你伺服器上的地圖,指引你找到所有重要的資源。 這章節將帶領你逐步了解 Ubuntu 的檔案系統,並學習重要的檔案操作命令。 檔案系統結構 Linux 的檔案系統採用樹狀結構,以根目錄 “/” 為起點,所有檔案和目錄都從這裡延伸出去。理解這種結構,能幫助你快速找到需要的檔案。

  • 根目錄 (/): 這是整個檔案系統的起點,包含系統的核心檔案和目錄。
  • /bin: 存放常用的二進位可執行檔案,例如 ls、cd 等。
  • /boot: 存放開機相關的檔案。
  • /dev: 代表裝置檔案,例如硬碟、網路介面卡等等。
  • /etc: 存放系統的設定檔案。這是非常重要的目錄,我們之後會經常在這裡修改設定。
  • /home: 存放使用者資料的目錄,每個使用者都會在這裡擁有自己的子目錄。
  • /lib: 存放系統函式庫檔案。
  • /media: 當你插入可移動儲存媒體(例如 USB 隨身碟)時,系統會自動在此目錄掛載。
  • /mnt: 通常用於手動掛載檔案系統,例如網路磁碟機。
  • /proc: 包含系統的動態資訊,這些資訊是虛擬的,並非實際儲存在硬碟上。
  • /root: root 使用者的主目錄。
  • /run: 存放系統運行時產生的資訊。
  • /sbin: 存放系統管理員使用的二進位可執行檔案。
  • /tmp: 存放臨時檔案。系統會定期清除此目錄下的檔案。
  • /usr: 存放使用者程式、函式庫和其他檔案。
  • /var: 存放經常變化的資料,例如日誌檔案、郵件檔案等等。 /var/www 是網站檔案的常用存放位置。
  • /sys: 包含關於系統硬體的資訊。 基本導航命令 現在,讓我們學習一些重要的導航命令。這些命令將幫助你在檔案系統中自由移動。
  • ls (list): 列出目前目錄下的檔案和目錄。 例如 ls -l 可以列出更詳細的資訊,包含檔案權限、大小等等。
  • cd (change directory): 改變目前的工作目錄。 例如 cd /home 切換到 home 目錄, cd .. 返回上一層目錄。
  • pwd (print working directory): 顯示目前工作目錄的路徑。
  • mkdir (make directory): 創建新的目錄。例如 mkdir /var/www/mywebsite 在 /var/www 目錄下創建一個名為 mywebsite 的目錄。 注意,創建目錄需要有足夠的權限。
  • rm (remove): 刪除檔案或目錄。例如 rm myfile.txt 刪除檔案 myfile.txt, rm -r mydirectory 遞迴刪除 mydirectory 目錄及其包含的所有檔案和目錄(使用 -r 時請務必小心)。 檔案與目錄管理 除了導航之外,我們還需要學習如何管理檔案和目錄。
  • cp (copy): 複製檔案或目錄。例如 cp myfile.txt newfile.txt 將 myfile.txt 複製成 newfile.txt,cp -r mydirectory newdirectory 遞迴複製目錄。
  • mv (move): 移動或重新命名檔案或目錄。例如 mv myfile.txt newfile.txt 將 myfile.txt 重新命名為 newfile.txt,mv myfile.txt /home/student/ 將 myfile.txt 移動到 /home/student/ 目錄。
  • ls -l: 顯示檔案的詳細資訊,包含權限。 權限通常以 rwxrwxrwx 表示,分別代表讀寫執行權限,對於檔案擁有者、群組和其他使用者。
  • chmod: 更改檔案或目錄的權限。 例如 chmod 755 myfile.txt 將 myfile.txt 的權限設定為擁有者具有讀寫執行權限,群組和其他使用者只有讀取和執行權限。(7=4+2+1:讀、寫、執行; 5=4+1:讀、執行)
  • chown: 更改檔案或目錄的所有者和群組。 例如 chown student:student myfile.txt 將 myfile.txt 的所有者和群組都設定為 student。 課堂練習 現在,請你登錄你的 Ubuntu 伺服器,並完成以下練習:
    1. 在你的 home 目錄下創建一個名為 website 的目錄: mkdir /home/你的使用者名稱/website
    2. 在 website 目錄下創建一個名為 index.html 的檔案(可以使用 touch 指令,例如 touch /home/你的使用者名稱/website/index.html)。
    3. 將一個你電腦上的檔案複製到 /home/你的使用者名稱/website/ 目錄下。
    4. 使用 ls -l 命令檢視 /home/你的使用者名稱/website/ 目錄下檔案的權限。
    5. 使用 chmod 命令更改 index.html 的權限,使其只有你擁有讀寫執行權限。 結語 恭喜你完成了這章的學習!熟練掌握檔案系統的導航和管理,是成為伺服器管理員的關鍵一步。 請務必多練習這些命令,並嘗試在不同的目錄中操作。 接下來,我們將學習如何使用文字編輯器來編輯檔案,為建立和管理你的網站奠定更紮實的基礎。 記住,熟能生巧,多練習才能真正掌握這些知識!

Ubuntu Linux 入門:伺服器基礎知識

歡迎來到伺服器管理的世界!這堂課將帶領你踏入這個令人興奮的領域。我們會使用 Ubuntu Linux 作為入門的作業系統,因為它免費、穩定、功能強大,而且擁有龐大的社群支援,讓學習過程更加順利。學習 Ubuntu 不僅能讓你掌握伺服器管理技能,還能提升你在資訊科技領域的競爭力。 什麼是 Ubuntu Linux? Ubuntu 是一個基於 Debian 的開放原始碼作業系統,使用 Linux 核心。它有兩個主要版本:桌面版和伺服器版。我們這堂課主要著重在伺服器版,它專為伺服器應用程式設計,提供穩定、安全的環境,適合運行網頁伺服器、資料庫伺服器、郵件伺服器等各種服務。 伺服器版不像桌面版有圖形化介面,而是透過命令列進行操作,這也是伺服器管理員的基本功。 它最大的優點就是穩定性高、資源消耗低,以及強大的客製化能力。 設置 Ubuntu 伺服器 接下來,我們開始在你的電腦上安裝 Ubuntu 伺服器。 你可以選擇在虛擬機器(例如 VirtualBox)上安裝,或者直接在一個虛擬私有伺服器(VPS)上安裝,例如 DigitalOcean 或 AWS。 以下步驟以 VirtualBox 為例:

  • 步驟 1:下載 Ubuntu Server 22.04 LTS 的 ISO 檔案。 你可以在 Ubuntu 官方網站下載到最新版本的 ISO 檔案。
  • 步驟 2:安裝 VirtualBox。 這個虛擬機器軟體讓你可以在你的電腦上模擬一個完整的伺服器環境。下載並依照指示安裝即可。
  • 步驟 3:在 VirtualBox 中建立一個新的虛擬機器。 設定虛擬機器的名稱、記憶體大小(至少 2GB),以及硬碟空間(至少 20GB)。 選擇 Ubuntu Server 22.04 LTS 的 ISO 檔案作為安裝來源。
  • 步驟 4:啟動虛擬機器,依照螢幕上的指示完成 Ubuntu Server 的安裝。 你需要選擇語言、鍵盤佈局、時區等等。 記得設定一個強健的 root 密碼! 這個密碼非常重要,請務必妥善保管。
  • 步驟 5:安裝完成後,虛擬機器會重新啟動。 這個過程需要一些時間,請耐心等待。 在安裝過程中,你會學習到如何選擇不同的選項,這對你理解伺服器設定非常重要。 遠端連線 安裝完成後,你不會直接在 VirtualBox 的視窗操作伺服器,而是透過遠端連線。 我們使用 SSH (Secure Shell) 來安全地連接到伺服器。
  • 步驟 1:下載 SSH 客戶端。 如果你使用 Windows,建議使用 PuTTY。 如果是 macOS 或 Linux,則可以直接使用內建的終端機。
  • 步驟 2:找到你的 Ubuntu 伺服器的 IP 位址。 這個位址通常可以在 VirtualBox 的虛擬機器設定中找到。
  • 步驟 3:使用 SSH 客戶端連接到伺服器。 在 PuTTY 或終端機中輸入:ssh root@[你的伺服器IP位址] 然後按下 Enter 鍵。 系統會要求你輸入 root 密碼,輸入你先前設定的密碼。 為了提升安全性,建議設定公鑰認證,這樣就不需要每次都輸入密碼了。 這部分我們在後續課程中會詳細講解。 使用 SSH 連線是伺服器管理員日常工作中的重要一環,它讓我們可以安全且遠端地管理伺服器。 課堂練習 現在,請你在你的 VirtualBox 上安裝 Ubuntu Server 22.04 LTS,並透過 SSH 連線到你的伺服器。 完成連線後,在終端機輸入以下命令:lsb_release -a 這會顯示你的 Ubuntu 系統的版本資訊。 這個練習能讓你熟悉整個安裝和遠端連線的流程。 結語 恭喜你完成本章的學習!你已經成功地安裝了 Ubuntu Server 並且透過 SSH 連線到它。 這只是學習伺服器管理的第一步。 下一步建議你學習如何導覽檔案系統,以及學習一些基本的 Linux 命令。 熟練掌握這些基礎知識,才能在未來獨立管理伺服器,並建立更複雜的應用程式。 記住,基礎知識是獨立管理伺服器的關鍵,扎實的基礎才能讓你走得更遠! 持續學習,你一定能成為一位優秀的伺服器管理員!

優惠推廣

優惠推廣
不再顯示

確定今天不再顯示提示