《树莓派4B家庭服务器搭建指南》第九期:用树莓派低成本给热心老哥搭个窝,在树莓派建立BBS论坛flarum并映射到公网全攻略

前段时间我出过一个 给热心老哥搭个窝,2021年30分钟用Discourse搭建新一代BBS论坛站全攻略 https://v2fy.com/p/2021-06-12-discourse-2021-1623477573000/ Discourse很强大,但使用了Redis数据库,很吃内存,BBS论坛这种东西,后续还需要大量的硬盘空间存图片,zhaoolee想尽可能的压缩运营成本,于是把Discourse往树莓派移植,但Discourse官方不支持树莓派armv8架构的CPU,Discourse所需的ruby包在树莓派上也有各种各样的问题, 于是我开始寻找替代品,最终找到了flarum!

flarum

flarum在github有12K star, 由PHP编写,非常轻量

轻量

使用mariadb数据库(Mysql的分支),不吃内存;

中文社区也非常活跃

于是zhaoolee把flarum 部署到了树莓派,并通过内网穿透开放到公网,并绑定了独立的域名~

flarum
开放

以下是详细的部署步骤~

以Docker形式往树莓派安装Mysql的分支 mariadb

  • 新建配置文件
mkdir /opt/docker-mariadb
cd /opt/docker-mariadb
touch stack.yml
  • 运行以下代码,往配置文件中写入内容, 以下配置文件登录的默认用户名为root, 默认密码为zhaoolee(为了安全将MYSQL_ROOT_PASSWORD 中的zhaoolee替换为自己定义的密码)
sudo cat >/opt/docker-mariadb/stack.yml<<EOF
version: '3.1'

services:

  db:
    image: mariadb
    restart: always
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: zhaoolee

  adminer:
    image: adminer
    restart: always
    ports:
      - 8090:8080
EOF
  • 启动mariadb服务
cd /opt/docker-mariadb/
sudo docker-compose -f stack.yml up -d
运行成功
  • 访问树莓派的8090端口

我的树莓派内网地址为192.168.50.223, 访问 192.168.50.223:8090即可

db
  • 登录后
登录后
  • 新建数据库
新建数据库
  • 设置数据库编码并保存
设置编码并保存
  • 数据库创建成功
image.png

安装Nginx

sudo apt install nginx -y
which nginx
nginx
  • 设置Nginx开机自启任务,开启nginx
sudo systemctl enable nginx
sudo systemctl start nginx
开启nginx
  • 访问树莓派ip, 可以看到Nginx开启成功
访问树莓派ip

树莓派安装PHP7.3

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.3 -y
sudo apt-get install php7.3-fpm -y
  • 查看PHP版本
php -v
php
  • 查看php7.3-fpm的位置
dpkg -S php7.3-fpm
php-fpm
  • 修改 /etc/php/7.3/fpm/php.ini
# 替换:
;cgi.fix_pathinfo=1
# 为:
cgi.fix_pathinfo=0
  • 重载php7.3-fpm, 使配置生效
sudo /etc/init.d/php7.3-fpm reload

安装composer

cd /opt
mkdir composer
cd composer/
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

sudo mv composer.phar /usr/local/bin/composer
安装composer

配置 flarum

sudo apt-get install php7.3-mbstring -y
  • php模块配置文件的位置
/etc/php/7.3/cli/php.ini
  • 官方要求启用的模块 fileinfo, curl, dom, exif, gd, json, mbstring, openssl, pdo_mysql, tokenizer, zip
sudo apt-get install php7.3-fileinfo -y
sudo apt-get install php7.3-curl -y
sudo apt-get install php7.3-dom -y
sudo apt-get install php7.3-exif -y
sudo apt-get install php7.3-gd -y
sudo apt-get install php7.3-json -y
sudo apt-get install php7.3-mbstring -y
sudo apt-get install php7.3-tokenizer -y
sudo apt-get install php7.3-zip -y
sudo apt-get install php7.3-mysql
  • 查看启用的模块
php -m
  • 重启php7.3-fpm, 让模块生效
sudo /etc/init.d/php7.3-fpm restart
  • 开始安装 flarum 及其依赖
cd /opt
mkdir flarum
cd flarum
composer create-project flarum/flarum . --stability=beta
composer install
依赖安装成功

为nginx新增配置文件

sudo touch /etc/nginx/conf.d/flarum.v2fy.com.conf
sudo chmod 777 /etc/nginx/conf.d/flarum.v2fy.com.conf
  • 在/etc/nginx/conf.d/flarum.v2fy.com.conf 中写入以下内容
server {
    listen 80;
    listen [::]:80;
    root /opt/flarum/public;
    index index.php index.html index.htm;
    server_name flarum.v2fy.com;
    
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
    
    location ~ /\. {
        deny all;
    }
    
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }
    
    location = /robots.txt {
        log_not_found off;
        access_log off;
        allow all;
    }
    include /opt/flarum/.nginx.conf;
}
  • 重启nginx
