全文搜索Redmine/MediaWiki/Pleasanter/S3/文件服务器

Content (in Chinese): 内容

我尝试创建了一个能够批量搜索Redmine、MediaWiki、Pleasanter、Amazon S3和文件服务器的机制。

背景

    • 運用改善の中でいろいろとツールを入れたので運用ツールが増えた

 

    • 各ツールの区分けは出来ているがどこを見るかたまに迷うこともある

 

    「情報を探す」という時間を短縮して運用改善につなげたい

概览图

    • FESSの検索画面からキーワード検索で各システムを一括検索する

 

    • RedmineとPleasanterはPostgresをMediaWikiはMariaDBをデータストアクローラで設定

 

    • S3はそれようのプラグインがあるのでプラグイン追加後、データストアクローラで設定

 

    • ファイルサーバはファイルシステムクローラで設定

 

    スケジューラ設定で毎日各システムからクローラーで情報を取得してくる
fess1.png

所创作的东西

fess2.png

环境和前提条件

    • AlmaLinux release 8.5 (Arctic Sphynx)

 

    systemctl disable firewalld

步驟

进行FESS的安装

安装JDK

yum install -y java-11-openjdk

安装Elasticsearch

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.15.0-x86_64.rpm
rpm -ivh elasticsearch-7.15.0-x86_64.rpm

安装Elasticsearch插件

/usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-analysis-fess:7.15.0
/usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-analysis-extension:7.15.0
/usr/share/elasticsearch/bin/elasticsearch-plugin install org.codelibs:elasticsearch-minhash:7.15.0

安装elasticsearch-configsync

curl -o /tmp/configsync.zip https://repo.maven.apache.org/maven2/org/codelibs/elasticsearch-configsync/7.15.0/elasticsearch-configsync-7.15.0.zip
mkdir -p /usr/share/elasticsearch/modules/configsync
unzip -d /usr/share/elasticsearch/modules/configsync /tmp/configsync.zip

弹性搜索的配置更改

configsync.config_path: /var/lib/elasticsearch/config

FESS安装

wget https://github.com/codelibs/fess/releases/download/fess-13.15.3/fess-13.15.3.rpm
rpm -ivh fess-13.15.3.rpm
systemctl daemon-reload

更改FESS的设置(取消下面的注释)

ES_HTTP_URL=http://localhost:9200
FESS_DICTIONARY_PATH=/var/lib/elasticsearch/config/

启动Elasticsearch和FESS

systemctl enable elasticsearch
systemctl enable fess
systemctl start elasticsearch
systemctl status elasticsearch
systemctl start fess
systemctl status fess

请访问以下链接:http://ipaddress:8080/

FESS.png

使用自己的证书进行SSL加密

安装Apache

yum install -y httpd
yum install -y mod_ssl

模块确认

httpd -M | grep proxy
 ~
 proxy_module (shared) #プロキシに必要
 proxy_http_module (shared) #プロキシに必要
 ssl_module (shared) #SSL使用時に必要

如果不存在的话,就添加模块。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

反向代理服务器设置

ProxyRequests Off
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

重新启动Apache。

systemctl restart httpd

确认连接

    http://xxx.xxx.xxx.xxxでFESSにアクセス出来ることを確認

制作密钥

cd /etc/httpd/conf
openssl genrsa -des3 -out server.key 2048

创建企业社会责任报告。

