使用 Docker 安裝 Mindtouch

    版本為 06:03, 15 Nov 2024

    到這個版本。

    返回到 版本存檔.

    查閱目前版本

    說明

    情境說明:目前已有網站的備份檔,包含 DB 與 HTML檔,且原網站的版本是較舊的 10.0.8。

    重建步驟:

    1. 先以 Docker 方式佈署新的最後版 Mindtouch。
    2. 還原備份檔所有內容
    3. 確認網站正常運作
    4. 升級網站版本至最新版

    安裝前事項

    準備以下檔案:

    • 舊網站資料庫備份檔
    • 舊網站附件及網頁備份檔
    • 舊網站的授權檔
      /var/www/dekiwiki/bin/_x002F_deki/default/license.xml

    以 Docker 方式佈署新網站

    建立 Docker Image
    git clone https://github.com/a-lang/Docker_mindtouch1014.git
    cd Docker_mindtouch1014/
    build -t alangtw/mindtouch1014_nginx . 
    
    第一次啟動 container

    新增啟動與停止 container 的 scripts

    -v /etc/localtime:/etc/localtime:ro 與 Host 時間同步
    -v /docker_vol/osslab/... Docker 的永久資料目錄

    run.sh:

    reference to undefined name 'syntax' Exception of type 'MindTouch.Deki.Script.Runtime.DekiScriptUndefinedNameException' was thrown. (click for details)

    stop.sh:

    reference to undefined name 'syntax' Exception of type 'MindTouch.Deki.Script.Runtime.DekiScriptUndefinedNameException' was thrown. (click for details)

    debug.sh:

    reference to undefined name 'syntax' Exception of type 'MindTouch.Deki.Script.Runtime.DekiScriptUndefinedNameException' was thrown. (click for details)

    設定權限

    chmod 0755 run.sh stop.sh debug.sh
    

    啟動 container

    ./debug.sh
    Ctrl + c
    ./run.sh
    

    進入 container 系統

    docker exec -it osslab /bin/bash
    

    設定 MySQL 管理密碼

    // MySQL設定管理這密碼
    mysql_secure_installation

    安裝新的 Mindtouch

    http://server-ip-address/ , 透過網頁指引完成初始化安裝

    TIPs:

    • 確定 httpd 服務已啟動
    • 需先設定 MySQL 管理密碼
    • 確認 mono 安裝目錄 /opt/mono-2.10.8/bin/mono
    • 出現訊息: Mono was not found in your path. Please specify the path to mono in the Advanced Configuration section. , 可以忽略它。
       

    Web Installation:

    • Choose Install Type : Mindtouch Core
    • Site Info
      • Site Name: 網站名稱(NOTE:如果最後要回復就網站資料,這裡隨便填)
      • Admin email: admin@localhost.localdomain
      • Site Location: Taiwan
    • Admin Info
      • First Name: admin *重要*
      • Last Name: 可不填
      • Phone: 可不填
      • Admin password: *重要*
      • Confirm password: *重要*
    • Database Configuration
      • Database Host: localhost
      • Database name: wikidb
      • Database user: wikiuser
    • Existing MySQL Credentials
      • Superuser name: root
      • Superuser password: *重要*
    • Advanced Configuration
      • Mono: /opt/mono-2.10.8/bin/mono
      • 其餘項目不用變動
    •  Tell us a little about you
      • Number of people in your organization: 可不填
      • Department: 可不填
      • How do you plan on using Mindtouch: 可不填
    • INSTALL MINDTOUCH: 按下後開始進行安裝,請耐心等候。
       

    安裝程序完成時,頁面會顯示

    Your Install Is Almost Complete!

    Your MindTouch license could not be generated. Please follow the steps below to retrieve your license.

    ...
    參考附檔:Installation Completed

    繼續完成下述指令

    cd /var/www/dekiwiki/config
    cp mindtouch.host.conf /etc/dekiwiki
    cp mindtouch.deki.startup.xml /etc/dekiwiki
    cp LocalSettings.php /var/www/dekiwiki/
    chmod 0644 /etc/dekiwiki/mindtouch* 
    chmod 0644 /var/www/dekiwiki/LocalSettings.php 
    rm mindtouch.host.conf
    rm mindtouch.deki.startup.xml
    rm LocalSettings.php
    /etc/init.d/dekiwiki stop
    /etc/init.d/dekiwiki start
    

    安裝完成。

    開啟網站首頁,並以剛剛設定的管理員帳號登入。

    TIPs:

    第一次登入管理控制台,顯示網站尚未啟動授權,以致無法正常運作。上傳授權檔 license.xml 並啟動網站。

    啟動服務時,如無法立即出現網頁,需等待數分鐘。

    啟動授權作業時,需等待數分鐘直到網頁顯示
    License Type: Mindtouch Core Perpetual licemse
    參考附檔:License Activated

    到此,一個新的 Mindtouch 網站已經完成。

    還原舊網站的備份檔

    NOTE:確認以下檔案已經存在

    • DB 備份檔: /data/wikidb.sql
    • 網頁附件備份目錄: /data/dekiwiki/attachments/
    • 小圖示: /data/dekiwiki/favicon.ico
    // 還原資料庫
    mysql -u root -p wikidb < /data/wikidb.sql
    
    // 還原網頁檔的附件目錄 attachments
    cp -rp /data/dekiwiki/attachments/* /var/www/dekiwiki/attachments/
    chown -R dekiwiki:apache /var/www/dekiwiki/attachments/ 
    

    TIPs:

    資料庫一旦還原完成,網站的管理者密碼與所有網站的參數設定都會變成舊網站的設定。

    舊網站的客製化設定檔(選用)
    /var/www/dekiwiki/LocalSettings.php:

    ...
    //
    $wgProfileApi = true;
    $wgDefaultTimezone  = '+08:00'; //GMT offset
    //
    $wgDefaultEditorEngine = 'FCKeditor';
    $wgDefaultEditor = 'FCKeditor';
    //
    $wgForceCP = true;
    

    網站小圖示:

    cp /data/dekiwiki/favicon.ico /var/www/dekiwiki/
    

     

    F.A.Q

    舊網站資料庫還原後,重新開啟網頁出現錯誤:

    HTTP Response Status Code: 500
    An exception was thrown: Could not find specified column in results in MySql.Data

    ANS:原因可能是舊網站是比較舊的 Mindtouch 或 Dekiwiki 版本,解決方式如下:

    # cd /var/www/dekiwiki/maintenance/
    # php update-db.php
    
     Updating wikidb on localhost
    Applying misc database updates...done
    added 'languages' config key
    Start update script
    added 'files/blacklisted-disposition-mimetypes' config key
    fixing recentchanges.rc_cur_id data
    dropping stored procedures
    adding user_seat column to users table
    dropping table `linkscc`
    dropping table `objectcache`
    dropping table `querycache`
    Done.
    
    Powered by MindTouch Core