2012年8月8日 星期三

相片網站自己架: Piwigo 和 Zenphoto 的安裝筆記

[2014/5/29: 新版教學文: 「在 antix (debian) 上面安裝 zenphoto」]

回應自己先前 尋找相片架站軟體 的問題, 這兩天把 piwigo 跟 zenphoto 都架了起來, 順便分享一下安裝筆記。

一、 前置作業

  1. 每個用到 mysql 資料庫的 php 程式都需要一個 「轉接套件」。 Piwigo 和 Zenphoto 也不例外。 另外, gd 跟 imagemagick 這兩個圖形函式庫也需要 「轉接套件」。 最後, Piwigo 和 Zenphoto 還需要 php-mbstring。 如果你在某個步驟出現 「死亡白幕」 螢幕一片空白, 很有可能是漏裝了其中幾個。 在 Fedora 底下請 yum install php-mysql php-gd php-pecl-imagick php-mbstring 而 Ubuntu 底下請 apt-get install php-db php5-gd php5-imagick 。 如果是遇到 「死亡白幕」 才補安裝的話, 可能需要重新啟動 apache、 刪除整個 zenphoto 目錄、 重頭再做一次。 如果在安裝 Piwigo 和 Zenphoto 之前就已先安裝 drupal, 就不會有這些「欠缺相依套件」的問題。
  2. 不論是 piwigo 或是 zenphoto, 都接受上傳 (內含圖檔的) zip 格式檔案。 請先把一些相片壓縮到幾個測試用的 zip 檔裡面, 每個 zip 檔對應到一本相簿 (album)。
  3. 相片檔很大, 上傳的時候很可能會超過 php 設定的上限。 請編輯 /etc/php.ini , 找到 upload_max_filesize 跟 post_max_size 這兩句, 把數字加大。 存檔後要重新啟動 apache2 才會生效。 (Fedora: service httpd restart Ubuntu: service apache2 restart)
  4. 兩者都需要用到 mysql 資料庫儲存相片的文字/時間等等資訊。 現在就先下 mysql -u root -p 輸入密碼後, 進入 mysql。 那麼就一口氣把兩套軟體所需要的空白資料庫同時建起來吧:
        create database piwigo;
        create database zenphoto;
    
    然後按 ctrl-d 或打 \q 離開。

二、 安裝 Piwigo

piwigo 安裝畫面

  1. 下載 piwigo, 在網頁目錄底下解壓縮。 例如我在 Fedora 17 底下, cd /var/www/html ; unzip piwigo-*.zip 會產生一個新的目錄 piwigo; 而網頁介面的網址就是 http://localhost/piwigo/ 。
  2. 在 include/config_default.inc.php 的最後面加上一句: date_default_timezone_set('Asia/Taipei'); 如果沒加這一句的話, 之後幾個地方會出現警告訊息, 說它不知道你的時區在哪裡。
  3. 切換到瀏覽器, 進入 piwigo 首頁, 填寫 mysql 資料庫的帳號 (以上面的例子而言, 就是 root) 密碼及先前 create database ...; 指令所建立的資料庫名稱 (以上面的例子而言, 就是 piwigo) 等等。
  4. 設定成功之後自動就被導引進入建立相簿的畫面。 第一次實驗, 建議停留在 「網頁表格」 分頁 (而不要進入 「申請」 或 「ftp + 同步」 分頁)。
  5. 若是使用 flash 上傳介面, 不能上傳 zip 檔。 所以我喜歡 「改用瀏覽器上傳」。

從相片瀏覽模式進入管理模式 相片上傳完成後, 就進入相片瀏覽模式。 如果要再回到管理模式上傳或整理相片, 就要按左下角選單 「身份鑒別」 底下的 「管理員」 選項。

透過網頁手動上傳的相片都放在 upload 子目錄底下。 如果要把既有相簿連同整個完整目錄結構放進 piwigo, 可以直接把相簿目錄拷貝到 galleries/ 底下, 再用 「工具」 底下的 「同步」 讓 piwigo 巡過整個目錄並且在資料庫當中建立對應的文字/日期等等索引資料。

