Plone Installation

By marr, Last updated Mar 18, 2010

Plone 是一套以 Zope 為基礎的 CMS 系統。本文件介紹 Plone 系統的安裝與啟動技巧,協助讀者快速建立一個穩健而具擴充彈性的 CMS 系統。

關於 CMS 與 Plone 的基本資訊,可參考 Plone Introduction 文件說明。

安裝 Plone 的過程,需要依序準備好 Python 和 Zope 環境,幸好,藉由自動安裝檔 (installer) 的協助,彈指之間就能搞定 Plone 的安裝。

1. 最簡化的安裝

想要快速安裝 Plone 系統,最具效益的方式,在 Linux 環境是下載 Plone 的 Unified Installer (約 30MB) 來編譯系統,在 Windows 環境是下載 Windows Installer (約 31MB) 來安裝,安裝方法請直接跳到 2.2 Windows 環境的安裝與啟動 內容說明。

img/CurrentRelease.png

以 Linux 環境為例,需要事先具備 gcc (GNU C Compiler) 和 make,最簡化的方式是以一般帳號,例如 marr 使用者登入後,開啟 Shell 操作環境,執行下列的環境檢查與下載動作:

$ gcc --version
gcc (GCC) 4.3.2
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ wget http://launchpad.net/plone/3.3/3.3.5/+download/Plone-3.3.5-UnifiedInstaller.tgz
$ tar xvzf Plone-3.3.5-UnifiedInstaller.tgz
img/run-wget.png

把 Unified Installer 解壓縮,檔案解開後的目錄結構如下:

Plone-3.3.5-UnifiedInstaller
|-- HISTORY.txt
|-- Licenses/
|-- README.txt
|-- UPGRADING.txt
|-- base_skeleton
|   |-- bin
|   |   `-- buildout
|   |-- bootstrap.py
|   |-- products
|   |   `-- README.txt
|   |-- src
|   |   `-- README.txt
|   |-- var
|   |   `-- README.txt
|   `-- versions.cfg
|-- buildout_templates
|   |-- cluster.cfg
|   `-- standalone.cfg
|-- helper_scripts
|   |-- adduser.txt
|   |-- build_libjpeg.sh
|   |-- build_python.sh
|   |-- build_readline.sh
|   |-- build_zlib.sh
|   |-- checkLibs.sh
|   |-- checkPython.py
|   |-- create_instance.py
|   |-- generateRandomPassword.py
|   `-- make_plone_user.sh
|-- init_scripts
|   |-- FreeBSD6/
|   |-- OS_X/
|   |-- README.txt
|   |-- RedHat-FedoraCore/
|   |-- generic/
|   `-- ubuntu7/
|-- install.sh
|-- packages
|   |-- PILwoTk-1.1.6.3.tar.gz
|   |-- Python-2.4.6.tar.bz2
|   |-- buildout-cache.tar.bz2
|   |-- iniparse-0.3.1.tar.gz
|   |-- jpegsrc.v6b.tar.bz2
|   |-- readline-5.2.tar.bz2
|   |-- setuptools-0.6c11.tar.gz
|   |-- virtualenv-1.3.4.tar.gz
|   |-- zc.buildout-1.4.2.tar.gz
|   `-- zlib-1.2.3.tar.bz2
|-- patches/
|-- tests/
`-- version.txt

我們只需要留意 README.txt 和 install.sh 兩個檔案,前者包含軟體說明,後者能啟動安裝的編譯工作。

Note

以 Plone 3.3.5 為例,它搭配的是 Zope 2.10.11 和 Python 2.4.6。

1.1 Linux 環境的編譯

編譯工作由 install.sh 檔案啟動,這份 shell script 檔案可以搭配 standalone 和 zeo 兩種參數,使用 standalone 是比較簡單的方式,完整的指令範例如下:

$ cd Plone-3.3.5-UnifiedInstaller
$ ./install.sh standalone
img/run-install_sh.png

Tip

為什麼執行 install.sh 時,前面要有「./」符號呢? 這是 shell 操作技巧,表示指定執行「現行路徑下」的 install.sh 檔案。

接著,畫面會出現編譯訊息,摘要的範例如下:

Stand-Alone Zope Instance selected

Detailed installation log being written to
/home/marr/Plone-3.3.5-UnifiedInstaller/install.log

zlib installation: no
libjpeg installation: no
Rootless install method chosen. Will install for use by system user marr

Installing Plone 3.3.5 at /home/marr/Plone

Compiling and installing local zlib ...
Compiling and installing jpeg local libraries ...
Skipping readline compile/install
Installing Python 2.4.6. This takes a while...

Installing PIL
Installing setuptools...
Installing iniparse configuration parser
Installing zc.buildout
Unpacking buildout cache to /home/marr/Plone/buildout-cache
Compiling .py files in egg cache
Generating random password ...
Copying buildout skeleton
Running buildout
Creating directory '/home/marr/Plone/zinstance/parts'.
Creating directory '/home/marr/Plone/zinstance/develop-eggs'.
Installing zope2.
running build_ext
creating zope.proxy
copying zope/proxy/proxy.h -> zope.proxy
building 'AccessControl.cAccessControl' extension
creating build
creating build/temp.linux-i686-2.4
creating build/temp.linux-i686-2.4/AccessControl

Note

編譯過程的訊息會被記錄在 install.log 檔裡,如果沒發現這個檔案,或是想要額外記錄訊息,可使用 ./install.sh standalone 1> install.log 2>&1 之類的指令,將過程的訊息記錄在 install.log 檔案裡。

編譯所需的時間,以 IBM ThinkPad X61 (2GB RAM) 環境為例,大約耗時三分鐘。

一切順利的話,會新建目錄存放 Plone 系統執行的所有檔案,檔案總共佔 263MB 左右。如果是採一般使用者的權限來編譯,它會在家目錄建立 Plone 新目錄,它的第一層目錄項目如下所示:

Top-level Directory Outline for Plone 3.3.5

Plone                          Plone 總目錄
|-- Python-2.4/                Python 目錄
|-- Zope-2.10.11-final-py2.4/  Zope 目錄
|-- buildout-cache/
`-- zinstance/                 Instance 家目錄
  |-- adminPassword.txt        管理員初始密碼檔
  |-- bin/                     管理系統的執行檔
  |-- buildout.cfg
  |-- develop-eggs/
  |-- fake-eggs/
  |-- parts/                   Zope 與 Plone 主程式目錄
  |-- products/                Plone 2.x 舊式模組的目錄
  |-- src/                     自行開發的模組目錄
  |-- var/                     物件資料庫與日誌檔
  `-- versions.cfg             細項版本資訊

我們將 zinstance 目錄稱為「Instance 家目錄」,這裡存放主要的管理檔案,許多維護工作在此進行。

如果是採管理員 (root) 的權限來編譯,請參考 Plone Advanced Setting 說明。

Note

不要用管理員權限把 Plone 裝在 /root 目錄,這會造成難以啟動等多項困擾。

1.2 系統產生的管理員密碼

編譯工作的最後階段,會產生一組 Zope 管理員的帳號密碼,登入管理介面時要輸入這組帳號密碼,除了在螢幕上提示外,也可以事後在 zinstance/adminPassword.txt 檔案裡找到,類似下列內容所示:

Use the account information below to log into the Zope Management Interface
The account has full 'Manager' privileges.

  Username: admin
  Password: 0rx9uAiJ

This account is created when the object database is initialized. If you
change the password later, you'll need to use the new password.

2. 系統的啟動及關閉

Zope 包含一個 HTTP 伺服器,預設在 8080 埠號執行,啟動 Zope 之前,要確認相關埠號未被佔用。

2.1 Linux 環境的啟動及關閉

以上述完成安裝的 Linux 環境為例,它是透過 instance 程式來控制系統的啟動及關閉,這程式的位置在 Instance 家目錄的 bin 目錄裡。啟動時要使用 start 參數,執行方式及訊息範例如下:

$ cd ~/Plone/zinstance
$ bin/plonectl start
instance: . daemon process started, pid=32054

