在 Ubuntu 上使用 Docker 架設 LimeSurvey

什麼是 LimeSurvey

LimeSurvey 是一款開源的線上問卷調查程式,支援多國語言(包含繁體中文),由於功能完整,介面簡潔易用,因此相當受到歡迎。它用PHP語言編寫並可以使用MySQL,PostgreSQL或者MSSQL等多種資料庫,它整合了調查程式開發、調查問卷的釋出以及資料收集等功能,使用它,用戶不必了解這些功能的編程細節。 本系統包括了分支、自訂頁面布局和設計,並且提供了基本的統計分析功能。(摘錄自維基百科)

為什麼要使用 Docker 架設 LimeSurvey

目前在 Docker Hub 上最受歡迎的 LimeSurvey Docker 是 crramirez/limesurvey。利用 Docker 可以節省許多安裝設定環境的繁瑣步驟,也方便未來管理與維護。有關 Docker 的介紹與安裝步驟,請參考另一篇文章「在 Ubuntu 18.04 上安裝 Docker 與 Docker Compose」。

安裝 LimeSurvey Docker

以下的安裝設定步驟是在 Ubuntu 18.04.1 Server 下測試成功。

1. 建立 docker-compose.yml 文件

vi docker-compose.yml
(底下為檔案內容)
version: '3'
services:
  limesurvey:
     hostname: LimeSurvey
     restart: always
    ports:
      - "5088:80"
    volumes:
      - limesurvey_mysql:/var/lib/mysql
      - limesurvey_config:/app/application/config
      - limesurvey_upload:/app/upload
    image:
      crramirez/limesurvey:latest
volumes:
  limesurvey_mysql:
  limesurvey_config:
  limesurvey_upload:


2. 啟動 LimeSurvey Server Docker

請在 docker-compose.yml 目錄下執行 up 指令,若是第一次啟動,系統會自動搜尋 Docker Hub 的 crramirez/limesurvey Image,並從網路上下載至您的主機:

docker-compose up -d


Docker Image 下載完成後會自動啟動,您可以用 images 指令確認 Image 已經下載至您的主機,儲存庫(Repository) 會顯示 LimeSurvey 的 Image 名稱:

docker-compose images
docker-compose images


再用 ps 指令確認 LimeSurvey Docker 已經啟動,Name 就是指容器 (Container)的名稱:wizigo_limesurvey_x_xxxxxxxxxxxx。其中 wizigo 是我登入的使用者名稱。

docker-compose ps
docker-compose ps

第一次連線設定

Docker 成功啟動後就可以使用瀏覽器連線到 LimeSurvey Server (例如:http://192.168.0.100:5088),第一次連線的時候需要做一些基本設定。首先選擇語言為「繁體中文(台灣)- Chinese (Traditional; Taiwan)」,然後按「Start installation」

選擇語言


接下來顯示授權頁面,請按下「接受」:

授權


接下來進入安裝前檢查頁面,看一下目前狀態是否有問題,若沒有問題,請按「下一頁」。

安裝前檢查


接著設定資料庫,設定完後按「下一頁」:
    資料庫類型:MySQL
    資料庫位置:localhost
    資料庫用戶:root
    資料庫密碼:(留空白)
    資料庫名稱:limesurvey    (可自行選擇名稱)
    表前綴        :lime_         (可自行選擇表前綴)

資料庫設定


第一次使用尚未建立資料庫,請按「建立資料庫」:

建立資料庫


接著會顯示資料庫已成功安裝的訊息,並進入管理員設定頁面,這裡的管理員電子郵件可以設定別名,G Suite 的別名設定請參考之前的文章「G Suite 安全性與別名設定」。設定完之後請按「下一頁」:

選擇性設置


恭喜您!LimeSurvey 已被成功安裝!請按「管理」:

成功安裝

外送電子郵件設定

進入登入畫面,請輸入剛剛您設置的管理員登入名字和管理員登入密碼,接著按「登入」:

登入


進入首頁之後請先按「關閉」:

首頁


接著進入「全域設定」:

全域設定

進入「郵件設定」標籤,這裡是有關 LimeSurvey Server 送信時使用的 SMTP 等資訊。如果您的郵件是使用 G Suite 套件的話,不需要多花一筆錢申請一個帳號給 LimeSurvey 使用,只需要在使用的 G Suite 帳號中設定一個電子郵件別名即可,另外也需要將登入的電子郵件帳號設定成「允許使用低安全性的應用程式存取」才不會有問題。設定方法請參考之前的文章「G Suite 安全性與別名設定」。下面的 SMTP 的設定是以 GMail 為範例,這裡的「SMTP使用者名稱」要設定真正登入的帳號,不能使用別名
    預設網站管理員電子郵件:limesurvey@wizigo.tw
    管理員名字                        :Administrator
    Email 方法                         :SMTP
    SMTP 主機                        :smtp.gmail.com:587
    SMTP 使用者名稱            :hr@wizigo.tw
    SMTP 密碼                        :xxxxxx
    SMTP 加密                        :TLS
設定完之後按「儲存」:

郵件設定

有關 Volume 的說明

按照網路上的教學安裝 LimeSurvey Docker 的時候,最常遇到的就是 volume 的問題。volumes 會將容器裡面的目錄連結到容器外部主機的目錄,方便使用者設定或是備份資料。使用 docker 的 volume list 指令可以看到目前系統產生的 volumes 有哪些,以我的主機為例:

docker volume list
docker volume list


上面紅色圈選的地方就是 docker-compose.yml 裡面設定的 LimeSurvey volumes:

...
  volumes:
      - limesurvey_mysql:/var/lib/mysql
      - limesurvey_config:/app/application/config
      - limesurvey_upload:/app/upload
...
volumes:
  limesurvey_mysql:
  limesurvey_config:
  limesurvey_upload:

這裡的 volumes 目錄設定請不要設定絕對路徑,直接設定目錄名稱就好了。如果設定絕對路徑的話,就會出現  volumes 目錄裡面沒有檔案,或是沒有權限讀寫目錄等奇奇怪怪的問題,一勞永逸的方法就是只設定目錄名稱,由系統自行建立 volumes 目錄。docker compose 會將這些設定的 volumes 前面加上登入的使用者名稱,例如我登入的名稱是 wizigo,所以實際產生的 volumes 目錄會是這個樣子:wizigo_<您設定的目錄名稱>,目錄是位在 Ubuntu 路徑 :/var/lib/docker/volumes/。要特別注意的是,volumes 目錄後面會自動產生 “_data” 目錄,裡面才是放置檔案的真正位置。

設定完成,我要去泡蜂蜜檸檬水了!

發佈留言

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