[敲打鍵盤] 築一個部落格的夢

這也是我給《微電腦傳真》的稿子,據說也是刊登在五月號(第 207 期)上但是由於邀稿者離職之故,大概不會刊登出來了。以下為全文,共約一萬五千字;請注意這些內容使用需註明出處,未經允許不得作為商業使用,商業用書面印刷權目前僅授予微電腦傳真雜誌


築一個部落格的夢 — 挑選及安裝部落格系統

挑選要點

雖然我們在前一篇文章裡,介紹了許許多多提供免費/付費部落格服務的站台,但是對於手上資源充足的朋友來說,大概都還是會希望自己親手把部落格系統,安裝到自己的機器上。原因無他,圖的不過是徹底掌控的快感,還有需要甚麼就加甚麼的靈活自由罷了。

我們在這裡所謂的「資源充足」,其實可以化約為「有公開 IP 地址、可以執行 CGI 腳本的網頁空間」。這有可能是虛擬主機或主機代管服務,也有可能是妳自己家裡的電腦,搭配著有公開 IP 的固接式寬頻網路( ADSL 或 CABLE ),或者是妳自己公司、學校裡,能夠從外界連線得到的伺服器。

話說在前頭,如果妳分不清楚甚麼是公開 IP 甚麼是私人 IP 、不明白甚麼是 CGI 腳本、不瞭解該怎麼上傳檔案、或不知道甚麼是「純文字編輯器」的話,最好不要貿然嘗試以下我們要介紹的步驟,不然可能會處處碰壁,需要別人來解救。如果妳真的知道自己正在做些甚麼,就讓我們繼續下去吧。

台北 Perl 推廣組去年分別在台北跟高雄各舉辦了一場「 Perl 、 Python 、 PHP 腳本語言研討會」,這三種腳本語言都是處理文字與網頁程式的好工具;也因此,當今發展最為蓬勃的部落格系統,多半也是由 Perl 、 Python 或 PHP 所撰寫出來的。

所謂的「腳本語言」,指的就是毋須編譯即可執行的程式語言;妳拿到的執行檔也就是源碼,所以要修掉任何瑕疵、或要加入任何功能時,幾乎都可以直接修改源碼,相當自由。也因此,在挑選部落格系統前,妳應該先想想看,妳或妳周遭的朋友中,有沒有對其中任何一種足夠拿手的?如果有的話,我會建議妳從熟悉的語言來挑選,因為這些部落格系統往往需要妳補綴、調整設定或安裝額外的模組,而這得仰賴對相對應語言的認識,纔能彀輕易為之。

如果妳的 Perl 資源充足,那麼 Blosxom 和 Movable Type 都是很流行的部落格系統;在 Python 上有一個稱做 Zope (Z Object Publishing Environment) 的網頁應用程式伺服器,妳可以在 Zope 上面安裝 CMF (Content Management Framework) 內容管理架構,然後再於 CMF 上安裝 CMFWeblog 或 Plone 來當作部落格系統。如果妳覺得 PHP 比較簡單好上手的話,則可以選擇 WordPress 或 pLog 來作為部落格系統。以下我們將分別解說如何安裝這些系統。

Blosxom

Blosxom 的首頁位於 http://www.blosxom.com/ ,其設計概念是「網頁出版系統就應該要盡可能地簡單」;撰寫部落格時,基本上就是把寫好的純文字檔案,放進特定的目錄裡,而沒有甚麼特定的編輯或管理介面。這整套系統就祇是一個 Perl 腳本而已,因此安裝起來並不費事,把檔案放到正確的位置去,再修改一些設定值即可。任何最新版的 Blosxom 都可以從 http://www.blosxom.com/downloads.html 下載取得;通常妳抓到的檔案會是一個叫 blosxom.zip 的 ZIP 壓縮檔,(使用任何解壓縮軟體)解開後可以得到 blosxom.cgi ,這就是整個系統了。

如果妳用的是虛擬主機來當作網頁伺服器的話,這時妳得先確認妳的虛擬主機供應商允許妳使用以 Perl 寫成的 CGI 腳本,同時妳還得知道要把 CGI 腳本放在那個目錄裡。舉例來說,如果妳的虛擬主機帳號名稱是 username 的話(以下的範例均亦按照此假設),通常 CGI 腳本可能會必須被放在 /home/username/public_html/cgi-bin 裡。請把前述的 blosxom.cgi 上傳到這個目錄中。

接下來我們得把這支 CGI 腳本的權限設定為「可執行」(也就是 755 )。通常妳可以用 FTP 用戶端軟體來直些修改檔案權限,或者是使用虛擬主機供應商準備好的網頁管理介面(像是 cPanel )來做這件事;如果妳有命令列帳號的話,也可以下達像這樣的指令:

chmod 755 /home/username/public_html/cgi-bin/blosxom.cgi

然後我們還得建立一個目錄,用來存放部落格的內容。舉例來說,妳可能會想把部落格的內容都放在 /home/username/blosxom 裡,所以妳就應該在 /home/username 裡建立一個叫 blosxom 的目錄。通常 FTP 用戶端軟體也可以讓妳新增目錄;虛擬主機供應商若準備了網頁管理介面的話,通常也能讓妳這麼做。當然,如果妳有命令列帳號的話,也可以下達如下的指令:

mkdir /home/username/blosxom

這樣就大致準備完成了,我們稍後會再介紹到要如何調整部落格的組態設定。

除了上述的狀況外,妳也有可能得把 Blosxom 安裝到 Windows 伺服器上,而 Windows 上的目錄結構跟前面的例子是很不一樣的。我們這裡假設這台 Windows 伺服器上執行的是 IIS ,而且已經裝妥了 Perl ,那麼妳應該把 blosxom.cgi 放到 IIS 的文件根目錄去,這通常會是 C:\Inetpub\wwwroot ,至於部落格內容存放的目錄,則可以是 C:\Inetpub\wwwroot\blosxom (當然妳得自己把這個目錄建出來纔行)。

接下來我們還得在 IIS 裡設定 Perl 的處理程式;這個過程有些複雜,如果妳不知道該怎麼辦的話,請試著按「開始」並選「執行...」,接下來如果妳用的是 Windows XP 、 Windows 2000 或 Windows NT 的話,請輸入 cmd 並按 Enter 鍵,否則就請輸入 command 再按 Enter 鍵。