關閉時要使用 stop 參數,執行方式如下:

$ bin/plonectl stop
instance: . daemon process stopped

或是使用 status 參數來查詢執行狀態:

$ bin/plonectl status
daemon manager not running

Note

Plone 3.2 之後統一使用 plonectl 來管理啟動與關閉,它的功能,和以往 instance 或 startcluster.sh 之類的程式相同。

2.2 Windows 環境的安裝與啟動

下載並執行 Plone 的 Windows Installer 檔案,過程中只需要設定兩個選項,就可以完成安裝:

  1. 選擇安裝目錄,例如 C:\Plone 資料夾。
img/WinInstaller1.png
  1. 設定 Zope 管理者的登入名稱與密碼,例如使用 admin 為管理者名稱。
img/WinInstaller2.png

Note

之前裝過 Plone 如果要再裝新的,必須先刪掉舊版並移除 Zope service。

img/WinService-zope.png

透過 Plone Controller 可以管理 Plone 的啟動及關閉。

img/WinController1.png img/WinController2.png

也可以透過命令提示字元 (cmd.exe) 來管理 Plone 的啟動、關閉、查詢。

C:\\Plone> bin\\plonectl.exe status
instance: program running; pid=-1

C:\\Plone> bin\\plonectl.exe stop
instance: Stopping service Zope_-722186511

C:\\Plone> bin\\plonectl.exe start
instance: Starting service Zope_-722186511

Windows 的檔案系統同樣有獨立的 Python 目錄,而它的物件資料庫位於 C:\Plone\var\filestorage 之類的目錄。

img/win-fs_installer.png

Note

使用防毒軟體的朋友,例如 Avast 用戶,可能會遇到類似下列的訊息:

C:\Plone\Data\Products\Archetypes\tests\input\word.doc
MW97:1TableBroken [Expl]
Exploit

這是誤判訊息,請安心繼續安裝使用。如果還不放心,可將訊息關鍵字輸入 google 查詢,比對是否為已知的誤判情況。

3. 管理員操作介面

Zope 成功啟動,在瀏覽器輸入 http://localhost:8080/ 之類的網址後,新版的 Plone 會出現起始網頁。

img/StartPage.png

如果是舊版的 Plone 畫面,會出現標題為 Zope Quick Start 的網頁。

img/ZopeQuickStart-hint.png

特別留意到網頁倒數第二個連結項目 -- Zope Management Interface,點選之後會出現登入視窗,提示要輸入管理員帳號和密碼。在上述範例中,管理員的帳號名稱是 admin,輸入密碼後再按「確定」鍵。

img/localhost-manage.png

3.1 ZMI 介面

如果把 Plone 視為管理內容的前台,那麼 Zope 就是管理系統的後台,這後台的管理介面被稱為 Zope Management Interface,或以縮寫字 ZMI 稱之。在網址尾端加上 /manage 是進入 ZMI 介面的捷徑,像 http://localhost:8080/managehttp://your.domain/manage 就是例子。

img/ZMI-indicated.png

ZMI 介面分成三部份,第一部份是上方的藍色區塊,第二部份是左方區塊,第三部份佔用較大區塊:

  1. 第一部份會提示登入的帳號名稱,利用下拉選單,可選擇 "Logout" 來登出 ZMI。
img/ZMI1.png
  1. 第二部份類似檔案總管的介面,用來顯示目錄清單,其中,最上層稱為 Root Folder 目錄,也就是「根目錄」。
img/ZMI2.png
  1. 第三部份的上方橫排選單稱為頁籤 (tab),像 Contents、View、Properties 等,都是頁籤範例,選用中的頁籤顯示為白底,未選用的頁籤顯示為灰底。

在頁籤下方,可看到「Folder at /」這一行訊息,用來提示使用者所在的位置,「/」代表 Root Folder,也就是上述提到的「根目錄」。

接著,會看到「Select type to add...」的下拉選單,是用來選擇新增 type。剩下的畫面,就是系統裡既有的 type 清單,像 Control Panel、Pluggable Auth Service、Page Template 等,都是 type 名稱的範例。

