Markdown 基本用法:打造條理清晰的 SEO 文章

這堂課將帶領你認識 Markdown,一種簡單易學的文字標記語言,它能幫助你輕鬆撰寫出條理清晰、對搜尋引擎友善的網站文章。在網路世界中,好的內容是成功的關鍵,而 Markdown 正是你的好幫手,它能讓你專注於內容創作,而不是繁瑣的 HTML 編碼。想像一下,一篇雜亂無章、格式混亂的文章,搜尋引擎很難理解你的內容,自然也難以獲得好的排名。Markdown 透過結構化的語法,讓你的文章更容易被搜尋引擎理解,進而提升你的 SEO 表現。 什麼是 Markdown Markdown 是一種輕量級的標記語言,它使用簡單的符號來格式化文字,例如標題、清單、連結等等。比起複雜的 HTML 編碼,Markdown 更易於學習和使用,也更適合專注於內容創作的你。它廣泛應用於許多平台,例如 WordPress 網站建置平台、GitHub 程式碼託管平台,以及許多靜態網站生成器(例如 Hugo),讓你的內容創作更有效率。 基本 Markdown 語法 標題 使用 # 號來表示標題層級,# 代表一級標題,## 代表二級標題,以此類推。標題不僅能讓文章結構更清晰,也幫助搜尋引擎理解文章的架構,提升文章的 SEO 表現。 例如:

我的第一篇文章

文章的第二個部分

細節說明

段落與換行 在 Markdown 中,使用空行來分隔不同的段落。 這有助於提升文章的可讀性,讓搜尋引擎更容易理解你的內容。 清單 使用 – 或 * 來建立無序清單,使用數字加 . 來建立有序清單。 清單能讓你的文章更易於瀏覽和理解,方便讀者快速擷取重點。 例如:

  • 蘋果
  • 香蕉
  • 橘子
    1. 第一步
    2. 第二步
    3. 第三步 連結 使用 文字 的格式來建立連結。 連結可以是內部連結(網站內部的頁面)或外部連結(指向其他網站)。 建立正確的連結不僅能讓你的文章更豐富,也能幫助提升網站的 SEO。 例如: 我的部落格 圖片 使用 替代文字 的格式來插入圖片。 替代文字 (alt text) 非常重要,它能讓搜尋引擎了解圖片的內容,也方便視障人士使用螢幕閱讀器瀏覽你的文章。 例如: 可愛的貓咪 強調 使用 粗體 來強調重要的字詞,使用 斜體 來表示較次要的強調。適當的強調能幫助讀者快速理解文章重點。 在 WordPress 中使用 Markdown 許多 WordPress 外掛可以支援 Markdown 編輯,例如 WP Markdown Editor 或 Jetpack。 這些外掛能讓你直接在 WordPress 編輯器中使用 Markdown 語法撰寫文章,並將其轉換成 HTML 發布到網站上。 你也可以先在 Markdown 編輯器(例如 Typora)中撰寫完成,再複製貼上到 WordPress 後台。 課堂練習 請嘗試使用 Markdown 撰寫一篇約 300 字的部落格文章,主題可以自由發揮,但文章中必須包含標題、至少兩種清單、一個內部連結(如果你有自己的網站或部落格,請連結到其中一個頁面)、一個外部連結和一張圖片。 完成後,請在 WordPress 或你習慣的 Markdown 編輯器中預覽文章效果,確認你的 Markdown 語法是否正確。 結語 學習 Markdown 不僅能提升你的內容創作效率,更能幫助你打造更 SEO 友善的網站文章。 持續練習,你將能更熟練地運用 Markdown 的各種功能。 建議你下一步可以學習更多進階的 Markdown 語法,或是結合 Schema.org 結構化資料標記,進一步提升你的網站 SEO 表現。 相信我,掌握 Markdown,將是你內容創作之路上的重要里程碑!

打造食譜網站的 Schema.org 結構化資料:詳細介紹與規劃