openssl req -new -key server.key -out server.csr
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:XXXX
Locality Name (eg, city) [Default City]:XXXX
Organization Name (eg, company) [Default Company Ltd]:XXXX
Organizational Unit Name (eg, section) []:XXXX
Common Name (eg, your name or your server's hostname) []:XXXX
Email Address []:XXXX

从私钥中删除密码

cp -p server.key server.key.org
openssl rsa -in server.key -out server.key

修改配置文件

cp /etc/pki/tls/openssl.cnf openssl_san.cnf
vim openssl_san.cnf
[ req ]
req_extensions = v3_req #コメント解除
[ usr_cert ]
authorityKeyIdentifier=keyid,issuer:always #:alwaysを追加
[ v3_req ]
subjectAltName=IP:xx.xx.xx.xx #追加(IPまたはFQDN)

生成证书文件

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt -sha256 -extensions v3_req -extfile openssl_san.cnf

SSL配置

SSLEngine on
SSLCertificateFile /etc/httpd/conf/server.crt
SSLCertificateKeyFile /etc/httpd/conf/server.key

添加等待受端口

Listen 443

重新启动Apache

systemctl restart httpd

确认连接

    https://xxx.xxx.xxx.xxxでFESSにアクセス出来ることを確認

文件服务器搜索设置

文件滚动的设置

fess1.png

文件验证设置

fess2.png

设置工作

fess3.png

手动启动作业调度器

fess4.png

搜索

fess5.png

S3搜索配置

准备考试

    • パラメータ、スクリプトの記載方法は下記参照

 

    • Amazon S3 Data Store for Fess

 

    • AWS側にアクセス用のIAMユーザ作成

 

    ※コンソールアクセスは無効、ポリシーはAmazonS3ReadOnlyAccessでOK

安装插件

S30.png

爬虫配置

S31.png
region=ap-northeast-1
access_key_id=XXXXXXXX
secret_key=XXXXXXXX
    スクリプト
url=object.url
title=object.key
content=object.contents
mimetype=object.mimetype
filetype=object.filetype
filename=object.filename
content_length=object.size
last_modified=object.last_modified

创建作业调度器并手动启动

    「ファイルサーバ検索設定」のジョブ設定・ジョブスケジューラ手動起動参照

搜索

S32.png

Redmine搜索设置

JDBC驱动程序的配置

    FESSサーバ側の設定です
wget https://jdbc.postgresql.org/download/postgresql-42.3.2.jar
mv postgresql-42.3.2.jar /usr/share/fess/app/WEB-INF/lib/

对外部的Postgres数据库进行访问权限配置。

    Redmineサーバ側の設定です
listen_addresses = '*'
host    redmine         redmine         192.168.1.0/24            md5
systemctl restart postgresql.service
systemctl status postgresql.service

数据存储爬虫的配置

    • FESS管理画面からの設定です

 

    • ハンドラー名:DatabaseDataStore

 

    パラメーター
driver=org.postgresql.Driver
url=jdbc:postgresql://"Redmineホスト名":5432/"DB名"
username="DBアクセスユーザ"
password="DBアクセスパスワード"
sql=select * from issues
    スクリプト
url="http://"Redmineホスト名"/issues/" + id
host="Redmineホスト名"
site="Redmineホスト名"
title= subject
content=description
cache=description
digest=description
anchor=
content_length=description.length()
last_modified=updated_on.substring(0,10) + "T" + updated_on.substring(11,23) + "Z"

创建作业调度程序并手动启动

    「ファイルサーバ検索設定」のジョブ設定・ジョブスケジューラ手動起動参照

查看日志

    何回かアクセスエラーなどで上手く行かなかったため、ログ確認
tail -f /var/log/fess/fess-crawler.log

搜索

    FESSで検索してRedmineのチケットが検索できるか確認

获取白幻灯片搜索设置

连接到Postgres

psql -h localhost -p 5432 -U postgres -d Implem.Pleasanter

确认桌子

    Itemsテーブル内にチケットの情報が入っています
Implem.Pleasanter=# \dt
                          List of relations
 Schema |           Name            | Type  |          Owner
--------+---------------------------+-------+-------------------------
 ~~~~省略~~~~
 public | Items                     | table | Implem.Pleasanter_Owner
 public | Items_deleted             | table | Implem.Pleasanter_Owner
 public | Items_history             | table | Implem.Pleasanter_Owner
 ~~~~省略~~~~

确认表格结构

Implem.Pleasanter=# \d "Items";
                                               Table "public.Items"
         Column         |              Type              | Collation | Nullable |             Default
------------------------+--------------------------------+-----------+----------+----------------------------------
 ~~~~省略~~~~
 ReferenceType          | character varying(32)          |           | not null |
 SiteId                 | bigint                         |           | not null | 0
 Title                  | character varying(1024)        |           |          |
 FullText               | text                           |           |          |
 ~~~~省略~~~~
 UpdatedTime            | timestamp(3) without time zone |           | not null | CURRENT_TIMESTAMP

数据确认

    必要そうなデータだけSelectしたクエリで確認
Implem.Pleasanter=# select "Title","ReferenceId","FullText","UpdatedTime" from "Items";
Title| ReferenceId |FullText|UpdatedTime
-----------------------------------------------+-------------
【プリザンタチケット】顧客管理 |1 | 【プリザンタチケット】顧客管理 顧客管理 test plesanter Administrator  | 2022-02-10 08:39:03.857

数据存储爬虫配置

    • FESS管理画面からの設定です

 

    • ハンドラー名:DatabaseDataStore

 

    パラメーター
driver=org.postgresql.Driver
url=jdbc:postgresql://"プリザンタホスト名"/Implem.Pleasanter
username=postgres
password="パスワード"
sql=select "Title","ReferenceId","FullText","UpdatedTime" from "Items";
    スクリプト
url="http://"プリザンタホスト名"/items/" + ReferenceId
host="プリザンタホスト名"
site="プリザンタホスト名"
title=Title
content=FullText
cache=FullText
digest=FullText
anchor=

创建作业调度程序并手动启动

    「ファイルサーバ検索設定」のジョブ設定・ジョブスケジューラ手動起動参照

查看日志

    何回かアクセスエラーなどで上手く行かなかったため、ログ確認
tail -f /var/log/fess/fess-crawler.log

搜索

    FESSで検索してプリザンタのチケットが検索できるか確認

媒体维基搜索设置

备考

    MediaWikiデータベースのレイアウト

连接到MariaDB

mysql -u root -p
MariaDB [(none)]> use my_wiki;

查看桌子

    • pageテーブルのpage_latestにページの最新リビジョンを持っています

 

    実際のデータはtextテーブルにあります
MariaDB [(none)]> use my_wiki;
MariaDB [my_wiki]> select page_title,page_latest from page;
+--------------------------------------+-------------+
| page_title                           | page_latest |
+--------------------------------------+-------------+
| Wikiテスト1                       |          15 |
| Wikiテスト2                       |          16 |
| Wikiテスト3                       |          13 |
| Wikiテスト4                       |          14 |
+--------------------------------------+-------------+
MariaDB [my_wiki]> select old_id,old_text from text where old_id=15;
+--------+----------------------------+
| old_id | old_text                   |
+--------+----------------------------+
|     15 | Wikiテスト1
編集1 |
+--------+----------------------------+

创建用于FESS的SQL语句

    pageテーブルのpage_latestとtextテーブルのold_idを外部結合して最新リビジョンのデータを取り出します
MariaDB [my_wiki]> select page.page_title,text.old_id,text.old_text from page LEFT OUTER JOIN text ON page.page_latest = text.old_id;

安装插件

    FESSの管理画面「システム」⇒「プラグイン」からmysql-connector-javaを追加した

数据存储爬虫配置

    • FESS管理画面からの設定です

 

    • ハンドラー名:DatabaseDataStore

 

    パラメーター
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://"MediaWikiホスト名":3306/my_wiki?useUnicode=true&characterEncoding=UTF-8
username="WikiDB接続ユーザ"
password="WikiDB接続パスワード"
sql=select page.page_title,text.old_id,text.old_text from page LEFT OUTER JOIN text ON page.page_latest = text.old_id;
    スクリプト
url="http://"MediaWikiホスト名"/wiki/index.php?title=" + page_title
host="MediaWikiホスト名"
site="MediaWikiホスト名"
title=page_title
content=old_text

创建作业调度器和手动启动

    「ファイルサーバ検索設定」のジョブ設定・ジョブスケジューラ手動起動参照

查看日志

    何回かアクセスエラーなどで上手く行かなかったため、ログ確認
tail -f /var/log/fess/fess-crawler.log

搜索

    FESSで検索してMediaWikiの記事が検索できるか確認
广告
将在 10 秒后关闭
bannerAds