img/ZMI3.png

把游標移到圖示上方停留一秒,可以顯示 type 名稱。

img/ZMI-IconType.png

3.2 新增 Plone Site

如果既有的 type 清單裡未存在 Plone Site,或是想再建立新的 Plone Site,都可以從「Select type to add...」下拉選單新增它。

img/ZMI-noPlone.png

填寫 Plone Site 的 ID 名稱,例如使用 MySite 為 ID 名稱,再按 Add Plone Site 鈕。請留意到 ID 名稱不能使用特殊符號或空白。

img/ZMI-PloneAdding.png

在 ZMI 的 type 清單裡,會發現剛才新增的 Plone Site,其名稱就是 MySite。

img/ZMI-PloneAdded.png

點選 MySite 之後,會顯示它所包含的 type 清單,包括 HTTPCache 等。並留意到它的頁籤項目也略有不同,例如多了 Component 頁籤。

img/ZMI-PloneContent.png

點選 View 頁籤,可以在 ZMI 裡顯示 MySite 的前台畫面。

img/ZMI-PloneView.png

特別留意到 MySite 前台畫面的左上方,出現 Site Setup 的前台管理項目,點選 Site Setup 可以進行基本的管理工作,操作方式將稍後介紹。

4. 帳號管理

如果管理者密碼是系統隨機產生,登入 ZMI 後的第一件工作,通常就是更改管理者的密碼。

Note

如果已經忘記管理者密碼,導致無法進入 ZMI 介面,請使用 $ bin/plonectl adduser 指令來建立新的管理者帳號密碼。

4.1 更改管理者帳號密碼

先點選 Root Folder 的 acl_users 項目,再點選 users 項目。

img/acl_users-hint.png

畫面顯示既有的帳號清單,點選 Password 可以更改密碼。

img/CurrentUsers-hint.png

設定並確認新的密碼後,要按 Update Password 鈕。

img/UpdateUserPassword.png

密碼更改後,系統再次提示視窗,請輸入新的密碼,系統會出現密碼更改成功訊息。

img/PasswordUpdated.png

4.2 新增會員帳號

除了管理員帳號之外,最好也新增一般會員帳號。新增會員帳號的常見方式有兩種,最簡單的方式是由管理員來建立帳號,步驟如下:

  1. 從 Plone 前台管理項目 Site Setup 進入 Plone Configuration 畫面。
img/PloneConfiguration.png
  1. 點選 Security 進入 Security settings 畫面。
  2. 將「Let users select their own passwords」和「Enable User Folders」都打勾。
  3. 按 Save 鈕確認。
img/SiteSetup-Security.png
  1. 點選 Users and Groups 進入 Users Overview 畫面。
  2. 按 Add New User 進入 Registration 畫面。
img/SiteSetup-UsersAdd.png
  1. 填寫會員表單,最後按 Register 鈕確認。請留意「紅點符號」標明了「必填欄位」,而且「Send a mail with the password」不要打勾,除非你的網站已設定好 Email Server 功能。
img/RegistrationForm.png

Note

帳號名稱的命名規則有預設的條件,如果想要改用電子郵件信箱作為帳號名稱,請參考 http://pypi.python.org/pypi/collective.emaillogin

  1. 畫面出現「User added.」訊息,表示已成功完成註冊。可點選 Show all 顯示所有已註冊的帳號清單。
img/UsersShowAll.png
  1. 想要修改會員帳號資料,可在帳號清單上選擇及編輯。請留意一般會員帳號的 Role 預設是 Member,關於 Role 的細節,請參考 Workflow Introduction 說明。
img/UsersEditing.png

5. Plone Site 客製入門

預設的 Plone Site 外觀設計採三欄式,大致分成五個顯示區塊:

  1. 表頭區塊 (包括: 網站導引資訊/會員個人資訊)
  2. 表尾區塊
  3. 主要內容區塊
  4. 左方區塊
  5. 右方區塊