三、 安裝 Zenphoto

  1. 下載 zenphoto, 在網頁目錄底下解壓縮。 例如我在 Fedora 17 底下, cd /var/www/html ; tar xzf zenphoto-*.tar.gz 會產生一個新的目錄 zenphoto; 而網頁介面的網址就是 http://localhost/zenphoto/ 。 請 cd 進入 zenphoto。 以下所有指令都是在 zenphoto 的根目錄底下執行。
  2. 查看一下你的系統的網頁伺服器的用戶名稱叫什麼: ps aux | grep apache (看最左欄) 例如 Fedora 底下, 叫做 apache ; Ubuntu 底下, 叫做 apache2 。 把解開來的整個子目錄的所有權歸給這個用戶: chown -R apache:apache . (注意結尾的句點 -- 「目前目錄」) 如果沒做這個動做的話, 等一下初始化設定程式 setup.php 會跑不動 (讀寫權限不足)。
  3. 用瀏覽器打開 http://localhost/zenphoto/ 它會自動跳到初始化設定程式 zp-core/setup.php 並且顯示一個清單, 詳述初始化設定所需要的前置動作準備狀況是否就緒。 綠色是 ok; 黃色是警告; 紅色是錯誤。
  4. 紅色的部分很簡單, 就是要填入 mysql 的帳號 (以上面的例子而言, 就是 root) 、 密碼、 資料庫名稱 (先前 create database ...; 所建立的資料庫 -- 以上面的例子而言, 就是 zenphoto) 等等。 按下儲存後, 只剩下黃色的部分要處理。 (就算沒有處理, 其實一樣也可以按 「開始執行」。)
  5. 回命令列: chmod 600 zp-data/setup.log 然後重新整理網頁, 第一個黃色警告 「記錄檔安全性」 就消失了。
  6. 在命令列下執行 touch zp-data/charset_tést 並且回到網頁介面, 針對 「將檔案系統字集定義變更為...」 選擇 UTF-8, 按 「套用」 之後, 第二個黃色警告 「檔案系統字集」 就消失了。 請注意檔名當中的 「é」 就是 zenphoto 故意要測試我們的檔案系統是否支援 「非 ascii 字元」 的檔名。 然後就可以按下 「請啟用 UTF-8 相片網址。」 旁邊的 「現在就啟用」。
  7. 「Set File permissions to」 選擇 「strict」 並按 「套用」, 另一個黃色警告也消失了。
  8. 一切訊息變成綠色之後, 按下 「開始執行」, 耐心地等待幾分鐘 (命令列底下用 top 指令可以確認電腦沒當掉; mysqld 正在辛勤地工作。)
  9. 最後點下 「刪除安裝檔」, 然後 「設定管理帳號及密碼」、 同意接受 GPL 使用授權, 然後就進入真正設定帳號密碼的畫面。 其中 「Challenge phrase」 跟 「Challenge response」 請填一個 「只有你自己知道答案」 的奇怪問題 -- 萬一將來忘記密碼時, 只要你能回答這個問題, 就可以登入。 (所以這個問題的答案應該要比密碼更難猜; 圖中的例子不好, 題目跟答案都太普通了。)

一些注意事項:

  1. 不知道為什麼, 每次我剛裝好 zenphoto、 設完帳號密碼, 第一次登入都會失敗, 都必須按下 「I forgot my User ID/Password」 回答上面的 「challenge phrase」。 重設密碼再登入就 ok 了。
  2. 上傳檔案的時候, 「資料夾名稱」 可以根據 「相本標題」 自動產生。 但是如果你的相本標題用採用中文命名的話, 還是強烈建議要改用數字/英文字母替資料夾手動命名比較好。 詳見下一節。
  3. Upload handler 請選擇 http。 不知為什麼, 如果選擇 jQuery 並且上傳的是 zip 檔, 那麼從瀏覽器這邊看起來上傳好像成功, 但實際上進伺服器 zenphoto 的資料夾裡卻找不到新的相片或 zip 檔。
  4. 登出之後, 若要再登入, 就在網址後面加上 /admin 或加上 zp-core/admin.php 。 詳見 這一頁

四、 強烈建議檔名及目錄名稱 完全避免採用中文!

[8/20 補充本節] 強烈建議zenphoto 上的目錄名稱及檔案名稱 不要採用中文。 (piwigo 的目錄名稱及檔案名稱是系統自動取的, 所以本來就不會有中文。 不過它的標籤名稱會放進路徑當中, 所以最後還是難逃下面所說的中文網址問題。 攤手) 例如我自己用年月替目錄命名: 1208, 1209, ... 1212, 1301, ...), 主要目的只是不希望一個目錄下超過一兩百個檔案。 至於上傳相片時, 就直接用相機預設的 201110242604.jpg 之類流水號的名稱, 並不重新命名。

至於有意義的分類 (例如 「2012 福壽山之旅」、 「ICOS 2010」、 「海賊王公仔」、 「跟名人的合照」、 ...) 應該採用標籤, 而不是採用目錄名稱。 目錄及檔名對分類的幫助很有限 -- 每張相片只能隸屬於一個最底層子目錄, 比標籤少掉很多彈性。 目錄及檔案名稱如果採用中文, 當網址貼到 <img src="..." /> 的時候, 一樣會變成人類無法閱讀的代碼, 而且會變很長。 例如採用 「貴哥版的 drupal 圖片管理方案」 在 drupal 裡面製作投影片 的時候, 就特別可以感受到: 用數字及英文字母命名, 輸入網址時清爽很多。

關於標籤的用法, 請見 善用 Piwigo 的標籤功能整理相片; 也請見 一些原則

五、 結論

整理相片時, 標籤 (tag) 超級好用。 之所以要在 drupal 之外大費周章地另外架一個獨立的相片管理伺服器, 為的就是這個功能。 為相片 (或文章) 下標籤, 並不是一項深奧的技術, 而是一個 需要培養的組織資料的習慣

裝好之後還沒有認真使用, 只是簡單瞄一下。 覺得 zenphoto 的功能及文件各方面好像都比較完整; 但相對地操作起來也比較複雜, 一般的終端使用者不知道能否適應? 這一篇 piwigo 與 zenphoto 的比較文 最後選擇 piwigo, 因為作者需要與 wordpress 整合。 其他方面的比較也值得一讀。

如果您覺得其中哪一套軟體對您有幫助的話, 除了捐錢, 也可以貢獻中英文文件/翻譯/回報臭蟲。 在自由軟體的世界裡, 如果看到什麼地方不滿意, 不需要束手無助地坐在原地抱怨 -- 請捲起袖子讓我們一起來把它改進得更美好! (握拳)

zenphoto 初始設定畫面 zenphoto 帳號設定畫面 zenphoto 上傳檔案畫面

1 則留言: