Flarum部署:从源码到docker到放弃
警告:
此篇文章前半段记录了我用代码部署flarum遇到的一些问题和解决办法,但是可能是由于我是在不熟悉php的框架结构,最终我还是选择了使用docker进行部署,请斟酌是否继续阅读本文。
Hello,大家好,我是内网部署区博主橘子。
Flarum是个非常漂亮的轻量级论坛框架。
我本来想在内网部署一个这个东西当做数据共享的平台,奈何如我警告里说的那样。
一开始计划用代码部署,因为自由度更高。
后来发现用docker也是一样,就是需要修改一下指令而已。推荐如果有需要的朋友还是使用docker部署。
docker真的香!
文章目录
- 1.安装php
- 2.安装nginx
- 3.安装composer
- 4.安装flarum
- 5.composer更换源
- 6.应该是nginx和php运行时的衔接问题,无法解决,是在是没搞懂php在linux上的运行架构是什么样的,在此步放弃,转用docker
- 7.docker部署的插件安装问题
- 7.数据库中文检索问题
1.安装php
直接用apt安装就行
2.安装nginx
也用apt安装
3.安装composer
https://blog.csdn.net/qq_44678350/article/details/126478108
直接下载二进制文件该权限放路径,我就喜欢这么粗暴的。为后面埋下了一个伏笔,这里是由于https的证书问题所以我选择用下载的方式安装composer,但是后面还是遇到了证书问题需要解决。
4.安装flarum
composer create-project flarum/flarum .
注意这里需要一个空的目录,如果目录里面有东西他就不让你装了。
如果你在这一步遇到这个问题,
Your requirements could not be resolved to an installable set of packages.
Problem 1
- flarum/pusher[v1.0.0, ..., v1.6.0] require pusher/pusher-php-server ^2.2 -> satisfiable by pusher/pusher-php-server[v2.2.0, ..., 2.6.4].
- pusher/pusher-php-server[v2.2.0, ..., 2.6.4] require ext-curl * -> it is missing from your system. Install or enable PHP's curlextension.
- Root composer.json requires flarum/pusher * -> satisfiable by flarum/pusher[v1.0.0, ..., v1.6.0].
To enable extensions, verify that they are enabled in your .ini files:
- /etc/php/8.1/cli/php.ini
- /etc/php/8.1/cli/conf.d/10-opcache.ini
- /etc/php/8.1/cli/conf.d/10-pdo.ini
- /etc/php/8.1/cli/conf.d/20-calendar.ini
- /etc/php/8.1/cli/conf.d/20-ctype.ini
- /etc/php/8.1/cli/conf.d/20-exif.ini
- /etc/php/8.1/cli/conf.d/20-ffi.ini
- /etc/php/8.1/cli/conf.d/20-fileinfo.ini
- /etc/php/8.1/cli/conf.d/20-ftp.ini
- /etc/php/8.1/cli/conf.d/20-gettext.ini
- /etc/php/8.1/cli/conf.d/20-iconv.ini
- /etc/php/8.1/cli/conf.d/20-phar.ini
- /etc/php/8.1/cli/conf.d/20-posix.ini
- /etc/php/8.1/cli/conf.d/20-readline.ini
- /etc/php/8.1/cli/conf.d/20-shmop.ini
- /etc/php/8.1/cli/conf.d/20-sockets.ini
- /etc/php/8.1/cli/conf.d/20-sysvmsg.ini
- /etc/php/8.1/cli/conf.d/20-sysvsem.ini
- /etc/php/8.1/cli/conf.d/20-sysvshm.ini
- /etc/php/8.1/cli/conf.d/20-tokenizer.ini
You can also run `php --ini` in a terminal to see which files are used by PHP in CLI mode.
Alternatively, you can run Composer with `--ignore-platform-req=ext-curl` to temporarily ignore these required extensions.
我一开始以为他说的extensions是指flarum的extensions
后来我才发现,他指的是php的插件。
所以你需要用apt-get install php-curl
指令来装 php的插件
根据官网的提示,他需要这些插件,但是你不用一个个去安装,缺啥装啥就行。
我缺了curl和dom两个插件,php版本是8.1.
5.composer更换源
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
奇怪的是这个指令我执行了一次并没有更换成功,执行第二次才更换成功。
可以通过composer config -g -l
指令查看是否更换成功
这样应该就是更换成功了。
6.应该是nginx和php运行时的衔接问题,无法解决,是在是没搞懂php在linux上的运行架构是什么样的,在此步放弃,转用docker
我选的是nginx做反向,但是一直无法成功,一直显示500
发现我的Php根本就没有启动,回想我前面还强制关掉了apache,我预计,nginx和php还需要修改某些配置。
设置Php程序监听端口
遇到权限问题
"/home/zz/flarum/public/" failed (13: Permission denied), client: 192.168.1.36, server:192.168.1.31, request: "GET / HTTP/1.1", host: "192.168.1.31"
解决不了php的权限太绕了,搞不懂放弃,继续用docker.
7.docker部署的插件安装问题
回头补充,记录在另一台电脑上了,最近疫情没有办法解除到那台电脑。
7.数据库中文检索问题
我自己接入了一个mysql据库,中文索引构建可以查看下面这位大佬。
https://www.cnblogs.com/ztxd/articles/16739111.html
修改 mysql.cnf,加入:
[mysqld] ngram_token_size=2 修改后需要重建 FULLTEXT 索引
ALTER TABLE flarum_posts DROP INDEX content; CREATE FULLTEXT INDEX
content ON posts (content) WITH PARSER ngram; (如果你有表前缀,给 posts
加上前缀即可,下面都是如此。)ALTER TABLE flarum_discussions DROP INDEX title; CREATE FULLTEXT INDEX
title ON discussions (title) WITH PARSER ngram; (注意表前缀)
上面提到的前缀你可以看一下你的表,在配置flarum的数据库的时候填写的那个pref就是前缀。
然而,mysql的检索方案不是完美的,分词不清晰。
加上许多插件的使用有点诡异,php composer环境的不理解。
至此,虽然我很喜欢Flarum的界面,但是我放弃使用这个框架。