全文搜索Redmine/MediaWiki/Pleasanter/S3/文件服务器
Content (in Chinese): 内容
我尝试创建了一个能够批量搜索Redmine、MediaWiki、Pleasanter、Amazon S3和文件服务器的机制。
背景
-
- 運用改善の中でいろいろとツールを入れたので運用ツールが増えた
-
- 各ツールの区分けは出来ているがどこを見るかたまに迷うこともある
- 「情報を探す」という時間を短縮して運用改善につなげたい
概览图
-
- FESSの検索画面からキーワード検索で各システムを一括検索する
-
- RedmineとPleasanterはPostgresをMediaWikiはMariaDBをデータストアクローラで設定
-
- S3はそれようのプラグインがあるのでプラグイン追加後、データストアクローラで設定
-
- ファイルサーバはファイルシステムクローラで設定
- スケジューラ設定で毎日各システムからクローラーで情報を取得してくる
所创作的东西
环境和前提条件
-
- 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/
使用自己的证书进行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にアクセス出来ることを確認
文件服务器搜索设置
文件滚动的设置
文件验证设置
设置工作
手动启动作业调度器
搜索
S3搜索配置
准备考试
-
- パラメータ、スクリプトの記載方法は下記参照
-
- Amazon S3 Data Store for Fess
-
- AWS側にアクセス用のIAMユーザ作成
- ※コンソールアクセスは無効、ポリシーはAmazonS3ReadOnlyAccessでOK
安装插件
爬虫配置
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
创建作业调度器并手动启动
- 「ファイルサーバ検索設定」のジョブ設定・ジョブスケジューラ手動起動参照
搜索
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の記事が検索できるか確認