1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
這篇文章在描述怎麼架設 PttBlog, 最後的編修及版號是:
$Id$
請注意, PttBlog本來主要是設計給 Ptt2 站台使用, 目前正在開發階段,
並未接受嚴密的測試, 可能還缺少很多功能, 以及可能有許多的 bug.
您可以按照下列的步驟安裝好 PttBlog.
1.安裝好下列的東西, 我們並同時列上 FreeBSD ports內的目錄:
apache /usr/ports/www/apache13/
perl /usr/ports/lang/perl5.8/
mod_perl /usr/ports/www/mod_perl/
mysql /usr/ports/databases/mysql323-server/
以及下列的 module
Template /usr/ports/www/p5-Template-Toolkit/
Date::Calc /usr/ports/devel/p5-Date-Calc/
DBI /usr/ports/databases/p5-DBI/
DBD::mysql /usr/ports/databases/p5-DBD-mysql/
MD5 /usr/ports/security/p5-MD5/
Mail::Sender /usr/ports/mail/p5-Mail-Sender/
OurNet::FuzzyIndex (還沒有進 ports, 請用 cpan 裝)
2.設定 apache 可以直接透過 mod_perl 來跑 perl script .
在您的 apache.conf (or httpd.conf)中, 應該會有:
LoadModule perl_module libexec/apache/libperl.so
AddModule mod_perl.c
在<IfModule mod_mime.c></IfModule>中間, 加上這兩行:
AddHandler perl-script .pl
PerlHandler Apache::Registry
3.設定好 blog 的 web目錄. 裡面至少要有 index.pl, blog.pl, LocalVars.pm
(其中 LocalVars.pm 建議用 symbolic link 到 /home/bbs/bin/的那一份)
其中 *.pl 的權限要是可以執行的 (ex: chmod 755 *.pl)
4.設定 apache 指到 blog 的目錄. 並將該目錄開始 ExecCGI的 option.
例如使用 Virtual Host :
NameVirtualHost *
<VirtualHost *>
ServerName blog.ptt2.cc
DocumentRoot /home/bbs/blog/web
<Directory "/home/bbs/blog/web">
Options ExecCGI
</Directory>
</VirtualHost>
5.將 builddb.pl, BBSFileHeader.pm 拷貝進 ~bbs/bin
您可以嘗試用 perl -c ~bbs/bin/builddb.pl 測試看看能不能過.
若不行的話, 通常是 LocalVars.pm 裡面少東西,
請參考 pttbbs/sample/LocalVars.pm 的 blog 區.
6.參考 pttbbs/sample/pttbbs.conf中, 在您的 pttbbs.conf中加入
BLOGDB_HOST, BLOGDB_USER, BLOGDB_PASSWD, BLOGDB_DB, BLOGDB_PORT, BLOGDB_SOCK
並且重新 compile mbbsd, 在 make 時加入 WITH_BLOG=yes .
然後 install 並且 restart
7.關於 Mysql共須要下面兩個 table (可以直接複製過去跑)
CREATE TABLE `comment` (
`brdname` varchar(13) NOT NULL default '',
`artid` int(11) NOT NULL default '0',
`name` varchar(32) NOT NULL default '',
`mail` varchar(64) NOT NULL default '',
`content` text NOT NULL,
`mtime` int(11) NOT NULL default '0',
`hash` varchar(32) NOT NULL default ''
) TYPE=MyISAM;
CREATE TABLE `counter` (
`k` char(32) NOT NULL default '',
`v` int(11) NOT NULL default '0',
`mtime` int(11) NOT NULL default '0',
PRIMARY KEY (`k`)
) TYPE=MyISAM;
|