此時你應該會看到一個命令列的提示符號,請鍵入 edit fixiis.pl 後按 Enter ;這將會以文字編輯器新建出一個叫 fixiis.pl 的檔案。請複製下列的程式碼,並貼進( Edit → Paste )文字編輯器裡,儲存( File → Save )後離開( File → Exit );當然妳也可以手動抄進去,不過小心可別抄錯了呦:

# MDSN: http://msdn.microsof?t.com/library/en-us/?iisref/html/psdk/asp?/apro9tkj.asp
use strict;
use warnings;
use Win32::OLE qw(in);

# Connect to IIS on the Local Machine with ADSI...
my $iis_web_object  = Win32::OLE->GetObjec?t("IIS://LocalHost/W?3SVC")
            or die "Can't access IIS on the local machine\n";

my ($perl_path) = $^X =~ /(.*)\\[^\\]+$/;
my $iis_verbs = ((Win32::GetOSVersio?n)[1] == 5) ? 'GET,HEAD,POST' : 'PUT,DELETE';

foreach my $path (in $iis_web_object->Get?DataPaths("ScriptMap?s", 0))
{
    my $node = Win32::OLE->GetObjec?t($path);
    print "Setting $path...\n";
   
    my $str_maps = $node->{ScriptMaps};
    my %script_maps;
    foreach (in @$str_maps) {
        my ($ext, $exe, $script, $verbs) = split /,/, $_, 4;
        $script_maps{$ext} = { exe => $exe, script => $script, verbs=> $verbs}
    }

    $script_maps{'.pl'} = $script_maps{'.pm'} = $script_maps{'.cgi'}  =
        { exe => $^X.' "%s" %s', script=> 1, verbs=> $iis_verbs };

    $script_maps{'.plx'} =
       { exe => $perl_path."\\perlIS?.dll", script=> 1, verbs=> $iis_verbs };

#
#   Protects against $DATA stream hack which gives
#   everyone access to your source code
#
$script_maps{'.pl:$D?ATA'} = $script_maps{'.pl'};
$script_maps{'.cgi:$?DATA'} = $script_maps{'.cgi'};
$script_maps{'.plx:$?DATA'} = $script_maps{'.plx'};

#
#   Protects against Code Red Worm by removing
#   the Index Server script mappings
#
delete $script_maps{'.ida'};
delete $script_maps{'.idq'};

    my $new_maps = [];
    foreach (sort keys %script_maps) {
        push @$new_maps, join ',',
            $_ , $script_maps{$_}->{e?xe} , $script_maps{$_}->{s?cript} ,
            $script_maps{$_}->{v?erbs}
    }

    $node->{ScriptMaps} = $new_maps;
    $node->SetInfo();
}
undef $iis_web_object;

然後讓我們鍵入 c:\perl\bin\perl fixiis.pl (並按 Enter 鍵)來執行這支我們剛建立出來的腳本。這個 Perl 腳本應該會幫妳把 IIS 設定妥當,然後我們就可以砍掉它了: del fixiis.pl ,最後可以用 exit 這個指令來離開命令列。

如果妳的網頁伺服器是 Mac OS X 的話,一切就會簡單得多。妳可以在 http://www.blosxom.com/downloads.html#macosx 取得一個叫 blosxom.pkg.tar.gz 的檔案,祇需要幾次的滑鼠鍵三擊,就能夠把 Blosxom 裝起來。

如果妳的網頁伺服器用的是 FreeBSD 的話,就會更簡單了。妳祇需要以 root 身份登入,然後鍵入以下指令,就可以把 Blosxom 裝起來:

cd /usr/ports/www/mod_blosxom
make clean install

當然,如果妳的帳號隸屬於 sudoer 群組的話,也可以用 sudo 來做這件事:

cd /usr/ports/www/mod_blosxom
sudo make clean install

安裝好 Blosxom 後,其實還需要加以調整組態設定;請以純文字編輯器編輯 blosxom.cgi ,並調整以下各項設定值:

  • $blog_title
  • 部落格的名稱。
  • $blog_description
  • 部落格的描述或標語。
  • $blog_language
  • 部落格內容所使用的語言。英文是 en ,繁體中文是 zh-tw ,簡體中文則是 zh-cn 。
  • $datadir
  • 存放部落格內容的目錄位置,例如前面我們所使用的 /home/username/blosxom 或 C:/Inetpub/wwwroot/blosxom 。請注意,即使妳的網頁伺服器用 Windows ,也要用倒斜線來表示路徑,而且路徑最後面不可以接反斜線。
  • $url
  • 部落格的主要網址,像是 https://jedi.org/blog/ ;請注意,最後面務必接上反斜線作為網址的結尾。
  • $depth
  • 設定 Blosxom 是否要把內容目錄裡的層層目錄都挖出來;如果沒有特殊需求的話,這裡最好保留預設的 0 。
  • $num_entries
  • 設定部落格首頁要顯示幾篇新文章。
  • $file_extension
  • 設定 Blosxom 祇把哪種副檔名的檔案視為部落格文章內容。
  • $default_flavour
  • 設定預設的部落格樣式。
  • $show_future_entries
  • 設定是否要顯示檔案日期在「未來」的文章。

我們在前述的設定選項裡,提到了「預設的部落格樣式」;事實上,妳可以在 http://www.blosxom.com/documentation/users/flavour.html 找到部落格樣式及模版的解說,也可以在 http://www.blosxom.com/downloads.html 取得樣式及模版的範例,我們在此便不多加贅述。如果妳還想加進些甚麼特殊的功能,也可以到 http://www.blosxom.com/documentation/users/plugins.html 尋找合用的外掛模組。

Blosxom 這樣就算安裝完成了,至於使用方法、文章格式等資訊,則請參考 http://www.blosxom.com/documentation/users/blog.html 的說明。

Movable Type

Movable Type 的首頁位於 http://movabletype.org/ ,這套部落格系統不但曾獲 2003 年年度網誌大獎「最佳網誌系統獎」的殊榮,大概也是中文資源最為豐富的部落格系統了。舉凡中文使用介面、使用手冊中文翻譯、中文文件等,幾乎均出自筆者之手。事實上這也是目前國內唯一有專書(旗標出版社, BLOG 架站實務:使用 Movable Type )講解的部落格系統。

