前言



这次希望用docker折腾一个轻社区的系统,语言随意,内存占用越低越好.
翻了一圈百度,发现最合适的是flarum
github:
https://github.com/mondediefr/docker-flarum#master
docker hub:
https://hub.docker.com/r/mondedie/docker-flarum

折腾



说明


由于之前已有一个container运行着mysql5.7,不想跟着官方教程重新再开一个mysql,内存过于紧张,管理也费劲,所以是只单运行一个flarum,后来再用nginx反向代理到域名上访问.因此我用的方案会和官网的文档里的教程不同,但最终效果是一样的.

必填信息参考这2张表:
Environment variables

Variable Description Type Default value
UID Flarum user id optional 991
GID Flarum group id optional 991
DEBUG Flarum debug mode optional false
FORUM_URL Forum URL required none
DB_HOST MariaDB instance ip/hostname optional mariadb
DB_USER MariaDB database username optional flarum
DB_NAME MariaDB database name optional flarum
DB_PASS MariaDB database password required none
DB_PREF Flarum tables prefix optional none
DB_PORT MariaDB database port optional 3306
UPLOAD_MAX_SIZE The maximum size of an uploaded file optional 50M
PHP_MEMORY_LIMIT PHP memory limit optional 128M
OPCACHE_MEMORY_LIMIT OPcache memory size in megabytes optional 128
LOG_TO_STDOUT Enable nginx and php error logs to stdout optional false
GITHUB_TOKEN_AUTH github token to download private extensions optional false

Required environment variable for first installation

Variable Description Type Default value
FLARUM_ADMIN_USER Name of your user admin required none
FLARUM_ADMIN_PASS User admin password required none
FLARUM_ADMIN_MAIL User admin adress mail required none
FLARUM_TITLE Set a name of your flarum optional Docker-Flarum



安装


用默认安装最新版本的images即可

  1. docker pull mondedie/docker-flarum:0.1.0-beta.10-stable

运行


这里需要注意

  1. 开始之前,必须先去新建一个数据库,例如falrum(utf8mb4)
  2. --link 是关联到另一个name是mysql的container上,方便后期容器和容器之间连接,所以你必须提前有一个mysql的容器
  3. 有5个-e xxx 分别是5个必填项(参考上门的两张表格),把密码改成你自己的
  1. docker run -d -p 8888:8888\
  2. --link mysql\
  3. --name flarum\
  4. -e FORUM_URL='http://localhost:8888'\
  5. -e DB_PASS='root@1234'\
  6. -e FLARUM_ADMIN_USER='admin'\
  7. -e FLARUM_ADMIN_PASS='root@1234'\
  8. -e FLARUM_ADMIN_MAIL='admin@zzzmh.cn'\
  9. mondedie/docker-flarum:0.1.0-beta.10-stable

这一步特别容易掉坑,建议在下一步之前,先检查一下是否启动成功,若出现ERROR,先百度解决之,再重新RUN试试

  1. docker logs flarum
  2. # 正常的返回值的最后一句应该是(至少没有ERROR)
  3. [INFO] End of flarum installation

访问


http://localhost:8888/

这里全部按实际情况填就好了
还有一些小坑


1. MySql Host
这里格式必须是:mysql:port
前面的是你的mysql容器的名字和之前run命令中的link保持一致,后面的port就是端口,默认3306
例如:mysql:3306 (一些情况下只写mysql也可以)
不能是localhost也不能是127.0.0.1
否则都会报错

2. MySql Database
他只能帮你建表,不能建库,所以这里填的库必须存在.例如我填的是falrum
那我就去新建一个数据库falrum utf8mb4
否则如果库不存在就会报错
或者库里已经有其他版本的表也会报错


安装成功会跳转到首页


优化



环境部分




注意:这个镜像是没有bash的,要进入容器的话不能用
docker exec -it flarum bash
这个镜像有sh,所以应该是
docker exec -it flarum sh
效果和bash差不多一样



进入容器

  1. docker exec -it flarum sh

然后顺手给flarum 赋个权限

  1. chmod -R 777 flarum
  2. cd flarum/app/