其中的左方區塊與右方區塊,區塊內容可以互換,完全不影響其功能。

img/DefaultDesignAreas.png

想要客製化網站的門面,最簡單的方式是從 Logo 和首頁內容下手,以 MySite 為例,下列是操作步驟:

5.2 編輯首頁內容

  1. 點選 Edit 頁籤。
img/MySiteView.png
  1. Title 欄位標有紅點,表示這是必填欄位。
  2. 各項欄位填寫完畢後,按 Save 鈕確定。
img/MySiteEdit.png

至此,首頁文字內容已完成更新。試著點選「Also available in presentation mode...」連結,可以用「簡報模式」展示首頁文字內容。

img/MySiteS5.png

6. 其他管理技巧

Zope 與 Plone 的管理或開發方法,可分成「網頁式」和「檔案系統式」兩大類:

學習過程中,需要在網頁介面與檔案系統兩者間參照比較,以逐步了解系統的運作原理。下列是更多操作與管理技巧的範例:

6.1 善用瀏覽器

登入 Zope 或 Plone 之後,系統會以 coockie 方式記錄使用者的資訊。因此,想要以不同身份或權限來觀察 Plone 畫面效果,最好的方式之一,是以不同版本的瀏覽器登入不同權限的帳號。例如,管理者帳號以 IE 登入,一般會員帳號以 Firefox 登入,再對照兩者有哪些差別。

img/TwoBrowsersView.png

Note

登入 Plone 後,想要在同一個瀏覽器裡,看到未登入的畫面,還可以使用 annoymousview 擴充模組。

6.2 認識物件項目的對應關係

以 Linux 主機為例,可以在不同的埠號 (port number) 上執行 Zope 程式,同時接收 HTTP 服務請求,而每個 Zope 程式又可以建立多個 Plone Site,彼此獨立運作與管理。但,這可以帶來怎樣的效益呢?

img/ZMI-ObjMap.png

想像我們是主機代管服務商 (Hosting Service Provider),透過客製化的管理機制,就可以維護高品質的虛擬主機服務。

6.3 查看系統資訊

ZMI 裡提供一個名為 Control_Panel 的控制台項目,可以查看系統資訊,包括執行時間、軟體版本、環境變數、安裝目錄等資訊,甚至可以用來關閉系統。

img/ZMI-ControlPanel-hint.png

像 INSTANCE_HOME、CLIENT_HOME 是幾個最常用到的環境變數,其他的環境變數列表如下:

ENV VARIABLE Unix Example Windows Example
ZOPE_HOME Plone/zinstance/parts/zope2 C:\Plone\zope
SOFTWARE_HOME $ZOPE_HOME/lib/python $ZOPE_HOME\lib\python
INSTANCE_HOME Plone/zinstance/parts/instance C:\Plone
CLIENT_HOME Plone/zinstance/var/instance C:\Plone\var

6.4 匯入教學範例

用新增方式來建立 type 之外,也可以匯入方式來建立。在 Zope 裡稱匯入為 import,稱匯出為 export。

Zope 附有教學範例檔案,檔名是 Examples.zexp,管理員可以利用 Import 功能,匯入這個 ZEXP 檔案,步驟如下:

  1. 先選擇要匯入的目錄位置,例如 Root Folder,再點選下方 Import/Export 鈕。
img/ZMI-Import.png
  1. 接著的畫面,上方是說明 export 的操作方式,畫面的下方,則說明 import 的操作方式。請確認 Import file name 欄位選定的是 Examples.zexp 檔案,再按 Import 鈕確定。
img/ZMI-ImportFile.png

在 ZMI 的 type 清單畫面裡,可以看到剛匯入的 Examples 項目,它是一個 folder,點選進入後,可以列出它所包含的 type 清單,例如 FileLibrary、GuestBook、ShoppingCart 等。

img/ZMI-Examples-List.png

點選 View 頁籤,預設會顯示 index_html 項目的執行結果。使用瀏覽器的「上一頁」按鈕,可以回到 type 清單,並反覆測試 Examples 裡各項目的內容。

img/ZMI-Examples-View.png