作者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://webptt.com/cn.aspx?n=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://webptt.com/cn.aspx?n=bbs/PttCurrent/M.1493311214.A.F80.html
※ 编辑: holishing (140.116.101.29), 04/28/2017 01:15:13
1F:推 erspicu: 官方版的架站教学已经是多年前的版本 很多步骤 05/03 17:25
2F:→ erspicu: 按照当时後的步骤去打 都会出问题 之前有成功编译过 05/03 17:26
3F:→ erspicu: 但却没有心把STEP好好整理出来 推原PO认真 05/03 17:26
4F:→ holishing: 感谢楼上推荐 <(_ _)> 05/05 22:02
5F:推 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
6F:推 angel07: angel.c的ANGEL_CHANGE_TIMELIMIT_MINS没被定义?? 07/01 16:57
修正 alias 的部分orz
※ 编辑: holishing (140.116.101.37), 10/13/2017 12:39:30
7F:→ holishing: 顺便说一下 wiki 最近又有补很多内容了, 有兴趣可参考 10/13 12:42