先安装composer阿里云镜像(否则会慢到奔溃)
网站:https://developer.aliyun.com/composer

  1. # 全局安装
  2. composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

插件安装


安装简体中文扩展插件

  1. # 简体中文支持
  2. composer require csineneo/lang-simplified-chinese

安装文件上传扩展插件

  1. # 文件上传支持
  2. composer require "flagrow/upload:*"


启用插件


再次访问管理后台的插件管理
http://localhost:8888/admin#/extensions

启用一下刚才安装的插件的checkbox


进入 ===> 基本管理 [Basics]
http://localhost:8888/admin#/basics
把默认语音改为 [简体中文]

要点[保存]生效
(再刷新应该就有中文支持了)


进入 ===> 文件上传管理 [File Upload]


最后还有一个邮箱设置
我这里就直接略过了
基本就参照网易邮箱或者qq邮箱的文档即可



END



完成以上配置,一个基本款的flarum轻论坛docke版本就搞定了,最好再套一层nginx反向代理,例如套在二级域名上 bbs.yourwebsite.com
记得如果修改过访问域名,记得进入容器,找到config.php config.yml 一起修改掉

最后附上本次demo大致效果的截图







补充



承接上一篇: 入门docker笔记 从零搭一个轻论坛系统 基于Flarum

已知可以实现的中文插件是: flarum-ext-chinese-search

补充一下:该插件目前版本只能支持到beta.8.1,最新的0.1.0-beta.10-stable版本尚未得到该插件支持,该插件作者在github的issues中说正在开发适配

难点在于他依赖的 xunsearch 服务
以及xunsearch 依赖了 gawk make gcc g++ zlib1g-dev

本篇重点是讲如何在上一篇的docker环境中
依次安装这些依赖
最终实现flarum的中文搜索

前言



回溯到上一篇里用到的docker镜像
https://hub.docker.com/r/mondedie/docker-flarum

