前置き
以前、phpMyFAQの3.0.12版で構築したことがありますが、各ソフトを新しくしたかったので再構築しました。
Webで散見される情報では、"Elasticsearchは6以外動作しない"と出てきますが、最新版を私が試した限り、Elasticsearch7以降でないと動きませんでした。
備忘録ですが、せっかくなので公開します。
導入
OS 及び、インストールプログラムの各バージョンは次の通り
Apache
インストール
dnf install httpd
.htaccessで設定変更ができるようにします。
<Directory "/var/www/html">
- AllowOverride None
+ AllowOverride All
</Directory>
サービス 起動
systemctl enable httpd --now
PHP
phpMyFAQの導入要件が、8.1以降となっています。
標準リポジトリの 8.2 を試したところ、モジュール(php-sodium)が入らず別に用意する必要がありました。
こちらの手順では、remiリポジトリを使います。
dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
dnf config-manager --set-enabled remi
dnf update
導入できるバージョンの確認
dnf module list php
PHP関連のインストール 及び サービスの開始
dnf module install php:remi-8.3
dnf install php-gd php-curl php-fpm php-mysqlnd php-mbstring php-zip php-xml php-sodium
systemctl enable php-fpm --now
systemctl restart httpd
DB
MariaDBを利用します。
dnf install mariadb mariadb-server
設定の追加 (文字コード)
[mariadb]
+ character-set-server = utf8mb4
[client-mariadb]
+ default-character-set = utf8mb4
サービスの登録と起動
systemctl enable --now mariadb
初期設定 (続く問答は省略)
mysql_secure_installation
phpMyFAQ用のDBとユーザーの作成、権限の設定
mysql -u root -p
create database phpmyfaq;
create user 'phpmyfaq'@'localhost' identified by 'phpmyfaqPassword';
grant all on phpmyfaq.* to 'phpmyfaq'@'localhost' with grant option;
quit;
Elasticsearch
ダウンロード & インストール
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.13.4-x86_64.rpm
rpm --install elasticsearch-8.13.4-x86_64.rpm
設定の変更
- xpack.security.enabled: true
+ xpack.security.enabled: false
+ network.host: 127.0.0.1
サービスの登録と起動
systemctl daemon-reload
systemctl enable --now elasticsearch
インデックスを作成します。
( phpMyFAQ の設定画面でもボタン操作でできます )
curl -XPUT http://127.0.0.1:9200/phpmyfaq?pretty
閑話休題
Elasticsearch 7 も試してみました。
設定ファイルは次の追加で動作しています。
+ network.host: 127.0.0.1
+ http.port: 9200
+ transport.host: 127.0.0.1
+ transport.tcp.port: 9300
phpMyFAQ
導入の呪文
所有権は、Apache の設定に合わせます。
wget https://download.phpmyfaq.de/phpMyFAQ-3.2.6.zip
unzip phpMyFAQ-3.2.6.zip
cp -pR ./phpmyfaq/* /var/www/html
chown -R apache.apache /var/www/html
cp -p /var/www/html/config/elasticsearch.php{.original,}
設定ファイルを次の内容に変更します。
<?php
$PMF_ES['hosts'] = ['127.0.0.1:9200'];
- $PMF_ES['index'] = '';
+ $PMF_ES['index'] = 'phpmyfaq';
+ $PMF_ES['type'] = 'faqs';
- const DATETIME_TIMEZONE_DEFAULT = 'Europe/Berlin';
+ const DATETIME_TIMEZONE_DEFAULT = 'Asia/Tokyo');
http://[ IP_Address ] にブラウズして設定
※例 http://192.168.100.100 とか、サーバーのIPアドレス。
もう一度 http://[ IP_Address ] にブラウズ
画面がでます。
右上のログインから 設定した管理者で入ります。
ログインした後は、同じ右上のメニューに 管理が表示されます。
設定画面 >> 環境設定 >> 検索
Elasticsearchを有効化にチェック ( した後に右上の保存ボタンを忘れずに )
もう一度、設定メニューを読み込みなおすと、
Elasticsearchの設定が表示されます。
トラブルシューティング?
もし、Elasticserchが 503になったら、
次の設定をIPアドレスにすると直るかもしれません。
cluster.initial_master_nodes: ["127.0.0.1"]
私はGmailのSMTPリレーを使いたかったのですが、
次の設定修正が必要でした。
Gmailに HELO を送るときに、送信元ドメインと不一致だと弾かれてしまいます。
- private string $domain = '[127.0.0.1]';
+ private string $domain = '[example.com]';
後記
実は結構試行錯誤しました。ElasticSearchが動かないとか・・・。
なぜかキーワード検索が機能しないとか。
phpMyFAQのインストールは毎回つまづきます。
誰かの参考になれば幸いです。
MySQLで構築したphpMyFAQのバックアップを、MariaDB環境にリストアしたらエラーになった。何か違うんだろうか(調べていない)