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 flarum
cd 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.10
LABEL description "Simple forum software for building great communities" \
maintainer="Hardware <hardware@mondedie.fr>, Magicalex <magicalex@mondedie.fr>"
ARG VERSION=v0.1.0-beta.10
ENV GID=991 \
UID=991 \
UPLOAD_MAX_SIZE=50M \
PHP_MEMORY_LIMIT=128M \
OPCACHE_MEMORY_LIMIT=128
RUN 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.d
EXPOSE 8888
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 常用命令
# 更新镜像源
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-dev
apk add gawk make gcc g++ zlib-dev
# 如果感觉有需要可以顺便装个vim
apk 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