作者holishing ()
看板PttCurrent
標題[心得] CurrentPtt個人記錄 - 近期 Linux 安裝
時間Fri Apr 28 00:40:09 2017
*以下只是個人經驗紀錄, 若各種有錯誤之處還麻煩指正。
--
雖然 Ptt 站方已經將該原始碼的編譯安裝方式
放到本板精華區以及 github 上了 (
https://github.com/ptt/pttbbs )
但因發現實際摸索安裝過程中, 解決細部問題的方法仍較難從上述的文件中直接得知
所以就自己目前嘗試過的經驗來記錄自己於近期安裝的方法與過程,
讓路過的板友可以參考。
並穿插搭配原本的官方安裝文件 docs/INSTALL 作為對照
(
https://github.com/ptt/pttbbs/blob/master/docs/INSTALL )
希望能夠使本記錄更加清楚。
==
0. 安裝作業系統
在正式進行 PttBBS 的設定與安裝之前,首先要安裝合適的作業系統在它底下運行
目前聽說可以編譯原始碼安裝該程式的平台, 就是 Linux、FreeBSD、Sun Solaris..等
(Mac OS X 好像也可以)
可以在 Windows 編譯安裝的版本還沒聽說過, 據說站方也沒打算支援
而自己則是用
Linux 核心的作業系統來嘗試,
在這裡的記錄用的 Linux 發行版本, 則會採用目前仍算主流的
Ubuntu 作業系統
詳細版本為:Ubuntu 16.04.2 Desktop 64bit
(但其實各發行版的相關安裝步驟都大同小異,若有不同之處會將想到的註明附上)
而關於各作業系統(發行版)的安裝方式在此不贅述,
僅建議參考相關論壇或看板搜尋各教學資訊.
以 Linux 為例, 則是建議參考 Linux 看板, 該板也放了很多實用教學網站論壇的連結.
像是鳥哥的Linux私房菜裡面的資料就值得一看
另外會建議如果只是為了測試練習而安裝所需作業系統,
將它們裝在
虛擬機器裡後再來進行練習即可,不必去安裝雙系統或直接更換作業系統
減少不必要麻煩。
更能輕鬆簡單就測試出自己架的 PttBBS
這裡用 VirtualBox 來安裝 Ubuntu 後,進行以下記錄
(其他類似軟體如 VMware、QEMU 亦有此類功能)
以下直接記錄到 開始設定安裝 PttBBS 運作程式的部分。
==
: 這篇文件說明快速安裝的方法, 文章的版號及最後編修時間是:
: ==============
: 以 root 的權限
: ==============
在 Linux 裡,不是直接登入 root 帳號,就是在自己主要會用的帳號開啟 terminal
輸入 sudo su 再打自己密碼後,即可獲得該權限。
http://i.imgur.com/S1RUO9K.png
: 在主機上加入兩個 UID 為 9999 的帳號,分別取名為 bbs 與 bbsadm。
: 家目錄設為 /home/bbs,Group 則取名叫 bbs,GID=99。
: bbs 的 shell 設成 /home/bbs/bin/bbsrf,不設密碼。
: bbsadm 的 shell 設成 /bin/sh (或 csh/bash, 選喜歡的即可)並設定密碼。
這段就是說明要建立的帳號, 使BBS程式之後能主要以該帳號的權限運作
(然後以下是用 Test BBS 暫時當帳戶名,實際上帳戶名可有可無)
shell 部分一般常用的就是bash ( /bin/bash ), 當然也可依自己的喜好來改
自己到時要登入bbsadm的帳戶設定時, 操作順利即可.
: 以 FreeBSD 為例:
: 1. 打 vipw, 加入底下兩行
: bbs::9999:99::0:0:Ptt BBS:/home/bbs:/home/bbs/bin/bbsrf
: bbsadm::9999:99::0:0:Ptt BBS:/home/bbs:/bin/csh
而自己在 Linux 裡,是這樣設定的:
一樣通常輸入 vipw 送出後,好心的系統會問你要用哪一個編輯器?
http://i.imgur.com/8lpmadf.png
對於新手而言就是選 nano 最方便直覺了,如果真的沒辦法必須用更傳統的編輯器的話
( ed , vi , vim ...)
也有網路上教學資源可以參考。
之後就在最後兩行依照前面類似的形式 (細節意義請參考各個Linux教學資源)
鍵入:
bbs::9999:99:Test BBS,,,:/home/bbs/:/home/bbs/bin/bbsrf
bbsadm::9999:99:Test BBS,,,:/home/bbs:/bin/bash
http://i.imgur.com/l9LpxYQ.png
之後存檔離開 (用 nano 的話也是Ctrl+X後依照系統提示存檔)
之後系統會提示你要 vipw -s 編輯另一個設定檔
但自己的作法則是再 passwd bbsadm 設定好 bbsadm 帳號的密碼後就不必管它了。
: 2. 執行 passwd bbsadm 設 bbsadm的密碼
: 3. 在 /etc/group 中加入一行
: bbs:*:99:
這裡則是在一樣的地方加上一行:
bbs:x:99:
http://i.imgur.com/Jx8gAk7.png
: 4. 執行 mkdir /home/bbs
: 5. 執行 chown bbs:bbs /home/bbs
: 6. 執行 chmod 700 /home/bbs
看似基本但重要, 沒弄好各種設定或程式執行上都會遇到不少麻煩
之後如果遇到問題要重新設定全部資料夾的權限我會在 chown 後面再加 -R 參數
其他指令意義就參考相關教學.
: 當然,你也可以用 adduser 或 useradd 等等程式幫忙建立與設定。
以上步驟也可以使用 addgroup、adduser 等指令完成
(man addgroup或man adduser照說明以及前面提到各帳號的重要資訊弄即可)
之後的過程,可能會先建議你安裝一些自己有記到該安裝的套件,
會減少一些摸索的時間
因為 Linux 各發行版本或不同的安裝設定就會使原本有的套件不盡相同
造成之後在嘗試在執行一些指令時會因為剛好沒安裝到,
使得結果不如預期甚至卡住,
以下是建議先安裝的套件清單,可以用 apt-get 等指令檢查自己有沒有安裝到:
git
pmake
clang
ccache
libevent-dev
: ====================
: 以下用 bbsadm 的身份
: ====================
: 7. 您可以透過下列方式下載到本站的原始程式碼:
: https://github.com/ptt/pttbbs
: 這是目前主要開發的版本, 也是批踢踢實業坊和批踢踢兔兩個站台
: 所使用的版本. 在這個版本中含有最新的程式, 但是可能會不穩定,
: 有 bug, 甚至和之前的版本不相容. 建議您有基礎的程式能力, 並
: 隨時注意 PttCurrent 看板 (在 telnet://ptt.cc 中, 或可以使用
: 網頁版本 http://www.ptt.cc/bbs/PttCurrent/index.html) , 尤
: 其當您在更新程式的時候.
進去 bbsadm, 確認自己在 /home/bbs 底下後,就可以執行:
: git clone http://github.com/ptt/pttbbs
執行過程如圖:
http://i.imgur.com/IeMRaRZ.png
之後就如說明:
: 您可以在該目錄下直接透過 git pull 更新至 pttbbs 最新的源碼. 如:
: cd /home/bbs/pttbbs; git pull; git rebase
: 8. 切換到 pttbbs 的目錄下 ( cd ~bbs/pttbbs )
: 9. 如果您的 pttbbs.conf並不存在, 可以拷一份預設的來用:
: cp sample/pttbbs.conf pttbbs.conf
到這裡就要注意了
: 10.依據您的須求, 修改 pttbbs.conf
這時候就可以依自己喜好及相關需要選擇各種編輯器了 (像是 gedit 或其它介面等)
另外因為pttbbs裡面的中文編碼是Big5,因此如果的編輯器顯示起來是亂碼
http://i.imgur.com/PphNvLb.png
就要注意去調整相關字元編碼的設定,才能正確顯示
http://i.imgur.com/T4hzjSd.png
另外也要注意自己是否有權限編輯 (如果沒有,則要提升權限or切換執行的使用者
: 請注意, 預設的 pttbbs.conf是給相當大規模的 bbs用的.
: 通常您須要進行修改以符合您的須求
以下提及一些在 pttbbs.conf 中,很可能關乎編譯安裝是否會成功的一些設定:
如果是在 64bit 的作業系統編譯安裝 PttBBS
請記得開啟以下兩個定義:
#define SHMALIGNEDSIZE (1048576*4)
#define TIMET64
http://i.imgur.com/Lqe6BSI.png
http://i.imgur.com/xECH7bh.png
之後編譯才能順利完成
其他各種功能就可視自己需求決定要不要開啟
也可以去 github 裡查閱裡面的程式碼來推測可以測試開啟哪些定義
使得一些原本 pttbbs.conf 沒列但實際上很實用的功能可以被挖出來玩
(光棒選單、ALLPOST同步、BBSLua、文章屍體、資源回收桶、刪除部分文字、退文...等)
一切設定就緒,就準備進行面對成敗的關鍵─編譯
手冊建議
: * 如果您是用 Linux系統, 請先安裝 pmake, 然後將 make alias 成 pmake *
也就是:
編譯前先記得 alias make=pmake
也可以放在 bbsadm 家目錄(/home/bbs)底下的 .bashrc 檔案末端
這樣每次登入bbsadm時就自動幫你做完此步驟了
: 11. (在 ~bbs/pttbbs 下) 執行 make BBSHOME=/home/bbs all install
開始編譯:
http://i.imgur.com/s8gRIux.png
編譯完成:
http://i.imgur.com/VYVwRPv.png
這裡能夠順利完成的話,基本上幾乎就可以架起來了
如果編譯發生各種問題,可以記下來,藉由搜尋引擎或論壇爬文討論找到可能的解法
在ptt的話,本板(PttCurrent)就有不少文可以爬看看了
其他相關的專案也可以查詢看看類似使用者回報問題是否有解答,
像是 ptt2 的 PttSrc 板
(該板主要討論的 OpenPtt Project 已經沒在進行了,
但一些在基本編譯設定上相關的問題, 有不少可以參考的建議、解答)
之前自己遇到的情況則是因為少裝不少套件所以常常編譯到一半就弄不下去了
後來就自己就稍微記一下那些情況中缺少的套件,於是就把這些常要用的整理起來了
: 12.如果是新架起來的站, 請執行 cd sample; make install
http://i.imgur.com/ZhvxxzS.png
: 13.執行 cd /home/bbs; bin/initbbs -DoIt
*如果參數沒打對的話會出現一些訊息:
http://i.imgur.com/mlZum4f.png
如果參數打對程式就會默默設定了
: 其中第 12、13 步是給第一次安裝的時候使用的,
: 如果您的 BBS中已經有資料了, 請務必不要執行這兩個步驟.
要協助將BBS站資料搬家時務必注意這點。
: 假如一切都很順利的話, 這樣子大概就安裝完了, 接下來是啟動 bbs 的部份.
: 15.執行 bin/shmctl init (*註1, *註2)
順利的話畫面大概會如下:
http://i.imgur.com/156rX4D.png
: 16.用 root 執行 bin/mbbsd -p 23 -d (*註3)
: 其中 -d 是指定 daemon mode. 若連線有問題需要方便測試時可以先不加 -d,
: 用別窗直接進行連線以方便找出問題。
如附註所提,其實也可以用其他port設定,需要的權限就可以小一些
: 17.測試整個系統是否完成:
: telnet localhost 23 看看
^^或其他設定的Port
在 Linux 桌面裡的 terminal 來試因為預設顯示編碼就是 UTF-8
所以剛連進去看到就都是亂碼,可以自行調整 terminal 顯示設定或
直接在key帳號的欄位按 , 後Enter轉換顯示編碼,即可看到中文字:
http://i.imgur.com/FgIgPtW.png
其他按照以下設定即可:
: new 一個帳號叫SYSOP, 然後 logout再 login, 這樣子就會擁有站長權限囉~
: 再 new一個帳號叫 guest , 這樣子別人就可以用 guest 參觀你的站了
: (若系統回應「無法接受這個代號」,請先隨便建一個 guest0 的帳號,
(實際上就是會遇到這個情況)
: 再換 SYSOP 登入並把 guest0 改名為 guest, 順便把權限設一定)
: 開板, 開群組, 以及搬動群組的方法請看 PttSrc 板的文摘
^^^^^^^^^ 就在 Ptt2.cc
: 18.新功能請參考 ADVANCE
: 19.為了讓開機的時候會自己把 bbs (以及所須要的程式) 跑起來,
: 若您使用 FreeBSD, 您可以將 sample/pttbbs.sh 拷貝到 /usr/local/etc/rc.d/
: 之後您可以重新開機試試看是不是在重開後可以正常運作 :)
如果使用 Linux,要讓開機後程式自動開啟
則也可以使用 rc.local
不太確定要不要先記得開啟該服務:
sudo service rc.local start
(近期較新的發行版採用systemd相關的啟動方式, 沒有預設會開啟)
然後自行建立 /etc/rc.local 檔案
寫進你要啟動 CurrentPtt 相關的腳本
最後一行記得加上 exit 0
記得利用 chmod 等指令讓它可以被執行
: 20. pttbbs 須要定時執行一些小 tool 來維持系統正常運作,
: reload cache, 備份, 節日點歌等系統資訊,或其它特殊外部程式等等.
: 請用 bbs的權限, 執行 crontab -e , 內容請參照 sample/crontab
: (在大部份的情況下, 直接將 sample/crontab 內容拷備進去即可)
也就是:
crontab ~/pttbbs/sample/crontab
也可以複製一份出來自己修改後,再crontab該檔案
或是就直接 crontab -e 編輯現行設定的檔案
: 21.在某些情況下, pttbbs會須要一些其他的程式來輔助.
: 下面列出所須要的程式, 預設的路徑, 以及在 FreeBSD ports內對映的路徑
: tar /usr/bin/tar FreeBSD default install
: gzip /usr/bin/gzip FreeBSD default install
: rm /bin/rm FreeBSD default install
Linux 應已預設安裝
: perl /usr/bin/perl /usr/ports/lang/perl5.8/
: mutt /usr/local/bin/mutt /usr/ports/mail/mutt/
: lynx /usr/local/bin/lynx /usr/ports/www/lynx/
: 我們大部份的 perl script會用到 LocalVars.pm , 該檔案內負責定義
: 各別機器的設定 (如外部程式的路徑) . 請將該檔拷份一份至 ~/bin/
: 下, 並修正該檔以符合貴環境的設定.
: 另外列出我們 perl script會用到的 perl module, 以 FreeBSD ports相對目錄.
: Mail::Sender /usr/ports/mail/p5-Mail-Sender/
: IO::All /usr/ports/devel/p5-IO-All/
這部分還沒實做過,所以這部分的功能也沒有成功使用過orz
如果之後成功設定會再將過程記錄分享
: 註:
: 1. 這個程式是在 initial shared memory 用的, 只有開機後第一次執行, 或是
: 你手動清除 shm 後才需要執行
: 2. 如果您跑了 shmctl init 或 uhash_loader 並沒有看到
: total XXXXX names loaded.
: 而是看到其他的錯誤訊息
: (例如 [shmget error] key = 4cc, errno = 22: Invalid argument)
: 可能是您作業系統 shared-memory 上限不足,
: 請參考 FAQ中加大 shared-memory 部份的說明.
: 3. bin/mbbsd -p 23 是指定要 bind 23 port, 依照 UNIX 規定, 1024 以下的 port
: 須要有 root 權限, 所以如果要 bind 23 port 的話就要用 root 去執行,
: 3000 port 則不需要.
: 請參考 docs/ADVANCE 安裝好 bbsctl ,
: 之後您就可以透過 bbsctl 直接在其他權限下 (如 bbsadm )
: 來啟動可以 bind port 23 的 mbbsd.
: 對於 ptt/ptt2 規模的超級大站,還有另一個選擇是使用 daemon/logind 。
這部分我也不太會設定,就都是直接改 pttbbs.sh 等 shell script
讓BBS程式一次順利執行這樣
==
其他細節感覺再放的話會更雜,等之後有機會再補充好了
然後一些對於一些系統的觀念或用字若不夠精確還請大大們多多海涵orz
--
▄▅◣ ◢▆▄
┼───
◢████◣
◢▄▅▄◣ ◢████◣
┼ 敲敲hh,呼叫小天使。
◢█
╱ " █◣
▌ ▌◢██
" █
╲█◣
│
◢
∕/ █◤
◥▄▅▄◤ ◥█
\﹨ ██◣
│ 雖然不是無時無刻都在, │
◢█
/ ██◤
ψ阿鬼 ◥██
\ █◣
┼
◤ ◥
但祂會盡力地服務您。─┼
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.101.29
※ 文章網址: https://www.ptt.cc/bbs/PttCurrent/M.1493311214.A.F80.html
※ 編輯: holishing (140.116.101.29), 04/28/2017 01:15:13
推 erspicu: 官方版的架站教學已經是多年前的版本 很多步驟 05/03 17:25
→ erspicu: 按照當時後的步驟去打 都會出問題 之前有成功編譯過 05/03 17:26
→ erspicu: 但卻沒有心把STEP好好整理出來 推原PO認真 05/03 17:26
→ holishing: 感謝樓上推薦 <(_ _)> 05/05 22:02
推 mazeltov: 最近架站有用到 推 05/21 12:19
修正rc.local相關
※ 編輯: holishing (140.116.101.29), 06/02/2017 20:57:03
已將之後修正的相關內容放到 github 的 wiki 上
如果有需要指正的也可以直接到那裡編輯文件:
https://github.com/ptt/pttbbs/wiki/
※ 編輯: holishing (140.116.101.29), 06/05/2017 21:09:22
推 angel07: angel.c的ANGEL_CHANGE_TIMELIMIT_MINS沒被定義?? 07/01 16:57
修正 alias 的部分orz
※ 編輯: holishing (140.116.101.37), 10/13/2017 12:39:30
→ holishing: 順便說一下 wiki 最近又有補很多內容了, 有興趣可參考 10/13 12:42