环境:Ubuntu 20.04,👴懒截的图就少,搭的很费劲,踩雷部分就不放了。因为服务器上默认是root,省略了一部分的sudo。

0x00 安装Elasticsearch

更新源:sudo apt update

下载安装包。这里注意,本文写的时候ik_smart分词器还没跟上最新版本7.12.1,所以要下载7.12.0:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.0-amd64.deb

安装:sudo dpkg -i elasticsearch-7.12.0-amd64.deb

编辑配置文件,host改为127.0.0.1:vim /etc/elasticsearch/elasticsearch.yml

访问:curl -X GET "localhost:9200"

安装ingest-attachment插件:/usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment

安装IK分词插件:/usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.0/elasticsearch-analysis-ik-7.12.0.zip

重启服务(重要):/etc/init.d/elasticsearch restart

0x01 搭建宝塔和nextcloud

升级系统:sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get upgrade linux-generic linux-headers-generic linux-image-generic -y && sudo apt autoremove -y

安装宝塔:curl -sSO http://download.bt.cn/install/install_panel.sh && sudo bash install_panel.sh

需要在宝塔内安装环境和配置站点,选择LNMP,PHP要选择7.3及以上,编译安装,其他酌情。

把nextcloud源码放入宝塔内,解压,设置运行目录为nextcloud。

然后访问网址填入管理员账户名密码、数据库相关信息,至此nextcloud搭建成功^^。

搜索“full text”下载这三个插件(OCR插件随意),然后启用。

0x02 安装PHP扩展建立ES索引

安装php-readline扩展

切目录:cd /www/server/php/74/src/ext/readline

运行:phpize

安装依赖:sudo apt install re2c libedit-dev -y

运行:./configure --with-php-config=/www/server/php/74/bin/php-config

编译:make && make install

修改php.ini:vim /www/server/php/74/etc/php.ini

↓路径要根据自己的改
extension_dir="/www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902/"
extension=readline.so
memory_limit = 512M

杀死php-fpm进程:pkill -9 php-fpm

启动php-fpm进程:php-fpm

安装php-pcntl扩展。

切目录:cd /www/server/php/74/src/ext/pcntl/

运行:phpize

运行:./configure --with-php-config=/www/server/php/74/bin/php-config

编译:make && make install

切路径:cd /www/wwwroot/example/nextcloud

这个时候要转到nextcloud后台,设置参数:

初始化索引:sudo -u www php ./occ fulltextsearch:index

对全文搜索功能进行测试,结果如图所示,证明初步搭建成功:

最后,因为需要持续索引服务,所以可以考虑用crontab命令设定定时任务,每个2个小时重新建立一次索引:

0 */2 * * * sudo -u www php /www/wwwroot/192.168.187.145/nextcloud/occ fulltextsearch:index