雅勒尼恩

Athenaeum

寫在最前

似乎最近BBS越來越少人在用了,大多數人的社交選擇都變成了Facebook、Twitter、Plurk等地方,雖然PTT上還是有近10萬人在線上,但其他站幾乎都沒落了。所以我打算架好屬於INFOR的BBS,讓大家可以回味一下過

網的時代。

源起

根據 https://goo.gl/fgKQjM 及 https://goo.gl/02ye5S 中hialan學長所述,雅勒尼恩是由WD BBS修改而成,其中混和了一些Maple BBS的東西,由下圖可知其實WD是

來自PTT,而PTT又是來自

Maple,所以PTT跟WD的

相仿性仍是有的。

安裝PTTBBS

What We Need

Git

git是一個去中心化的版本控制軟體。同時,我們也可以將有些人放在網路上的資料複製下來,以PTTBBS來說,其就是放在GitHub上,所以要載下來需要先裝個git。

Clang

Clang是一個C/C++、Objective-C/C++的編譯器前端,並且採用了LLVM作為其後端。其在錯誤提示與編譯速度上幾乎都比GCC來得優良

Ccache

為了避免編譯大型C/C++專案時會花上過久的時間,ccache透過將標頭檔快速緩衝到原始碼中改進了編譯時的效能,減少了編譯時加入標頭檔所花的時間,因而提高了整體編譯時的效率

Libevent

Libevent是一個C/C++函式庫,用來處理異步事件,它使得我們能在C/C++中做到類似JS的event功能,在許多網路伺服器上都有很好的應用。

Pkg-config

開發C程式時常會用到許多系統已裝好的Library,這時,我們可能會需要知道header跟library放在哪裡,若僅僅手動去尋找所花時間太高,因此使用pkg-config可以讓我們方便查詢其位置甚至是編譯時可能會需要用到的參數。

Mutt

Mutt是一個能夠讓你透過命令列寄信的前端軟體,BBS系統中若要寄信,將會由他實現

Enviromental Setting

新增使用者

在使用root權限下

vim /etc/passwd之後,加入兩隻帳號bbs及bbsadm

修改使用者群組

在使用root權限下

vim /etc/group之後,將先前所設之群組確實建立出來

修改使用者密碼

在使用root權限下,執行

passwd bbsadm

建立使用者家目錄

在使用root權限下,執行

mkdir /home/bbs

chown bbs:bbs /home/bbs

chmod 700 /home/bbs

Compile BBS

download pttbbs

前面有提到目前pttbbs的原始碼是放在github上面,所以要下載就需要一些git的指令。

這裡稍微說明一下可能會用到的git指令

git clone將他人的程式碼下載下來到自己的資料夾中

git pull將本地版本更新至最新的版本

git rebase將兩版本合併

download pttbbs

用bbsadm登入後

cd 到自己的家目錄,並執行

git clone https://github.com/ptt/pttbbs.git

並且複製一份config出來

修改config檔案

vim ~/pttbbs/pttbbs.conf

若是採用遠端連線登入主機時,可能會出現亂碼的情況,這是因為該檔案的編碼是big5,所以可能會需要將檔案下載回自本機端修改才會比較方便。

修改config檔案

因為我們的主機是64bit的,但是預設PTTBBS是裝在32bit的電腦上,所以要特別注意要在config中,將原先被註解掉的

SHMALIGNEDSIZE跟TIMET64回復,或是直接在任意的地方鍵入

#define SHMALIGNEDSIZE

#define TIMET64

#define SHMALIGNEDSIZE ???

SHMALIGNEDSIZE其實是 shared memory aligned size 的縮寫。其中shared memory簡單來說是讓多個程式能夠訪問同一塊記憶體,進而達到高速的程式與程式之間的溝通。

在創建一塊shared memory

時,需要指定大小,而在

x86-64的環境時需要4MB的

記憶體。

#define TIMET64 ???

time_t是C/C++中的一個型別,但是其大小並沒有一個統一,會視作業系統而定,而這裡因

為我們是要灌在64位元的電腦

上,所以記得把它改成8 bytes

修改config檔案

若是先前有修改到bbsadm的gid跟uid時,請記得在這裡將之改好,而若是當初帳號名稱不是叫做bbs也需在此修改。

另外,PTTBBS很貼心的提供

了一些預設的板,有些板若是

覺得沒有必要的話,可以將其

註解掉。但是這些預設開啟的

板除了在這註解掉,還要去修

改include/config.h

開始編譯

記得先確定以下套件都有裝

  • bmake/pmake
  • clang
  • ccache
  • libevent
  • tar
  • gzip
  • perl
  • lynx
  • mutt
  • pkg-config

編譯PTTBBS

除了要安裝那些以外,也請注意自己的python版本,記得讓你在打python時要是執行python2

先將make alias 成pmake,也就是alias make='pmake *'

接者cd 到 ~/pttbbs底下,執行

make BBSHOME=/home/bbs all install

期間會跳出許多的Warning,幾乎都是

說有東西沒用到,所以基本上可以忽略

他們。

 

編譯PTTBBS

因為有些人會是要把原先的PTTBBS更新,所以只執行上面的動作並不會完整編譯好一個BBS所需的東西,所以可以cd至sample後,執行make install,並且再去執行bin/initbbs 將整個bbs初始化好

Launch Your BBS

啟動BBS

先將原本的共用記憶體清乾淨,並初始化,也就是執行

/home/bbs/bin/shmctl init

接下來就真的可以把bbs跑起來了,只要執行

sudo /home/bbs/bin/mbbsd -p 23 -d

其中-p是指定他去聆聽23 port,23port預設都是telnet在走的,而-p則是讓他在daemon

mode下跑。

開啟BBSCTL

bbsctl是一個PTTBBS自帶的管理套件,基本用法是

bbsctl start

bbsctl stop

bbsctl restart

但是bbsctl預設不會開啟,要

使用的話,要再去編譯

編譯BBSCTL

先用bbsadm去pttbbs/util去make,把整個檔案編譯好。

再用root的權限去執行make

installbbsctl,這時就可以執行

bin/bbsctl了。

End

?

BBS SETTING

等等,帳號哩?

不是自己new就好了嗎?可是我要new什麼?

要獲得管理權限,首先要去new一個名叫SYSOP的帳號,登出再登入後,他就會自動擁有管理權限。

那這時就可以管理大家的申請了

說好的guest呢

阿自己new一個阿(?

new的時候會發現他被保留起來了,所以就先隨便new一個帳號,之後再用SYSOP的權限,將其名稱改回guest即可

End

Thank Everyone

Athenaeum

By Tommy Chiang

Athenaeum

  • 538