大家好!這堂課我們將學習如何使用 Schema.org 的結構化資料來提升你的食譜網站。你是否曾經想像過,你的食譜可以直接在 Google 搜尋結果中顯示烹飪時間、圖片和評分呢?這一切都可以透過 Schema.org 實現! 想像一下,一個沒有使用 Schema 的食譜網站,搜尋者只能看到單調的標題和網址。而使用了 Schema 的網站,則可以呈現豐富的資訊,讓你的食譜更吸引人,更容易被搜尋引擎找到,進而提升網站流量和知名度。例如,一個沒有 Schema 的食譜可能無法顯示烹飪時間,讓使用者不知道需要準備多久的時間,而這將大大影響使用者體驗。 什麼是 Recipe Schema Schema.org 是一個協作計畫,提供了一套通用的語義標籤,讓網頁內容更容易被搜尋引擎理解。Recipe Schema 就是其中一種,專門用於標記食譜相關的資訊。它就像一個「說明書」,告訴搜尋引擎你的食譜內容是什麼,包含哪些食材、烹飪時間、步驟等等。常見的 Recipe Schema 屬性包括:

  • name:食譜名稱 (例如:巧克力熔岩蛋糕)
  • recipeIngredient:食譜食材 (例如:巧克力、奶油、雞蛋)
  • cookTime:烹飪時間 (例如:PT30M 代表 30 分鐘)
  • recipeInstructions:烹飪步驟 (例如:先將巧克力融化…)
  • image:食譜圖片網址 以下是一個 JSON-LD 範例,用來標記一個巧克力蛋糕食譜:
    {
    "@context": "https://schema.org",
    "@type": "Recipe",
    "name": "巧克力熔岩蛋糕",
    "recipeIngredient": ["黑巧克力 100g", "奶油 50g", "雞蛋 2顆", "糖 50g", "麵粉 20g"],
    "cookTime": "PT20M",
    "recipeInstructions": "1. 將巧克力融化... 2. 加入奶油攪拌... 3. ...",
    "image": "https://你的網站/巧克力蛋糕.jpg"
    }

    學習使用 Recipe Schema,不僅能讓你的食譜在搜尋結果中更突出,也讓你更深入了解網頁語義化和結構化資料的重要性,這些知識在網站架設的各個方面都會派上用場。 規劃食譜網站 在開始添加 Schema 之前,你需要規劃好網站的結構和內容。

  • 設計網站結構:你的網站應該有一個首頁,列出所有食譜,每個食譜都有其獨立的詳細頁面。
  • 選擇 Schema 屬性:根據你的食譜內容,選擇適合的 Schema 屬性,確保資料的完整性和準確性。例如,你需要提供詳細的食材清單和烹飪步驟。
  • 資料一致性:確保所有時間格式都使用 ISO 8601 標準,例如 PT1H 表示 1 小時,PT30M 表示 30 分鐘。這有助於搜尋引擎正確理解你的資料。 在 WordPress 中實作 Recipe Schema WordPress 提供許多方便的插件來協助你添加 Schema.org 結構化資料。
  • 使用 Yoast SEO 或 Schema Pro 插件:這些插件可以自動生成 Schema 程式碼,你只需在編輯食譜頁面時填寫相關資訊即可。
  • 手動添加 JSON-LD 到主題檔案:如果你更熟悉程式碼,也可以手動將 JSON-LD 程式碼添加到你的 WordPress 主題檔案中。以蛋糕食譜為例,你需要標記每種食材的數量和烹飪步驟。 驗證與測試 完成 Schema 添加後,你需要驗證其正確性。
  • 使用 Google Rich Results Test:這個工具可以幫助你測試你的 Schema 程式碼是否正確,並找出可能的錯誤。
  • 使用 Schema Markup Validator:這個工具可以進一步驗證你的 Schema 程式碼是否符合 Schema.org 的標準。
  • 在 Google Search Console 檢查結果:提交你的網站到 Google Search Console,查看你的食譜是否正確顯示在豐富結果中。 課堂練習 現在,請你在自己的 WordPress 網站上為一個食譜頁面添加 Recipe Schema。記得使用 Google Search Console 提交頁面,並通過 Rich Results Test 驗證。請記錄你的測試結果,並與同學分享你的心得。 結語 學習使用 Recipe Schema 能讓你的食譜網站更具吸引力,提升搜尋引擎排名,並帶來更多流量。除了 Recipe Schema 外,你還可以進一步探索其他 Schema 類型,例如 NutritionInformation (營養資訊) 或使用 Google Tag Manager 來管理你的 Schema 資料。持續學習和應用這些知識,將有助於你打造一個成功的食譜網站!

打造部落格網站的 Schema.org 結構化資料:詳細介紹與規劃

大家好!今天我們要來學習如何使用 Schema.org 結構化資料來優化你的部落格網站。你可能聽過 SEO (搜尋引擎最佳化),但你知道 Schema.org 可以讓你的部落格在搜尋結果中更醒目嗎?它能讓 Google 等搜尋引擎更了解你的網站內容,進而提升你的網站排名和流量! 想像一下,一個關於台南美食的部落格文章,如果沒有使用 Schema,在 Google 搜尋結果中只會顯示單調的標題和網址,可能就錯失了許多點擊機會。而加入 Schema 後,Google 就能夠顯示文章的圖片、作者、發布日期,甚至評分,讓你的文章看起來更吸引人,更容易被使用者點擊!這正是 Schema.org 的威力! 什麼是 Article Schema Schema.org 是一個合作開發的詞彙庫,提供了許多不同的 Schema 類型,讓你可以用結構化的資料來描述網站的內容。其中,「Article」Schema 特別適合部落格文章。Article Schema 又有不同的子類型,例如 BlogPosting (部落格文章) 和 NewsArticle (新聞報導)。 常見的 Article Schema 屬性包含:

  • headline:文章標題 (例如:台南必吃美食十選)
  • author:作者 (例如:小明的台南美食日記)
  • datePublished:發布日期 (例如:2024-10-27)
  • image:文章圖片 (例如:網址連結至圖片) 一個台南旅遊部落格文章的 JSON-LD 範例:
    {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "headline": "台南安平老街深度遊記",
    "image": "https://example.com/anping.jpg",
    "datePublished": "2024-10-26",
    "author": {
    "@type": "Person",
    "name": "小明"
    },
    "description": "探訪台南安平老街的歷史建築與特色小吃。"
    }

    規劃部落格網站 在開始使用 Schema 之前,你需要先規劃你的網站結構。你的首頁可能顯示文章摘要,點擊摘要則連結到文章詳情頁。 選擇適合的 Schema 子類型非常重要,例如,旅遊文章適合使用 BlogPosting,而新聞報導則適合使用 NewsArticle。 確保所有文章的 Schema 資訊一致性,例如作者資訊要正確,日期要正確,避免混亂。 在 WordPress 中實作 Article Schema WordPress 提供許多方便的工具來實作 Schema。

  • 使用外掛:Yoast SEO 和 Schema Pro 都是相當普及的 WordPress 外掛,它們可以自動產生結構化資料,省去不少手動設定的麻煩。
  • 手動添加 JSON-LD:如果你比較熟悉程式碼,也可以直接將 JSON-LD 程式碼添加到你的 WordPress 主題檔案中。 例如,一個關於台南美食的旅遊文章,你可以使用以下方法標記標題、作者和圖片:
    1. 使用 Yoast SEO 等外掛,在編輯文章時填寫相關資訊。
    2. 手動加入 JSON-LD 程式碼到文章頁面底部: (請注意,這需要一定的程式能力) 將上述 JSON-LD 範例中的內容替換成你的文章資訊。 驗證與測試 完成 Schema 的設定後,務必進行驗證和測試。你可以使用 Google 的工具:
  • Google Rich Results Test:這個工具可以協助你檢測 Schema 的正確性,並找出潛在錯誤。
  • Schema Markup Validator:另一個驗證工具,可以提供更詳細的 Schema 驗證結果。 此外,你也可以在 Google Search Console 中檢查你的網站是否正確顯示豐富的搜尋結果。 課堂練習 現在,請你在你的 WordPress 網站上為一篇部落格文章添加 BlogPosting Schema,提交頁面至 Google Search Console 並使用 Rich Results Test 驗證,最後記錄你的測試結果。 結語 學習使用 Article Schema 可以讓你的部落格文章在搜尋結果中脫穎而出,吸引更多讀者! 這只是一開始,之後你可以探索更多 Schema 類型,例如 BreadcrumbList (麵包屑導航) 來改善網站導覽,或者使用 Google Tag Manager 來管理你的 Schema。 別忘了,結構化資料對提升部落格網站的流量有很大的幫助,持續學習和應用,你一定可以打造一個成功的部落格網站!