这里需要研究的是Dockerfile , 来熟悉该docker的环境

  1. FROM alpine:3.10
  2. LABEL description "Simple forum software for building great communities" \
  3. maintainer="Hardware <hardware@mondedie.fr>, Magicalex <magicalex@mondedie.fr>"
  4. ARG VERSION=v0.1.0-beta.10
  5. ENV GID=991 \
  6. UID=991 \
  7. UPLOAD_MAX_SIZE=50M \
  8. PHP_MEMORY_LIMIT=128M \
  9. OPCACHE_MEMORY_LIMIT=128
  10. RUN echo "@community http://dl-cdn.alpinelinux.org/alpine/v3.10/community" >> /etc/apk/repositories \
  11. && apk add -U \
  12. nginx \
  13. s6 \
  14. su-exec \
  15. curl \
  16. git \
  17. php7@community \
  18. php7-fileinfo@community \
  19. php7-phar@community \
  20. php7-fpm@community \
  21. php7-curl@community \
  22. php7-mbstring@community \
  23. php7-openssl@community \
  24. php7-json@community \
  25. php7-pdo@community \
  26. php7-pdo_mysql@community \
  27. php7-mysqlnd@community \
  28. php7-zlib@community \
  29. php7-gd@community \
  30. php7-dom@community \
  31. php7-ctype@community \
  32. php7-session@community \
  33. php7-opcache@community \
  34. php7-xmlwriter@community \
  35. php7-tokenizer@community \
  36. php7-zip@community \
  37. php7-intl@community \
  38. && cd /tmp \
  39. && curl -s http://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
  40. && chmod +x /usr/local/bin/composer \
  41. && composer global require hirak/prestissimo \
  42. && mkdir -p /flarum/app \
  43. && chown -R $UID:$GID /flarum \
  44. && COMPOSER_CACHE_DIR="/tmp" su-exec $UID:$GID composer create-project flarum/flarum /flarum/app $VERSION --stability=beta \
  45. && composer clear-cache \
  46. && rm -rf /flarum/.composer /var/cache/apk/*
  47. COPY rootfs /
  48. RUN chmod +x /usr/local/bin/* /services/*/run /services/.s6-svscan/*
  49. VOLUME /flarum/app/extensions /etc/nginx/conf.d
  50. EXPOSE 8888
  51. CMD ["run.sh"]



这里面的重点就是第一句,这个docker基于 alpine:3.10

这也就解释了为什么这个镜像不支持常用的安装命令
例如apt install yum install dpkg -i xxx rpm -i xxx make install

这里不多赘述Alpine Linux是个什么了,有兴趣可以左转百度
简述一下他是如何安装软件的
参考:https://www.cnblogs.com/alpine-enterprise/p/10898312.html

APK 常用命令

  1. # 更新镜像源
  2. apk update
  3. # 更新系统
  4. apk upgrade
  5. # 搜索
  6. apk search xxx
  7. # 高级搜索
  8. apk search -v -d nginx*’
  9. # 安装
  10. apk add xxx xxx xxx
  11. # 删除
  12. add del xxx

折腾



阿里云镜像源


  1. # 直接安排上阿里云的镜像源
  2. sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
  3. # 更新镜像源立即生效
  4. apk update

xunsearch的依赖


  1. # 这里面zlib1g-dev依赖安装的库是zlib-dev
  2. apk add gawk make gcc g++ zlib-dev
  3. # 如果感觉有需要可以顺便装个vim
  4. apk add vim

xunsearch 本体


官网文档:http://www.xunsearch.com/doc/php/guide/start.installation

  1. # 下载
  2. wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2
  3. # 解压
  4. tar -xjf xunsearch-full-latest.tar.bz2

然后根据自己的版本号不同cd到解压以后的目录

  1. # 进入目录
  2. cd xunsearch-full-1.3.0/
  3. # 执行安装脚本
  4. sh setup.sh

一上来会看到这一段

  1. +==========================================+
  2. | Welcome to setup xunsearch(full) |
  3. | 欢迎使用 xunsearch (完整版) 安装程序 |
  4. +------------------------------------------+
  5. | Follow the on-screen instructions please |
  6. | 请按照屏幕上的提示操作以完成安装 |
  7. +==========================================+

然后会问安装目录,我是简单粗暴选了根目录

  1. # 输入安装目录
  2. /xunsearch
  3. # 输入y确认
  4. y

中间没什么操作,看到这段内容说明安装成功

  1. +=================================================+
  2. | Installation completed successfully, Thanks you |
  3. | 安装成功,感谢选择和使用 xunsearch |
  4. +-------------------------------------------------+
  5. | 说明和注意事项: |
  6. | 1. 开启/重新开启 xunsearch 服务程序,命令如下: |
  7. | /xunsearch/bin/xs-ctl.sh restart
  8. | 强烈建议将此命令写入服务器开机脚本中 |
  9. | |
  10. | 2. 所有的索引数据将被保存在下面这个目录中: |
  11. | /xunsearch/data
  12. | 如需要转移到其它目录,请使用软链接。 |
  13. | |
  14. | 3. 您现在就可以在我们提供的开发包(SDK)基础上 |
  15. | 开发您自己的搜索了。 |
  16. | 目前只支持 PHP 语言,参见下面文档: |
  17. | /xunsearch/sdk/php/README
  18. +=================================================+


启动 xunsearch 服务


先按照官网给的教程启动一下

  1. ./xunsearch/bin/xs-ctl.sh -b 0.0.0.0 start

(如果一路到底全部正常,以后还需要把xunsearch的服务启动命令加入到开机启动中,否则重启会失效)

安装flarum-ext-chinese-search插件



到了安装中文搜索插件本体的部分
插件链接:https://flagrow.io/extensions/jjandxa/flarum-ext-chinese-search

进入安装目录


先进入flarum本体目录

  1. cd /flarum/app/

composer镜像源


如果之前没安装composer阿里云镜像源的话,这里还是推荐安装一下,已经有就不必再安装了

  1. # 全局安装 composer 阿里云镜像源
  2. composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

安装插件本体


  1. composer require jjandxa/flarum-ext-chinese-search

启用插件


只要前面所有步骤都操作正确
xunsearch 服务也在后台运行当中
这里就可以一步通过

END