# 测试配置文件是否有语法错误
sudo nginx -t
# 重启Nginx
sudo nginx -s reload
nginx
  • 将目录设置为可写
nginx配置
 sudo chown -R 777 /opt/flarum

通过改host将flarum.v2fy.com 指向 树莓派ip 192.168.50.233

浏览器访问 flarum.v2fy.com

开始安装
  • 初始化网站
初始化网站
  • 网站初始化成功
初始化成功
  • 数据表完成了初始化
数据初始化

将树莓派服务通过内网穿透转发到真正的flarum.v2fy.com

阅读本段落之前,请先理解frp内网穿透的相关知识,frp已经在本系列第一节写过教程 《树莓派4B家庭服务器搭建指南》刷Ubuntu Server 20.04,绑定公网域名,对公网提供http服务,SSH登录服务 https://www.v2fy.com/p/2021-10-01-pi-server-1633066843000/

  • 第一步:树莓派端通过frp客户端, 将nginx提供服务的80端口,转发到拥有固定ip服务器的8666端口

也就是在/opt/frp_0.37.0_linux_arm64/frpc.ini中添加以下配置

[nginx-v2fy-com-8666]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 8666

配置完成后,记得重启frpc

  • 第二步:登录服务端完成配置

我们可以通过 lsof -i:8666 看到服务端端口8666已经被frps占据了

占据

将域名flarum.v2fy.com解析到 服务端ip

新建 /etc/nginx/conf.d/flarum.v2fy.com.conf

按照教程 零依赖!使用acme.sh设置nginx多个https证书自动更新,无限续期https证书 https://www.v2fy.com/p/2021-06-27-nginx-https-1624774964000/ 获得无限续期的https证书

  • 最后/etc/nginx/conf.d/flarum.v2fy.com.conf 的内容为
upstream flarum_v2fy_com { server 127.0.0.1:8666; }

server {
    server_name      flarum.v2fy.com;
    listen           80;

    rewrite ^(.*)$ https://$host$1 permanent;

}


server {

    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  flarum.v2fy.com;

    location / {
        proxy_pass http://flarum_v2fy_com;
        proxy_set_header Host $host:443;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    ssl_certificate "/etc/nginx/ssl/flarum.v2fy.com/fullchain.cer";
    ssl_certificate_key "/etc/nginx/ssl/flarum.v2fy.com/flarum.v2fy.com.key";
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  10m;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    # Load configuration files for the default server block.

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}
  • 测试并重启nginx
nginx -t
nginx -s reload
  • 回到树莓派,让flarum配置文件适配https

打开/opt/flarum/config.php 将url字段改为以//开头

url

保存文件后,重启php7.3-fpm

sudo /etc/init.d/php7.3-fpm restart

我们将前面配置的host 信息192.168.50.233 flarum.v2fy.com 移除

用浏览器打开https://flarum.v2fy.com ,打开开发者工具

开发者工具

刷新页面,可以看到https://flarum.v2fy.com 来自公网服务器ip

来自服务器

至此树莓派端的flarum转发到公网成功!

支持中文

  • 添加中文语言包
composer require flarum-lang/chinese-simplified
进入管理员界面
  • 启用中文包
中文语言包
  • 可以切换中英文了
中英文切换功能
  • 汉化完成
汉化完成

设置邮箱

我用的腾讯企业邮, 设置如下

设置邮箱
  • 顺利收到了邮件
收到了邮件

至此,一个基于flarum的树莓派BBS站配置成功!

  • 手机端
手机端
  • PC端
PC端

感兴趣的可以来 https://flarum.v2fy.com 注册用户~

小结

Flarum和Discourse和都是好的BBS建站程序,他们开源免费,好用且强大,Flarum 比Discourse更轻量,支持armv8的CPU, 配合树莓派外挂的硬盘,可以低成本存储大量的图片资源,可作为一个长期的BBS论坛网站来维护;

低成本建网站很重要,用爱发电不靠谱,不能让BBS站长们,花费大量的金钱去建站,又毫无回报,那样的BBS很难长久,这个树莓派建站教程,能让建站的成本极大降低,只需一块树莓派,挂载一个大硬盘,就能搞定大容量存储,和CPU内存的问题, 只要买个有公网ip的小服务器就能长久运行网站了~

最后放一段我曾在Discourse教程末尾写的话

这个教程,希望能给需要建立社区的小伙伴一些帮助。
知乎,百度贴吧,微博,公众号这些平台推送的内容也是一言难尽, 甚至为了商业利益,频繁作恶。
如果可以发言的自建论坛很多,人们的发言也就更为自由, 世界主流的思想也就更为开发。
我希望2021年以后的世界,热心老哥越来越多,偏激主义思想越来越少。

欢迎来flarum.v2fy.com共同讨论树莓派建BBS站的相关问题~

本文永久更新地址(欢迎来读留言,写评论):

https://www.v2fy.com/p/2021-11-26-flarum-1637921368000

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容