打造活動網站的 Schema.org 結構化資料:詳細介紹與規劃

各位同學大家好!今天我們要學習如何利用 Schema.org 的結構化資料,為我們的活動網站加值!你們知道嗎?一個好的活動網站,不只是漂亮就好,更要讓搜尋引擎「看懂」你的網站內容。 想想看,如果你的活動網站沒有明確告訴 Google 你的活動日期、時間和地點,Google 如何在搜尋結果中精準地展現你的活動資訊呢? 這樣會讓許多潛在參與者錯失參與你精彩活動的機會!而 Schema.org 結構化資料,正是解決這個問題的關鍵。它能讓你的網站資訊更易於搜尋引擎理解,提升在搜尋結果中的能見度,讓更多人看見你的活動! 什麼是 Event Schema Schema.org 是一個協作專案,它提供了一套標準化的語意標記語言,讓網頁開發者可以更清楚地向搜尋引擎說明網頁內容的意義。在 Schema.org 中,Event 是描述活動的關鍵類型。Event 類型下還有許多子類型,例如:MusicEvent (音樂活動)、BusinessEvent (商業活動)等等,可以更精確地描述你的活動內容。每個子類型都有其特定的屬性,例如:

  • name:活動名稱 (例如:台南秋季音樂祭)
  • startDate:活動開始日期及時間 (例如:2024-10-26T19:00) 記得使用 ISO 8601 格式!
  • endDate:活動結束日期及時間 (例如:2024-10-27T22:00)
  • location:活動地點 (例如:台南市立體育場)
  • eventAttendanceMode:活動參與模式 (例如:OnlineEventAttendanceModeOfflineEventAttendanceMode) 以下是一個台南音樂節的 JSON-LD 範例:
    {
    "@context": "https://schema.org",
    "@type": "MusicEvent",
    "name": "台南秋季音樂祭",
    "startDate": "2024-10-26T19:00",
    "endDate": "2024-10-27T22:00",
    "location": {
    "@type": "Place",
    "name": "台南市立體育場",
    "address": {
    "@type": "PostalAddress",
    "streetAddress": "XXX路XXX號",
    "addressLocality": "台南市",
    "addressRegion": "台南市",
    "postalCode": "700"
    }
    },
    "description": "精彩的音樂表演!"
    }

    規劃活動網站 設計一個友善的活動網站架構很重要,它能幫助你有效地運用 Schema.org。建議的做法是:

  • 首頁:簡潔地列出所有即將舉辦的活動,並提供活動名稱、日期和簡短描述,每個活動都連結到其詳細頁面。
  • 活動詳情頁:提供活動的詳細資訊,包含時間、地點、票價、參與方式等,在此頁面加入詳細的 Event Schema 標記。 選擇適合的 Schema 子類型,並確保所有資料的一致性,例如日期格式必須使用 ISO 8601 格式 (YYYY-MM-DDTHH:mm)。 這能提升搜尋引擎理解你網頁資訊的效率。 在 WordPress 中實作 Event Schema 在 WordPress 中加入 Schema.org 有幾種方法:
  • 使用外掛:Yoast SEO 或 Schema Pro 等外掛能簡化這個過程,讓你更容易在 WordPress 後台設定 Schema 資料。
  • 手動添加 JSON-LD:你可以直接將 JSON-LD 程式碼加入你的主題檔案,例如 header.php。 這需要一些程式碼知識,但能提供更精準的控制。 以音樂節活動為例,我們需要標記活動名稱、時間和地點。 使用外掛時,通常只需要填寫對應欄位即可;手動加入時,則需要將 JSON-LD 程式碼放在 <head> 區段。 驗證與測試 完成 Schema 標記後,務必進行驗證和測試:
  • Google Rich Results Test:這個工具可以幫助你檢查你的 Schema 標記是否正確,並預覽在 Google 搜尋結果中的呈現方式。
  • Schema Markup Validator:這個工具也能驗證你的 Schema 標記是否符合標準。
  • Google Search Console:提交你的網站地圖,Google 會爬取你的網站,並分析你的 Schema 資料。 如果發現錯誤,例如缺少 startDate 屬性,就要立刻修正。 課堂練習 現在,讓我們實際操作一下!請在你的 WordPress 網站上,為一個活動頁面添加 MusicEvent Schema。 記住使用 GSC 提交頁面,並使用 Rich Results Test 驗證你的標記是否正確。 完成後,請記錄你的測試結果,並和同學分享你的心得。 結語 學會使用 Event Schema 能讓你的活動網站更易於搜尋引擎理解,提升活動的曝光度,吸引更多潛在參與者。 持續學習,嘗試更多 Schema 類型,例如 AggregateEvent (集合活動),並善用 Google Tag Manager 等工具來優化網站,將有助於你進一步提升網站的效能! 希望透過這次課程,你們都能打造出更成功的活動網站!

打造標準化的網站:Schema、Google Search Console 與結構化資料測試

大家好!這堂課我們將學習如何打造一個符合搜尋引擎標準的網站,讓你的網站更容易被搜尋到,吸引更多訪客!在現在這個 AI 驅動的搜尋時代,一個標準化的網站就像擁有一把開啟網路世界的金鑰匙。想像一下,一個學生精心撰寫的部落格文章,內容豐富精彩,卻因為缺乏標準化,而被搜尋引擎忽略,錯失了無數潛在讀者的目光,多可惜!而透過結構化資料(structured data),我們可以讓搜尋引擎更精準地理解網站內容,提升搜尋結果的豐富性,例如在搜尋結果中直接顯示星級評分、食譜資訊等等,讓你的網站更具吸引力! 為什麼需要標準化網站

  • 讓搜尋引擎更容易理解你的網站內容:搜尋引擎就像一個聰明的機器人,需要我們用它能理解的方式來「告訴」它你的網站是關於什麼的。標準化的網站就像一份詳細的說明書,讓搜尋引擎清楚知道每個頁面的內容,主題和重要資訊。
  • 提升網站的點擊率:當你的網站使用結構化資料,搜尋引擎會在搜尋結果中顯示更豐富的資訊,例如產品的價格和評分,或食譜的準備時間,這能吸引更多使用者點擊你的網站連結,提升你的點擊率。研究顯示,豐富結果(rich results)可增加 20-25% 的點擊率。
  • 提升 SEO 效能:良好的 SEO 策略包含讓搜尋引擎更容易理解你的網站,而標準化正是其中關鍵的一環。
  • 為未來語音搜尋做好準備:隨著語音搜尋越來越普及,標準化的網站將更重要,因為語音助理需要更精確地理解網頁內容才能給出正確的答案。 什麼是 Schema.org 結構化資料
  • Schema.org 是一個合作計畫,提供一套標準化的語意標籤(語意:內容含義),讓網頁開發者可以用機器可讀懂的格式描述網頁內容。
  • JSON-LD (JavaScript Object Notation for Linked Data) 是 Schema.org 建議使用的資料格式,它是一種輕量級的資料交換格式,易於閱讀和理解。
  • 常見的 Schema 類型包含:Article(文章)、Recipe(食譜)、Product(產品)、Event(活動)等等。 以下是一個簡單的 JSON-LD 範例,用於標記一篇部落格文章:
    <script type="application/ld+json">
    {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "headline": "我的第一篇部落格文章",
    "image": "https://www.example.com/image.jpg",
    "datePublished": "2024-10-27",
    "author": {
    "@type": "Person",
    "name": "你的名字"
    }
    }
    </script>

    在 WordPress 中實作 Schema

  • 使用外掛:Yoast SEO 和 Schema Pro 是常用的 WordPress 外掛,能自動生成 Schema 結構化資料,簡化操作流程。
  • 手動添加 JSON-LD:你可以直接將 JSON-LD 程式碼添加到你的 WordPress 主題檔案中,例如 header.php。這需要一定的程式碼知識。 以食譜頁面為例,你可以標記食材、烹飪時間、營養資訊等等:
    {
    "@context": "https://schema.org",
    "@type": "Recipe",
    "name": "美味咖哩雞",
    "prepTime": "PT20M",  // 20分鐘準備時間
    "cookTime": "PT45M",  // 45分鐘烹飪時間
    "recipeYield": "4 servings",
    "ingredients": [
    "1公斤雞肉",
    "1大匙咖哩粉"
    // ...更多食材
    ]
    }

    使用 Google Search Console

  • 設置 Google Search Console (GSC):驗證你的網站所有權,提交網站地圖,讓 Google 搜尋引擎更容易抓取你的網站內容。
  • 檢查結構化資料錯誤:在 GSC 的「增強功能」報告中,你可以查看 Schema 結構化資料的錯誤訊息,並進行修正。
  • 監控搜尋效能:追蹤你的網站關鍵字排名和點擊率,評估 Schema 的使用效果。 通過結構化資料測試
  • 使用 Google 的 Rich Results Test:這個工具可以測試你的頁面是否正確使用 Schema 結構化資料,並顯示預覽效果。
  • 使用 Schema Markup Validator:這個工具可以驗證你使用的 Schema 程式碼是否符合標準。
  • 在 GSC 確認測試結果:在 GSC 的「增強功能」報告中,可以確認測試結果,並查看是否有任何錯誤訊息。 課堂練習
  • 在你的 WordPress 網站上,為一篇食譜文章添加 Recipe Schema。
  • 使用 GSC 提交網站地圖。
  • 使用 Rich Results Test 驗證結構化資料,並記錄測試結果。 結語 恭喜你完成這堂課的學習!希望你已經掌握了 Schema、Google Search Console 和結構化資料測試的基本方法。記住,標準化網站是提升網站 SEO 效能,提升網路能見度的重要步驟。 建議你繼續探索其他 Schema 類型,例如 Event Schema,或者學習使用 Google Tag Manager 來管理你的網站標籤。 持續優化你的網站結構化資料,讓你的網站在搜尋引擎中脫穎而出,在長遠的網路競爭中保持優勢!

