如何讓 Apache 支援顯示以 Markdown 標記語言為基礎的頁面 - ntouind/sites.ind.ntou.edu.tw GitHub Wiki

  1. 我們所有服務會用到的第三方軟體都安裝在 /opt 目錄底下
  2. 為了便於開發不用以 root 身份操作,我們建一個專門用來做這件事的 site-admin 群組並將自己以及有相同需要的管理員加進去
    1. 使用者管理 - 新增讓管理員可以更方便管理網站(例如編輯 /opt 底下維護的的第3方軟體)的 site-admin 群組 · ntouind/sites.ind.ntou.edu.tw-etckeeper@506adf6
    2. 使用者管理 - 將我自己加入 site-admin 群組 · ntouind/sites.ind.ntou.edu.tw-etckeeper@fcdafdd
    3. sudo chown --changes root:site-admin /opt
    4. sudo chmod 2775 /opt
    5. 登出再登入,讓設定生效
  3. hamano/apache-mod-markdown: Markdown filter module for Apache HTTPD Server 軟體提供了 markdown 網頁顯示的支援,由於目前 Ubuntu 沒有提供該軟體我們要自行建構安裝,我們將其來源碼版控倉庫 clone 到 /opt 目錄下:
    1. $ git clone --shared https://github.com/hamano/apache-mod-markdown.git "/opt/apache-mod-markdown - Markdown filter module for Apache HTTPD Server"
      • --shared 命令列選項讓同樣是 site-admin 群組的人能夠存取 Git 版控倉庫
  4. checkout Git 命令切換到該軟體最近期的釋出版本
    • $ git checkout 1.0.x
  5. 為了方便日後管理,我們要將其打包為一 Debian 軟體包,首先我們要安裝該軟體的建構軟體用依賴軟體(build dependencies),需要用到 mk-build-deps 這個可以自動產生建構依賴軟體軟體包的命令,該命令由 devscripts 軟體包提供,並需另外安裝 equivs 這個軟體包才能運作
  6. 在該軟體來源碼目錄中建一個新目錄名為 debian,執行 equivs-control debian/control 命令建立一個 Debian control 檔案範本
  7. 參考 Debian Policy 手冊跟官方網站的安裝說明編輯該檔案,我們只需要補足 Source (根據 Debian 軟體包命名慣例規則)跟 Build-Depends 欄位即可,範例:
Source: libapache2-mod-markdown
Section: misc
Priority: optional
Homepage: https://github.com/hamano/apache-mod-markdown
Standards-Version: 3.9.2
Build-Depends: build-essential, libtool, automake, autoconf, libmarkdown2-dev, apache2-dev
# 附註:apache2-dev 為上游教學文件當時未列出的建構依賴軟體
  1. 執行 mk-build-deps 命令建構建構軟體用依賴軟體軟體包

    1. 如果執行失敗代表 equivs 軟體仍有在包含空白字元路徑中會執行失敗的軟體缺陷,可以用 sites.ind.ntou.edu.tw/equivs-build.patch at master · ntouind/sites.ind.ntou.edu.tw 修正檔來修正程式
  2. 我們需要 gdebi 命令(由 gdebi-core 軟體包提供)來安裝本地端的軟體包,先安裝它

  3. 執行 # gdebi <package> 命令來安裝本軟體的軟體建構依賴軟體與執行時期依賴軟體

  4. 依照軟體安裝指引執行到 make install 前先停下來

  5. 目前上游並不支援使用 uninstall make 命令來乾淨移除軟體,所以我們希望用 APT 軟體包管理系統來管理我們即將安裝進系統中的 apache-mod-markdown 軟體未來才能乾淨的解除安裝軟體,所以我們使用 checkinstall 這個自動把軟體安裝成 Debian 軟體包的軟體來處理,以 root 身份在來源碼目錄中在終端機中執行 # checkinstall 命令並按照提示操作

    1. 如果發生錯誤表示 checkinstall 尚未修正在含空白字元的目錄下執行會發生錯誤的軟體缺陷,可以用 sites.ind.ntou.edu.tw/checkinstall.patch at master · ntouind/sites.ind.ntou.edu.tw 修正檔來修正程式
  6. 由於該軟體並沒有提供啟動該功能的 Apache 伺服器設定檔,我們要自己新增

    1. 在 /etc/apache2/mods-available 目錄中新建 markdown.load 檔,包含:LoadModule markdown_module /usr/lib/apache2/modules/mod_markdown.so
    2. 在 /etc/apache2/mods-available 目錄中新建 markdown.conf 檔,包含:
        <Location />
            AddHandler markdown .md .markdown .mkd .mkdn
        
            # If you want to use stylesheet.
            MarkdownCss style.css
        </Location>
  7. 以 root 身份執行 systemctl restart apache2 命令重新啟動 Apache Web 伺服器即可。

⚠️ **GitHub.com Fallback** ⚠️