|
1 |
/usr/local/xunsearch/bin/xs-ctl.sh -b 0.0.0.0 start |
入门docker笔记 从零搭一个轻论坛系统 基于Flarum
前言
这次希望用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即可
docker pull mondedie/docker-flarum:0.1.0-beta.10-stable
运行
这里需要注意
- 开始之前,必须先去新建一个数据库,例如falrum(utf8mb4)
--link是关联到另一个name是mysql的container上,方便后期容器和容器之间连接,所以你必须提前有一个mysql的容器- 有5个
-e xxx分别是5个必填项(参考上门的两张表格),把密码改成你自己的
docker run -d -p 8888:8888\--link mysql\--name flarum\-e FORUM_URL='http://localhost:8888'\-e DB_PASS='root@1234'\-e FLARUM_ADMIN_USER='admin'\-e FLARUM_ADMIN_PASS='root@1234'\-e FLARUM_ADMIN_MAIL='admin@zzzmh.cn'\mondedie/docker-flarum:0.1.0-beta.10-stable
这一步特别容易掉坑,建议在下一步之前,先检查一下是否启动成功,若出现ERROR,先百度解决之,再重新RUN试试
docker logs flarum# 正常的返回值的最后一句应该是(至少没有ERROR)[INFO] End of flarum installation
访问

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

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差不多一样
进入容器
docker exec -it flarum sh
然后顺手给flarum 赋个权限
chmod -R 777 flarumcd flarum/app/
先安装composer阿里云镜像(否则会慢到奔溃)
网站:https://developer.aliyun.com/composer
# 全局安装composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
插件安装
安装简体中文扩展插件
# 简体中文支持composer require csineneo/lang-simplified-chinese
安装文件上传扩展插件
# 文件上传支持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的环境
FROM alpine:3.10LABEL description "Simple forum software for building great communities" \maintainer="Hardware <hardware@mondedie.fr>, Magicalex <magicalex@mondedie.fr>"ARG VERSION=v0.1.0-beta.10ENV GID=991 \UID=991 \UPLOAD_MAX_SIZE=50M \PHP_MEMORY_LIMIT=128M \OPCACHE_MEMORY_LIMIT=128RUN echo "@community http://dl-cdn.alpinelinux.org/alpine/v3.10/community" >> /etc/apk/repositories \&& apk add -U \nginx \s6 \su-exec \curl \git \php7@community \php7-fileinfo@community \php7-phar@community \php7-fpm@community \php7-curl@community \php7-mbstring@community \php7-openssl@community \php7-json@community \php7-pdo@community \php7-pdo_mysql@community \php7-mysqlnd@community \php7-zlib@community \php7-gd@community \php7-dom@community \php7-ctype@community \php7-session@community \php7-opcache@community \php7-xmlwriter@community \php7-tokenizer@community \php7-zip@community \php7-intl@community \&& cd /tmp \&& curl -s http://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \&& chmod +x /usr/local/bin/composer \&& composer global require hirak/prestissimo \&& mkdir -p /flarum/app \&& chown -R $UID:$GID /flarum \&& COMPOSER_CACHE_DIR="/tmp" su-exec $UID:$GID composer create-project flarum/flarum /flarum/app $VERSION --stability=beta \&& composer clear-cache \&& rm -rf /flarum/.composer /var/cache/apk/*COPY rootfs /RUN chmod +x /usr/local/bin/* /services/*/run /services/.s6-svscan/*VOLUME /flarum/app/extensions /etc/nginx/conf.dEXPOSE 8888CMD ["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 常用命令
# 更新镜像源apk update# 更新系统apk upgrade# 搜索apk search xxx# 高级搜索apk search -v -d ‘nginx*’# 安装apk add xxx xxx xxx# 删除add del xxx
折腾
阿里云镜像源
# 直接安排上阿里云的镜像源sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories# 更新镜像源立即生效apk update
xunsearch的依赖
# 这里面zlib1g-dev依赖安装的库是zlib-devapk add gawk make gcc g++ zlib-dev# 如果感觉有需要可以顺便装个vimapk add vim
xunsearch 本体
官网文档:http://www.xunsearch.com/doc/php/guide/start.installation
# 下载wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2# 解压tar -xjf xunsearch-full-latest.tar.bz2
然后根据自己的版本号不同cd到解压以后的目录
# 进入目录cd xunsearch-full-1.3.0/# 执行安装脚本sh setup.sh
一上来会看到这一段
+==========================================+| Welcome to setup xunsearch(full) || 欢迎使用 xunsearch (完整版) 安装程序 |+------------------------------------------+| Follow the on-screen instructions please || 请按照屏幕上的提示操作以完成安装 |+==========================================+
然后会问安装目录,我是简单粗暴选了根目录
# 输入安装目录/xunsearch# 输入y确认y
中间没什么操作,看到这段内容说明安装成功
+=================================================+| Installation completed successfully, Thanks you || 安装成功,感谢选择和使用 xunsearch |+-------------------------------------------------+| 说明和注意事项: || 1. 开启/重新开启 xunsearch 服务程序,命令如下: || /xunsearch/bin/xs-ctl.sh restart| 强烈建议将此命令写入服务器开机脚本中 || || 2. 所有的索引数据将被保存在下面这个目录中: || /xunsearch/data| 如需要转移到其它目录,请使用软链接。 || || 3. 您现在就可以在我们提供的开发包(SDK)基础上 || 开发您自己的搜索了。 || 目前只支持 PHP 语言,参见下面文档: || /xunsearch/sdk/php/README+=================================================+
启动 xunsearch 服务
先按照官网给的教程启动一下
./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本体目录
cd /flarum/app/
composer镜像源
如果之前没安装composer阿里云镜像源的话,这里还是推荐安装一下,已经有就不必再安装了
# 全局安装 composer 阿里云镜像源composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
安装插件本体
composer require jjandxa/flarum-ext-chinese-search
启用插件
只要前面所有步骤都操作正确
xunsearch 服务也在后台运行当中
这里就可以一步通过

END