Movable Type (簡稱 MT )一樣也需要伺服器支援 Perl 的 CGI 腳本纔能正常運作;然而 MT 無論在安裝或使用上都比 Blosxom 複雜許多,功能也多了許多。雖然 MT 的使用介面仍被詬病不夠一致完善,但是這種網頁介面的系統,多少還是較易於存取、也較適合由多位使用者共同維護一份部落格的情況。

無論妳的網頁伺服器是甚麼系統,幾乎都必須到 http://movabletype.org/download.shtml 取得檔案;請選取「 Full Version, with Libraries 」及「 Gzipped TAR 」,這樣子妳應該會抓到檔名像 MT-2.661-full-lib.tar.gz 這樣的檔案。然而這個檔案裡的 MT 有些跟多國語系有關的瑕疵,也沒有中文文件,所以妳還會需要一些額外的檔案,我們等一下就會看到。

如果妳要把 MT 裝到租用的虛擬主機上,那麼除了前述的檔案外,妳還得到 http://mtbook.net/download.html#12 抓取額外的檔案、文件等;另外還得到 http://mtbook.net/download.html#13 抓補綴用的 mt.diff 。如果妳自己的電腦是 Windows 的話,妳還得抓取 http://mtbook.net/download/util.zip ,這個 ZIP 壓縮檔解壓縮後,會得到一些稍後會用到的工具程式,請把他們跟前述的三個檔案都放在同一個資料夾裡,然後按「開始」並選「執行...」,接下來如果妳用的是 Windows XP 、 Windows 2000 或 Windows NT 的話,請輸入 cmd 並按 Enter 鍵,否則就請輸入 command 再按 Enter 鍵。此時你應該會看到一個命令列的提示符號,請依序執行下列的指令:

gunzip MT-2.661-full-lib.tar.gz
tar -xvf MT-2.661-full-lib.tar
gunzip MT-2.661-full-lib.new.tar.gz
tar -xvf MT-2.661-full-lib.new.tar
patch -p1 < mt.diff

請注意,上述的 2.661 係 MT 的版本,請按照妳實際所抓到的檔案版本來加以變更。執行完這些指令後,就完成了 MT 的補綴了;不過上傳檔案之前,妳還得先弄清楚網頁伺服器上把 Perl 安裝在哪兒。因為 mt-add-notify.cgi 、 mt-check.cgi 、 mt-comments.cgi 、 mt-load.cgi 、 mt-send-entry.cgi 、 mt-tb.cgi 、 mt-search.cgi 、 mt.cfg 、 mt-xmlrpc.cgi 和 mt-view.cgi 這些檔案通通都是 Perl 腳本,所以如果妳的 Perl 並非安裝在 /usr/bin/perl 的話,妳就得修改上述檔案的第一列,來讓這些腳本找得到 Perl 。

請注意,妳應該保留這一列開頭的 #! 以及結尾的 -w 。

舉例來說,如果妳的 Perl 裝在 /usr/bin/perl580 的話,妳就應該把 #!/usr/bin/perl -w 這一列修改成 #!/usr/bin/perl580 -w 。如果妳不知道系統上的 Perl 在哪裡的話,請用下列的指令來察看:

whereis perl

現在我們要把這些檔案上傳到網頁伺服器使用的目錄中、能夠使用 CGI 腳本的目錄裡。舉例來說,如果妳在虛擬主機上的帳號是 username 的話,這個目錄通常會是 /home/username/public_html/cgi-bin ,所以我們就要把所有的檔案上傳到這個目錄裡⸺除了 docs 目錄、 images 目錄、 lang 目錄、 popups 目錄、副檔名為 .js 的檔案、 htmlarea.css 檔案,以及 styles.css 檔案。

上述這些例外的目錄與檔案,則要上傳到網頁伺服器所設定的靜態網頁檔案目錄裡,像是 /home/username/public_html 。接下來我們得把所有副檔名為 .cgi 的檔案權限設定為「可執行」(也就是 755 )。通常妳可以用 FTP 用戶端軟體來直些修改檔案權限,或者是使用虛擬主機供應商準備好的網頁管理介面(像是 cPanel )來做這件事;如果妳有命令列帳號的話,也可以下達像這樣的指令:

chmod 755 /home/username/public_html/cgi-bin/mt*.cgi

初步工程大約這樣即可,我們待會兒還會看到關於 MT 組態檔的說明與描述。

如果妳打算把 MT 裝在 Windows 上的話,事情或許會容易許多,因為「藝立協」社群固定會製作輔助安裝 MT 的程式。妳仍然需要從 http://movabletype.org/download.shtml 取得 MT 系統,一樣要選取「 Full Version, with Libraries 」和「 Gzipped TAR 」;接下來請到 http://mtbook.net/download.html#8 取得 .exe 格式的可執行檔,把這兩個檔案放在同一個目錄裡。

這個可執行檔除了會幫妳補綴原始的 MT 、增添所有額外的檔案外,還會幫妳安裝 Apache2 (網頁伺服器)跟 Parl (精簡版的 Perl 執行環境)。所以妳不但不需要自備 Perl 跟網頁伺服器軟體,甚至還應該先把其他的網頁伺服器軟體(像是 IIS )移除,否則可能會安裝失敗。

再來的步驟相當簡單,妳就祇需要保持網路暢通,然後執行我們剛剛取得的可執行檔,然後一直按「下一步」就可以把 MT 裝起來了。

但是,如果妳想要手動把 MT 安裝在 IIS 網頁伺服器的話,首先妳得確定機器上有 Perl ,然後其餘的步驟就跟我們稍早提到、把 MT 安裝在虛擬主機上的步驟幾乎一樣,祇是 IIS 裡的文件跟目錄應該是在像 C:\Inetpub\wwwroot\ 的地方,所以妳應該會想建立出 C:\Inetpub\wwwroot\mt\ 跟 C:\Inetpub\wwwroot\blog\ 這兩個目錄,分別作為 MT 的 CGI 腳本目錄,跟 MT 的靜態檔案目錄。同樣地,要在 IIS 裡設定 Perl 腳本的處理程式,也可以套用我們在 Blosxom 所列出的 Perl 腳本。