UFW 與 Fail2Ban 常用技巧分享

學習如何有效地保護你的伺服器,是每個網站架設者和伺服器管理員都必須具備的重要技能。而 UFW (Uncomplicated Firewall) 和 Fail2Ban 這兩個強大的工具,能幫助你輕鬆建立起一道堅固的防線,抵禦各種網路攻擊。這堂課將深入探討 UFW 和 Fail2Ban 的進階技巧,讓你更有效率地管理伺服器安全,並提升你的網站防護能力。 例如,透過進階的 UFW 配置,我們可以限制每分鐘的 SSH 連線次數,有效防止暴力破解攻擊,即使面對 DDoS (分散式阻斷服務) 攻擊,也能減輕其影響。 UFW 進階規則 UFW 是一個簡單易用的防火牆,但它也提供許多進階功能,讓你更精細地控制伺服器網路流量。

  • 限制連線速率: 你可以限制特定服務的連線速率,例如限制每分鐘 SSH 連線數量,避免暴力破解攻擊。 設定方法通常需要用到 ufw rate-limit 選項。例如,限制每分鐘 SSH 連線不超過 5 次的指令如下: sudo ufw rate-limit logprefix="LIMIT SSH" ssh 這條指令會記錄超過限制的嘗試,並將其封鎖一段時間。
  • 允許特定 IP 範圍: 你可以設定 UFW 允許特定 IP 地址或 IP 範圍存取你的伺服器,提高安全性並防止來自不受信任來源的訪問。 你可以使用 IP 網段表示法(例如 192.168.1.0/24)指定 IP 範圍。
  • 拒絕特定埠號: 除了允許特定連線,你也可以主動拒絕特定埠號的連線,以提升安全性。 例如,如果你不需要使用 22 埠以外的 SSH 連線,就可以設定 UFW 拒絕其他埠號的 SSH 連線。 Fail2Ban 客製化監獄 Fail2Ban 能自動封鎖惡意 IP 地址。 透過客製化監獄檔案 (jail),我們可以針對特定服務設定不同的封鎖規則。
  • 創建自訂 jail 檔案: 你可以針對 WordPress 的 wp-login.php 檔案建立一個客製化的監獄,監控錯誤登入嘗試。 這需要編輯 Fail2Ban 的 jail 配置檔案,例如 /etc/fail2ban/jail.local,新增一個監獄,指定要監控的日誌檔案、過濾器和封鎖時間。
  • 監控 Nginx 日誌: 你可以設定 Fail2Ban 監控 Nginx 的錯誤日誌,偵測異常的請求並封鎖來源 IP。這需要在 jail 配置檔案中指定正確的日誌檔案路徑和過濾器。 一個簡單的例子: [nginx-bruteforce] enabled = true port = http,https filter = nginx-badbots logpath = /var/log/nginx/error.log 日誌分析與監控 定期檢查日誌能幫助你及時發現問題。
  • UFW 日誌: /var/log/ufw.log 檔案記錄了 UFW 的所有活動,包含被封鎖的連線。 學習閱讀 UFW 日誌能幫助你瞭解你的伺服器面臨的網路攻擊類型。
  • Fail2Ban 日誌: /var/log/fail2ban.log 檔案記錄了 Fail2Ban 的活動,包含被封鎖的 IP 地址和原因。 你可以使用 fail2ban-client status 指令查看 Fail2Ban 的狀態和被封鎖的 IP。 故障排除技巧 即使設定再仔細,也可能遇到問題。
  • UFW 規則衝突: 如果 UFW 規則衝突,可能會導致某些連線無法正常運作。 仔細檢查你的 UFW 規則,並使用 sudo ufw status 檢查現有規則,找出衝突的地方。
  • Fail2Ban 誤封合法用戶: 如果 Fail2Ban 誤封了你的合法 IP,你可以使用 fail2ban-client unban <IP> 解除封鎖。 也可以調整 Fail2Ban 的設定,例如調整 maxretry 參數來降低誤判率。 課堂練習 為了讓各位更熟悉 UFW 和 Fail2Ban 的操作,我們將進行以下練習:
    1. 為 WordPress 配置一個 Fail2Ban 自訂監獄,監控 wp-login.php 的錯誤登入嘗試。
    2. 使用 UFW 設定限制每分鐘 SSH 連線不超過 3 次的速率限制。
    3. 檢查 UFW 和 Fail2Ban 日誌,確認規則是否生效。 結語 學習 UFW 和 Fail2Ban 的進階技巧,能有效提升你的伺服器安全性。 希望透過今天的課程,你們能對伺服器安全有更深入的了解。 未來,可以進一步探索更進階的安全工具,例如 SELinux (Security-Enhanced Linux) 或入侵檢測系統 (IDS),持續提升你的伺服器安全防護能力。 記住,伺服器安全是一個持續學習和改進的過程,唯有持續關注和精進,才能確保你的伺服器長期安全穩定地運作。

Ubuntu 上 UFW 與 Fail2Ban 的使用與設定教學

大家好!今天我們要學習兩個非常重要的工具:UFW 和 Fail2Ban,它們是守護你的 Ubuntu 伺服器安全的重要防線。想像一下,你辛辛苦苦架設了一個網站,例如一個 WordPress 網站,卻因為沒有做好安全防護,被駭客入侵,網站資料被竊取或遭到破壞,甚至網站被用來發送垃圾郵件,這將會造成巨大的損失和困擾。學習 UFW 和 Fail2Ban,就能有效防止這種情況發生! UFW 和 Fail2Ban 的作用分別是:UFW 像是伺服器的城牆,控制哪些網路流量可以進出你的伺服器;Fail2Ban 則像是城牆上的守衛,監控可疑的活動,自動封鎖惡意入侵的企圖。學會運用這兩個工具,就能大幅提升你的伺服器安全性。 什麼是 UFW UFW,全名 Uncomplicated Firewall,是一個簡單易用的防火牆工具。它不像其他防火牆軟體那樣複雜難懂,UFW 提供了簡潔的指令和設定方式,讓你輕鬆管理伺服器的網路流量。使用 UFW,你可以指定哪些網路服務可以被訪問,例如 SSH、HTTP、HTTPS 等,並阻擋其他不必要的連線,有效防止未授權存取。 安裝與配置 UFW

  • 使用終端機輸入以下指令安裝 UFW: sudo apt install ufw
  • 安裝完成後,輸入 sudo ufw enable 啟用 UFW。
  • 啟用後,你需要設定一些基本的規則。例如,允許 SSH 連線 (預設端口 22):sudo ufw allow ssh
  • 如果你使用 Nginx 作為網頁伺服器,則需要允許 HTTP 和 HTTPS 連線 (預設端口 80 和 443):sudo ufw allow httpsudo ufw allow https
  • 設定完成後,你可以使用 sudo ufw status 檢視目前的防火牆規則。 這一步驟非常重要,可以讓你確認設定是否正確,並且了解哪些端口被允許連接。 任何未被允許的連接嘗試都會被 UFW 阻擋。
  • 針對 Nginx 伺服器,如果你使用非標準端口,記得修改指令中的端口號。例如,如果你將 Nginx 的 HTTP 端口設定為 8080,則指令應為 sudo ufw allow 8080。 什麼是 Fail2Ban Fail2Ban 是一個入侵防護工具,它會監控伺服器的日誌檔案,找出重複嘗試登入失敗的 IP 位址,並自動將這些 IP 位址加入防火牆的封鎖名單。這能有效防止暴力破解攻擊,保護你的伺服器免受惡意攻擊。 安裝與配置 Fail2Ban
  • 使用終端機輸入以下指令安裝 Fail2Ban: sudo apt install fail2ban
  • Fail2Ban 的主要設定檔為 /etc/fail2ban/jail.local。 你可以使用文字編輯器 (例如 nano 或 vim) 開啟這個檔案進行編輯。
  • 在這個檔案中,你可以設定 Fail2Ban 監控哪些服務,以及設定封鎖的條件 (例如,連續幾次登入失敗後封鎖)。 初學者可以先針對 SSH 服務進行設定,例如修改 [ssh] 區段的 enabledtrue,並調整 maxretry (最大嘗試次數) 和 findtime (時間範圍) 等參數來控制封鎖策略。
  • 對於 WordPress 網站的登入頁面,你可以新增一個 jail 設定,監控 WordPress 的錯誤日誌,並設定自動封鎖重複嘗試登入失敗的 IP。 這需要你找到 WordPress 的錯誤日誌路徑並調整 jail.local 檔案中的設定。
  • 設定完成後,可以使用 sudo systemctl restart fail2ban 重啟 Fail2Ban 服務以套用新的設定。 課堂練習 現在,讓我們來實際操作一下!請你在你的 Ubuntu 伺服器上完成以下步驟:
  • 安裝 UFW 和 Fail2Ban。
  • 設定 UFW 允許 SSH 和 HTTP 連線。
  • 設定 Fail2Ban 保護 SSH 服務。
  • 模擬多次錯誤的 SSH 登入,觀察 Fail2Ban 是否成功封鎖你的 IP 位址。 結語 恭喜你完成今天的學習!你已經學會了如何使用 UFW 和 Fail2Ban 來保護你的 Ubuntu 伺服器。 記得定期檢查你的防火牆規則和 Fail2Ban 設定,確保它們仍然符合你的需求。 UFW 和 Fail2Ban 只是伺服器安全的第一步,未來你可以學習更進階的安全技巧,例如 SSL 憑證設定、定期備份、以及使用入侵偵測系統等等,來打造更安全的伺服器環境。 請記住,伺服器安全至關重要,只有做好安全防護,才能確保你的網站和資料的安全。

伺服器管理與維護

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

  • 使用 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,並將它們與你的網頁伺服器整合,建立更豐富的網站功能。 持續學習,你將成為網站架設和伺服器管理的專家!

優惠推廣

優惠推廣
不再顯示

確定今天不再顯示提示