如果妳的網頁伺服器用的是 FreeBSD 的話,就會更簡單了。因為現在 leeym 負責了 FreeBSD 上的中文 Movable Type ports ,所以妳祇需要以 root 身份登入,然後鍵入以下指令,就可以把 MT 裝起來:

cd /usr/ports/chinese/MT
make clean install

當然,如果妳的帳號隸屬於 sudoer 群組的話,也可以用 sudo 來做這件事:

cd /usr/ports/chinese/MT
sudo make clean install

MT 裝起來後還不能馬上使用,我們還得先調整基礎的組態檔設定。請用純文字編輯器開啟 mt.cfg 檔案;如果妳是在虛擬主機上安裝 MT 的話,這個檔案大概會位於 /home/username/public_html/cgi-bin 之類的地方;如果妳在 Windows 上安裝,又用了藝立協製備的輔助安裝程式的話,這個檔案應該會位於 C:\Program Files\OurInternet\Movable Type\mt ;如果妳是手動安裝到 Windows 上的 IIS 裡的話,這個檔案應該會位於 C:\Inetpub\wwwroot\mt\ 。然後我們要設定以下的項目(注意:如果設定命令前面多了一個「# 」的話,就表示這一列未起作用;請把這個「# 」刪除纔能生效):

  • CGIPath http://localhost/
  • 這是用來設定 MT 的 CGI 腳本網址的。例如: https://jedi.org/cgi-bin/ ;請注意最後要以倒斜線結尾。
  • StaticWebPath /path/to/static-files/
  • 這是要設定 MT 的靜態檔案路徑的。例如: /home/username/public_html/ 。
  • CGIMaxUpload 500000
  • 這是用來設定上傳檔案時,每個檔案的大小限制,單位是位元組;預設值是 1000000 ,大約是 1MB 。如果妳需要上傳更大的檔案的話,就得把這個數值改大些。
  • NoHTMLEntities 1
  • 請務必把這一項設為 1 ,否則編輯中文文章內容時會出現亂碼。
  • PublishCharset UTF-8
  • 請務必把這一項設為 UTF-8 ,這樣部落格內容纔能彀實現多語並存。注意:即使這裡設定為 UTF-8 了,妳還是得修改網頁伺服器本身的設定值,纔能確保最後的頁面真的以 UTF-8 為編碼來呈現。
  • DefaultTemplate default.tmpl
  • 請把這一項改為 default.zh.tmpl ,這樣子搜尋結果的畫面纔會是中文的。
  • MailTransfer smtp
  • SMTPServer smtp.your-site.com 這兩個設定命令會決定 MT 要如何寄發通知書。如果妳把 MT 安裝在 Windows 系統上的話,要寄信就祇能用 SMTP 協定,因此我們得設定 MailTransfer smtp ,然後把 SMTPServer 設定成妳能夠使用的送信主機。舉例來說,如果妳用的是 HiNet 的 ADSL 的話,妳就可以把 smtp.your-site.com 改成 ms1.hinet.net 。

MT 的預設值是使用 BerkeleyDB 來當作資料庫後端,然而如果妳想選用 MySQL 、 PostgreSQL 或 SQLite 作為資料庫後端的話,就還要分別修改 mt.cfg 和 mt-db-pass.cgi 的內容。首先我們仍舊用純文字編輯器開啟 mt.cfg ,並加入下列設定:

  • ObjectDriver 驅動程式_名稱
  • 這裡的「驅動程式_名稱」可能會是「DBI::mysql」(如果妳用的是 MySQL )、「DBI::postgres」(如果妳用的是 PostgreSQL )或「DBI::sqlite」(如果妳用的是 SQLite )。
  • Database 資料庫_名稱
  • 這裡的「資料庫_名稱」指的是妳要用來存放資料的 SQL 資料庫名稱。
  • DBUser 資料庫_使用者
  • 這裡的「資料庫_使用者」指的是妳要用來連接到資料庫的使用者名稱。
  • DBHost 資料庫_主機
  • 如果妳的 SQL 伺服器位於不同的主機上的話,就要加入這一列。這裡的「資料庫_主機」指的是妳的 SQL 主機名稱。
  • DBSocket /路徑/指到/mysql.sock
  • 如果妳的 SQL 伺服器位於本地端,但是 socket 卻不是在標準的位置上時,就要加入這一列。這裡的「 /路徑/指到/mysql.sock 」指的是妳的 SQL 的 socket 路徑。

如果妳選用的是 MySQL 或 PostgreSQL 的話,還得用純文字編輯器開啟 mt-db-pass.cgi ,這個檔案的內容祇有一列,請填寫妳的 SQL 資料庫密碼。

完成組態檔設定後,我們終於可以將 MT 初始化了。請用任何網頁瀏覽器連線到 MT 的 mt-load.cgi ;舉例來說,如果妳的網頁伺服器位於 https://jedi.org/ ,而 CGI 腳本放在 cgi-bin/ 的話,那妳就應該要連到 https://jedi.org/cgi-bin/mt-load.cgi 去。妳應該會看到資料庫初始化完成的訊息,接下來我們還得修改預設的「網誌組態」。這裡的設定值更多了,所以我們在此便不多加贅述,請各位讀者自行至 http://mtbook.net/mtbook_config.html#blog_config 閱讀仔細的圖解說明。

注意:一旦妳完成資料庫的初始化後,妳最好把 mt-load.cgi 這個檔案給刪除掉,以免發生預期外的安全性漏洞。

MT 的使用說明我們也不在此講解,請各位讀者察看中文的線上文件,或者是購買旗標出版社的《 BLOG 架站實務:使用 Movable Type 》一書,都有詳盡而豐富的圖解。另外,在筆者所維護的 http://mtbook.net/ 站台上,也有相當豐富的資源。

Zope/CMF

前面我們介紹的兩套部落格系統都是由 Perl 所撰寫成的,接下來我們將介紹由 Python 寫成的部落格系統 Plone 及 CMFWeblog 。這兩套部落格系統的底層架構是一樣的,均奠基於 Zope 網頁應用程式系統,以及 CMF 內容管理架構之上;換而言之,無論妳打算使用 Plone 或 CMFWeblog (或者一起用),都得先把 Zope 跟 CMF 裝起來纔行。

國內的 Python/Zope/CMF 大本營位於 http://zope.slat.org/ ,其中推動最不遺餘力的便是 tcc 了。他自己的站台 http://blog.tcchou.org/ 正是由 Zope/CMF/Plone 所建立出來。妳可以在這兩個站台找到豐富的資源、檔案以及教學文件;本文在此僅針對安裝步驟作摘要,詳細的使用方法及相關事項還請各位讀者自己前去探究。

我們前面說到,無論是要安裝 Plone 或 CMFWeblog ,都要先把 Zope 及 CMF 環境搞定,這其中又得從 Zope 開始。截稿之前, Zope 的最新版本是 2.7.0 版,妳可以在 http://zope.org/Products/Zope/2.7.0 取得這個版本的檔案。如果妳的網頁伺服器是 Windows 的話,可以直接取得 Zope-2.7.0-win32.exe 這個安裝檔,它應該就會幫妳把該做的事給做完;否則妳應該抓 Zope-2.7.0.tgz 檔。請把 Zope-2.7.0.tgz 解開,妳會得到一個叫 Zope-2.7.0/ 的目錄;請把這個目錄內的檔案移到妳自己的目錄裡,像這樣:

mv Zope-2.7.0 /usr/local/z270

妳也可以把 /usr/local/z270 代換成自己偏好的目錄。接下來我們要進入這個目錄,並把 Zope 裝起來;像這樣:

cd /usr/local/z270
./install

這個過程會花上一段時間。同時,安裝過程中會以亂數產生系統管理帳號 admin 的密碼,請務必把這個密碼記住。待安裝完成後,我們就要來啟動 Zope 了。指令如下:

./start

一旦 Zope 啟動後,妳就可以用任何網頁瀏覽器連線到網頁伺服器的 8080 連接埠,趕快把系統管理帳號 admin 的密碼換成妳記得住的。舉例來說,如果妳的網頁伺服器位址是 https://jedi.org/ 的話,就應該連到 https://jedi.org:8080/manage 去;這時網站會向妳詢問帳號跟密碼,請分別填入 admin 以及稍早由亂數產生的預設 admin 密碼。進入系統後,請點擊右方的 acl_users ,俟進入此選單功能後再選 admin ,輸入妳能夠記得住的密碼,再點選 Change ,就可以把 admin 帳號的密碼改掉了。

如果妳打算把 Zope 伺服器安裝到 FreeBSD 上的話,祇需要使用 ports 就能夠輕易完成。首先請以 root 身份登入,然後執行:

cd /usr/ports/www/zope
make clean install

當然,如果妳自己的帳號隸屬於 sudoer 的話,妳也可以用 sudo 來做這件事:

cd /usr/ports/www/zope
sudo make clean install

Zope 安裝完成後,我們還要繼續安裝 CMF 。截稿之前, CMF 的最新版本是 1.4.2 版,妳可以在 http://cmf.zope.org/download/CMF-1.4.2 取得所需的檔案。無論妳抓的是 CMF-1.4.2.tar.gz 或 CMF-1.4.2.zip ,解開之後都會得到一個叫 CMF-1.4.2/ 的目錄,我們要把它移動到 Zope 目錄中的 lib/python/Products 子目錄裡;接續前一段的範例,妳可能會下達這樣的指令:

mv CMF-1.4.2/* /usr/local/z270/lib/python/Products

如果妳打算把 CMF 安裝到 FreeBSD 上的話,祇需要使用 ports 就能夠輕易完成。首先請以 root 身份登入,然後執行:

cd /usr/ports/www/zope-cmf
make clean install

當然,如果妳自己的帳號隸屬於 sudoer 的話,妳也可以用 sudo 來做這件事:

cd /usr/ports/www/zope-cmf
sudo make clean install

就這樣。 Zope 和 CMF 的架構已大抵底定。

Plone

Plone 又名 CMFPlone ,顧名思義,是 CMF 架構下的應用程式,其官方網頁位於 http://plone.org/ ;截稿前 Plone 的最新版是 2.0 版,妳可以到 http://plone.org/downloads 下載各個作業系統上預先編譯好的套件或安裝檔。舉例來說,如果妳打算把 Plone 安裝到 Windows 系統的 Zope 伺服器上的話,妳就應該要下載 http://prdownloads.sourceforge.net/plone/Plone-2.0-build.0315.exe?download 纔對。如果妳打算把 Plone 安裝到 FreeBSD 上的話,祇需要使用 ports 就能夠輕易完成。首先請以 root 身份登入,然後執行:

cd /usr/ports/www/plone
make clean install

當然,如果妳自己的帳號隸屬於 sudoer 的話,妳也可以用 sudo 來做這件事:

cd /usr/ports/www/plone
sudo make clean install

就算妳打算手動安裝 Plone 也不難,大致上就祇需要把妳取得的套件解開,妳應該會得到像 CMFPlone-2.0/ 的目錄,然後請把這個目錄裡所有的檔案移動到 Zope 伺服器的 lib/python/Products/ 目錄裡。實際會用到的指令像是:

mv CMFPlone-2.0/* /usr/local/z270/lib/python/Products

然後妳還得重新啟動 Zope 伺服器:

/usr/local/z270/stop
/usr/local/z270/start

然後同樣地,請用網頁瀏覽器連線到 Zope 的管理頁面去,並點選左邊的「 Root Folder 」;現在在右邊的捲軸裡點選「 Plone Site 」,填入站台 ID ,這個 ID 會用於網址,所以請填寫 plone 。底下的選項區應該有一個叫「 Site Type 」的值,能夠選擇「 Default Plone 」或「 Private Plone Site 」;前者是把 Plone 設為公開站台,任何人都可建立新帳號加入;後者則是把加入的權限交給管理者,除非管理者幫忙建帳號,不然將無法使用 Plone 。

現在請點選「 Add Plone Site 」按鈕,即可看到 Plone 畫面;請點選左邊最下面的「 Refresh 」,目錄裡會出現 plone ,請點選之,這麼一來右邊就會出現管理介面了。

日後祇需要用網頁瀏覽器連線到像 https://jedi.org:8080/plone 這樣的位址,就能夠顯示妳剛剛裝起來的 Plone 了。再一次地,請別忘記把 jedi.org 代換成妳自己的 Zope 伺服器位址。

這樣安裝起來的 Plone 可能會有中文相容性的問題;請至 http://zope.slat.org/ 察看你所安裝起來的 Plone 版本是否還需要進一步的補綴。另外,妳也該到 Plone 的管理介面中,把預設的文字編碼改成 Big5 或 UTF-8 纔行。詳情也請一併參照上述網站。

CMFWeblog

要在 Plone 上更輕易地營運部落格,就應該再安裝 CMFWeblog 。這個套件在截稿前所釋出的最新版本是 0.6 版,妳可以在 http://sourceforge.net/projects/collective 取得 CMFWeblog-0.6.tgz ;另外我們還需要 RPCAuth 這個套件,此套件於截稿前所釋出的最新版本則為 0.4 版,妳也可以在 http://sourceforge.net/projects/collective 取得 RCPAuth-0.4.tgz 。把這兩個檔案都解開後,就會分別得到 CMFWeblog-0.6/ 和 RPCAuth-0.4/ 這兩個目錄;再一次,我們得把這兩個目錄裡的檔案都搬移到 Zope 目錄中的 lib/python/Products 子目錄裡;接續前一段的範例,妳可能會下達這樣的指令:

cp -r CMFWeblog-0.6 /usr/local/z270/lib/python/Products
cp -r RPCAuth-0.4 /usr/local/z270/lib/python/Products

接下來我們需要重新啟動 Zope ,實際會用到的指令如下:

/usr/local/z270/stop
/usr/local/z270/start

然後使用網頁瀏覽器連到妳的 Zope 站台。比方說,如果妳的網頁伺服器位址是 https://jedi.org/ 的話,就應該連到 https://jedi.org:8080/manage 去;這時網頁伺服器會詢問帳號密碼,請輸入 admin 以及我們在安裝 Zope 時所決定的 admin 密碼。進入系統後,點選左方的 plone 以進入 Plone 管理頁面。

接下來請在捲軸選 CMF Weblog Tool 俟換頁後再點選 CMF Weblog Tool , 按下 Add 即可。同時請在 plone/ 下新增 portal_weblog 。如果妳想使用討論功能,讓讀者能對每篇文章加上評論或迴響的話,也可以在 plone/portal_types/Weblog Entry/ ,將最末一項 Allow Discussion 開啟。

要使用 CMFWeblog 時,首先妳得用網頁瀏覽器連線到像是 https://jedi.org:8080/plone 這樣的路徑,並以一般使用者身份進入系統。其中 jedi.org 請代換成妳自己的 Zope 站台位址。接下來請到 my folder ,並於捲軸選 Folder 來新增目錄:

  • Name: weblog_storage (名稱必須相同)
  • Title: (部落格的標題,可以隨意填寫)
  • Description: (部落格的描述,可以隨意填寫)

別忘了按下 save 按鈕,這纔完成目錄建立。然後在 weblog_storage 目錄選擇上方 state 標籤,在下一個畫面裡,選擇最下方 Make visible ,再按 save 按鈕;如此一來網站成員 (Member) 才可以瀏覽。終於,妳可以開始在 weblog_storage 加入網誌文章 (Weblog Entry) 了。點選「 add to weblogs 」標籤後不會有甚麼實際作用,妳還得在「 contents 」中,點選捲軸項目「 Weblog Entry 」纔行。

在「 View 」中的「 Go weblog 」可以用來瀏覽所有的部落格;不過如果妳要讓別人看得到部落格的話,請務必記得要在該項「 Weblog Entry 」的「 state 」中設定「 Make visible 」纔行。另外,對於一般讀者來說,如果要瀏覽使用者 foo 的部落格的話,其網址會是 https://jedi.org:8080/plone/Members/foo/weblog 。別忘了,在這個範例中,妳該把 jedi.org 代換成妳自己的 Zope 站台網址。

除了我們剛剛所介紹用 Perl 寫成的 Blosxom 和 Movable Type ,以及用 Python 寫成、以 Zope 和 CMF 為底層架構的 Plone 及 CMFWeblog 外,有許多人更為熟悉的腳本語言其實是 PHP ,而當然也有用 PHP 寫成的部落格系統。在眾多 PHP 部落格系統當中,發展最為活躍的大概就是 WordPress 和 pLog 了。國內對這兩套部落格系統掌握得最透徹的,要非 zonble 莫屬;他的部落格位於 http://zonble.twbbs.org/ ,也會不定期地介紹這兩套系統及講解修改技巧,同時 zonble 也對這兩套部落格系統製作了中文語系套件,對於推廣部落格來說也是不餘遺力、功不可沒。

筆者在本文照樣也僅針對這兩套系統的安裝進行摘要,各項設定的細節以及使用的方法還請諸位讀者自行閱讀線上文件。

WordPress

WordPress 的前身是 b2 ,又稱 CafeLog 。這個名為 WordPress 的正統 b2 後續版本可以說是長足的進步。不但在功能、使用介面上都煥然一新,前一陣子纔剛結束的樣式表大賽,跟持續進行中的多國語言開發計畫,更是讓 WordPress 不祇成熟許多,也叫人驚豔!

如果妳打算安裝 WordPress 作為部落格系統的話,首先請抓日本人所製作的 http://prdownloads.sourceforge.jp/wordpress/9045/wordpress-me103.zip ,這是支援多國語系的 WordPress 1.0.3 版。另外妳還得抓 zonble 做好的中文語系檔,這個檔案位於 http://rt.openfoundry.org/Foundry/Project/Download/?Queue=91 ,請抓取 lang_tw.php 。兩個檔案都抓下來後,請把 wp1.0_multi.zip 解開,得到名為 wordpress/ 的目錄;然後再將我們剛剛抓到的 lang_tw.php 放進 wordpress/wp-lang/ 目錄底下。

然後妳得先在網頁伺服器上的 MySQL 資料庫系統裡,建立一個用來安裝 WordPress 的資料庫,並新增專屬的使用者,調整其權限(如果妳要用的 MySQL 資料庫跟網頁伺服器位於不同的主機,就請去資料庫伺服器上做這件事)。有的虛擬主機廠商會提供 phpMyAdimn 這套(也是用 PHP 寫成的)網頁介面的 MySQL 管理程式,還有中文介面,就能夠輕易地做完這件事。如果妳在自己的網頁伺服器上安裝了 AppServ 套件,裡面也會有 phpMyAdmin 可用。(當然妳也可以自己手動安裝 phpMyAdmin )

備妥資料庫後,我們還要修改 wordpress/wp-config.php ;如果妳沒看到這個檔案,請把 wordpress/wp-config-sample.php 複製一份成 wordpress/wp-config.php 。然後我們要設定資料庫名稱、資料庫使用者名稱、資料庫使用者密碼、資料庫主機位置(如果妳的資料庫跟妳的網頁伺服器位於同一台機器上,這裡就設定成 localhost ):

define('DB_NAME', 'wordpress');     // 請把 wordpress 代換成妳準備給 WordPress 用的 MySQL 資料庫名稱。
define('DB_USER', 'username');     // 請把 username 代換成妳準備給 WordPress 用的 MySQL 使用者名稱。
define('DB_PASSWORD', 'password'); // 請把 password 代換成妳準備給 WordPress 用的 MySQL 使用者密碼。
define('DB_HOST', 'localhost');     // 如果妳的 MySQL 資料庫位於別台機器上的話,請把這裡的 localhost 代換成資料庫伺服器的位址。

這四項設定值都是我們在前一個步驟裡設定好了的。除此之外,我們還要把語系改成繁體中文。請先找到這一列:

require_once(ABSPATH.'wp-lang/lang_ja.php');

然後把 lang_en.php 改成繁體中文語系檔 lang_tw.php :

require_once(ABSPATH.'wp-lang/lang_tw.php');

修改完並存檔後,接下來就是把這整個 wordpress/ 目錄上傳到網頁伺服器上、可以執行 PHP 腳本的目錄裡,然後加以執行安裝腳本。如果妳的網頁伺服器位於 https://jedi.org/ ,那麼妳可能就得用網頁瀏覽器連線到 https://jedi.org/wordpress/wp-admin/install.php ,就可以把 WordPress 給裝起來了。事實上,如果妳從來沒有執行過安裝腳本的話,那麼當妳連線到像 https://jedi.org/wordpress/ 的位址時,就會出現一個連往安裝腳本的鏈結。

然而不幸的是,官方的語系檔似乎沒有整理得很好,許多功能的標題還是沒有放到語系檔裡;安裝的部分也有部分訊息沒有處理好,所以在安裝時,會出現一個要求妳輸入網站網址的對話框。請注意,在 WordPress 的設計中,這個網址的最後請不要加入斜線。比方說,如果妳想將 WordPress 裝在 https://jedi.org/ 或 https://jedi.org/wordpress/ 下的話,就祇需要填入 https://jedi.org 或 https://jedi.org/wordpress 即可。

不過我們還得再調整一些地方,纔能正確使用中文字。請進入管理介面,在 Options 裡的 General blog settings 中,找到 use_htmltrans 選項,並選擇 false 以關閉之。另外迴響的部分處理雙位元文字有一些問題,我們得加以補綴:

請編輯 wordpress/wp-includes/kses.php ,找到這一列(應該是在第 414 列):

$string = preg_replace('/\xad+/', '', $string); # deals with Opera "feature"

請把這一列修改成這樣:

$string = ereg_replace('/\xad+/', '', $string); # deals with Opera "feature"

如此即可。恭喜妳, WordPress 安裝成功了。

pLog

pLog 是最近又突然竄起的新興部落格系統,一樣由 PHP 寫成,國內一樣由 zonble 做了中文化,他同時還寫了一些教學文件,甚至還補綴了樣式表 (CSS) 檔案,如果這是妳打算安裝的部落格系統,就不能錯過 zonble 自己的部落格。

廢話不多說,讓我們來看看怎麼安裝 pLog 吧。 pLog 的官方網站位於 http://www.plogworld.org/ ,截稿前最新的正式釋出版本是 0.3.1 版,妳可以到 http://sourceforge.net/project/showfiles.php?group_id=83964 取得所有的版本。舉例來說,當妳取得了 plog-0.3.1-beta1.tar.gz 後,解開可以得到一個 plog-0.3.1-beta1/ 的目錄,請把這個目錄裡所有的檔案都上傳到妳的網頁伺服器上、可以公開讀取而且能夠執行 PHP 腳本的目錄裡。切記要維持相同的目錄結構。

一樣地, pLog 也得使用 MySQL 來當作資料庫後端,所以妳也得先在網頁伺服器上的 MySQL 資料庫系統裡,建立一個用來安裝 WordPress 的資料庫,並新增專屬的使用者,調整其權限(如果妳要用的 MySQL 資料庫跟網頁伺服器位於不同的主機,就請去資料庫伺服器上做這件事)。有的虛擬主機廠商會提供 phpMyAdimn 這套(也是用 PHP 寫成的)網頁介面的 MySQL 管理程式,還有中文介面,就能夠輕易地做完這件事。如果妳在自己的網頁伺服器上安裝了 AppServ 套件,裡面也會有 phpMyAdmin 可用。(當然妳也可以自己手動安裝 phpMyAdmin )

除此之外,妳還得確認 pLog 所在目錄下的 tmp 子目錄、及 config 子目錄下的config.properties.php 檔案,兩者都得要具有可以寫入的權限,否則將無法安裝。如果妳的網頁伺服器位於 https://jedi.org/ ,而且 pLog 安裝在 plog/ 裡的話,此時妳就可以用任何網頁瀏覽器,連結到 pLog 的安裝頁面 https://jedi.org/plog/wizard.php 。在這個安裝精靈畫面中,妳得填寫資料庫主機位置(如果妳的 MySQL 資料庫跟網頁伺服器在同一台機器上的話,這裡就填寫「 localhost 」吧)、資料庫使用者名稱、使用者密碼、資料庫名稱以及資料庫欄位名稱的前綴字串(這一項通常不用改),然後按下「繼續」按鈕,安裝精靈就會將設定寫入設定檔中,並且建立好資料庫欄位。最後系統還會要求妳建立一個預設的部落格,以及第一個使用者的帳號、密碼,安裝即告完成。

然而剛裝好的 pLog 還不能使用中文,所幸 zonble 已經製作了 pLog 的中文語系檔。請取得 http://zonble.twbbs.org/files/locale_zh_TW.php.zip ,解開後有個 locale_zh_TW.php ;現在請進入 pLog 管理畫面(遵循前一個範例的話,就會是 https://jedi.org/plog/admin.php ),進入「 Site Admin 」選單,然後再進入「 Upload Locale 」,並使用畫面裡的上傳表單來把 locale_zh_TW.php 上傳到伺服器上。上傳語系檔案前,請先確保 pLog 安裝目錄底下的 locale 子目錄也同樣具備寫入權限,否則上傳就會失敗。

上傳語系檔後,請再到「 Site Admin 」的「 Global Settings 」裡,將「 default_locale 」切換成「 zh_TW 」,便可以將 pLog 中預設的語文改為繁體中文。此時妳所看到的話面仍舊會是英文的,祇需要進入「 Settings 」選項,將「 Language used to the texts and date 」切換成「 zh_TW 」,即可即刻把目前的介面切換成繁體中文。

另外, zonble 也針對 pLog 管理介面中的 CSS 做了更新,能夠補綴 Internet Explorer 中不正常的顯示,並解決選單上的中文斷字問題。請下載 http://zonble.twbbs.org/files/admin.css.gz ,把解開後得到的 admin.css 上傳到 pLog 安裝路徑底下的 styles 字目錄裡,代換掉原有的 admin.css ,即可享受到 zonble 的精心調校。至 此,妳已將 pLog 安裝妥當,也能正常使用中文了。至於詳細的操作、設定、注意事項等,請善用線上文件,並請時時留意 zonble 的部落格(笑)。

Apache

上述的部落格系統中,除了 CMFWeblog 和 Plone 是利用 Zope 外,其他的部落格系統都得另外安裝在網頁伺服器上;多數的部落格系統都可以安裝在各式各樣的網頁伺服器上,祇要能夠支援所需的 CGI 環境即可。然而在眾多網頁伺服器裡,最廣受歡迎(而且也免費)的,就屬 Apache 了。

如果妳的網頁伺服器是 Windows 的話,可以直接到 http://httpd.apache.org/download.cgi 下載所需的安裝檔,解壓縮後執行 setup.exe ,就能夠輕易地把 Apache 給裝起來。如果妳的網頁伺服器是 FreeBSD 的話,則可以利用 ports 來安裝 Apache 。首先請以 root 身份登入,然後執行:

cd /usr/ports/www/apache13
make clean install

如果妳打算裝新一代的 Apache2 的話,則是:

cd /usr/ports/www/apache2
make clean install

當然,如果妳自己的帳號隸屬於 sudoer 的話,妳也可以用 sudo 來做這件事:

cd /usr/ports/www/apache13
sudo make clean install

如果妳打算裝新一代的 Apache2 的話,則是:

cd /usr/ports/www/apache2
sudo make clean install

至於使用其他作業系統的伺服器,則可以到 http://httpd.apache.org/download.cgi 下載預先編譯好的各平台執行檔,或直接取得源碼自行編譯。

MySQL

另外,在上述的部落格系統中, WordPress 和 pLog 一定需要 MySQL 資料庫纔能使用; Movable Type 預設祇需要 Berkeley DB 就行了,不過有 MySQL 的話也可以用 MySQL 。 Blosxom 可以說完全不需要資料庫後端,而 CMFWeblog 和 Plone 則是仰賴 CMF 來處理內容。

如果妳的資料庫伺服器是 Windows 的話,可以直接到 http://www.mysql.com/downloads/ 下載所需的安裝檔,解壓縮後執行 setup.exe ,就能夠輕易地把 MySQL 給裝起來。如果妳的資料庫伺服器是 FreeBSD 的話,則可以利用 ports 來安裝 MySQL 。首先請以 root 身份登入,然後執行:

cd /usr/ports/databases/mysql323-server
make clean install

如果妳打算裝 MySQL 4.1 版的話,則是:

cd /usr/ports/databases/mysql41-server
make clean install

當然,如果妳自己的帳號隸屬於 sudoer 的話,妳也可以用 sudo 來做這件事:

cd /usr/ports/databases/mysql323-server
sudo make clean install

如果妳打算裝 Apache2 的話,則是:

cd /usr/ports/databases/mysql41-server
sudo make clean install

至於使用其他作業系統的伺服器,則可以到 下載預先編譯好的各平台執行檔,或直接取得源碼自行編譯。

順帶一提的是,要在 FreeBSD 上安裝前面提過的 phpMyAdmin 的話,也可以透過 ports 來達成。首先請以 root 身份登入,然後執行:

cd /usr/ports/databases/phpmyadmin
make clean install

當然,如果妳自己的帳號隸屬於 sudoer 的話,妳也可以用 sudo 來做這件事:

cd /usr/ports/databases/phpmyadmin
sudo make clean install

除了 Apache 和 MySQL 以外,妳往往也得準備好執行 CGI 腳本所需的環境。根據部落格系統的不同,妳也許會得安裝 Perl 或 PHP 或其他的東西。妳可以到 http://www.perl.com/download.csp 取得各種作業平台上已編譯好的 Perl ,或取得最新的 Perl 源碼自行編譯;另外妳也可以到 http://www.php.net/downloads.php 取得各種作業平台上已編譯好的 PHP ,或取得最新的 PHP 源碼自行編譯。當然,如果妳是在 FreeBSD 上的話, ports 再次能讓事情更容易。首先請以 root 身份登入,然後執行:

cd /usr/ports/lang/perl5.8.3
make clean install
cd /usr/ports/lang/php
make clean install

當然,如果妳自己的帳號隸屬於 sudoer 的話,妳也可以用 sudo 來做這件事:

cd /usr/ports/lang/perl5.8.3
sudo make clean install
cd /usr/ports/lang/php
sudo make clean install

這樣就能把該裝的都裝起來了。

AppServ

如果妳打算把伺服器安裝在 Windows 上,又很羨慕 FreeBSD 有如此方便的 ports 可用,那麼妳其實可以到 http://www.appservnetwork.com/ 抓取 AppServ 。這個綁兜套件裡,一口氣就會幫妳把 Apache 、 MySQL 、 PHP 、 phpMyAdmin 都裝起來;在更新的版本裡,甚至連 Perl 都會一併裝起來了,相當地方便。

以上就是如何把部落格系統安裝起來的精華資訊。如果妳的功力更為高深、想要自己發展一套部落格系統的話,請繼續閱讀接下來的專欄。


按:這一系列的報導據說共有四篇,但是祇有前兩篇是我寫的;有興趣的朋友,大概就得去買雜誌纔能看到其他東西囉。

jedi.org: