0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

phpMyFAQの導入

Last updated at Posted at 2024-06-06

前置き

以前、phpMyFAQの3.0.12版で構築したことがありますが、各ソフトを新しくしたかったので再構築しました。
Webで散見される情報では、"Elasticsearchは6以外動作しない"と出てきますが、最新版を私が試した限り、Elasticsearch7以降でないと動きませんでした。
備忘録ですが、せっかくなので公開します。

導入

OS 及び、インストールプログラムの各バージョンは次の通り

AlmaLinux-9.4 Apache-2.4.57 PHP-8.3.7 MariaDB-10.5.22 Elasticsearch-8.13

Apache

インストール

dnf install httpd

.htaccessで設定変更ができるようにします。

/etc/httpd/conf/httpd.conf
<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

設定の追加 (文字コード)

/etc/my.cnf.d/mariadb-server.cnf
[mariadb]
+ character-set-server = utf8mb4
/etc/my.cnf.d/client.cnf
[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

設定の変更

/etc/elasticsearch/elasticsearch.yml
- 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 も試してみました。
設定ファイルは次の追加で動作しています。

/etc/elasticsearch/elasticsearch.yml
+ 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,}

設定ファイルを次の内容に変更します。

/var/www/html/config/elasticsearch.php
  <?php
  $PMF_ES['hosts'] = ['127.0.0.1:9200'];
- $PMF_ES['index'] = '';
+ $PMF_ES['index'] = 'phpmyfaq';
+ $PMF_ES['type'] = 'faqs';
/var/www/html/config/constants.php
- const DATETIME_TIMEZONE_DEFAULT = 'Europe/Berlin';
+ const DATETIME_TIMEZONE_DEFAULT = 'Asia/Tokyo');

http://[ IP_Address ] にブラウズして設定
※例 http://192.168.100.100 とか、サーバーのIPアドレス。

各設定の画面キャプチャ
まずは、DBへのアクセス設定
image.png

LDAPは利用しません。
image.png

Elasticsearch
image.png

管理者の作成
image.png

SSLの設定をしていないので・・・
image.png

完了
image.png

もう一度 http://[ IP_Address ] にブラウズ
画面がでます。
image.png

右上のログインから 設定した管理者で入ります。
ログインした後は、同じ右上のメニューに 管理が表示されます。
image.png

設定画面 >> 環境設定 >> 検索
Elasticsearchを有効化にチェック ( した後に右上の保存ボタンを忘れずに )
image.png

もう一度、設定メニューを読み込みなおすと、
Elasticsearchの設定が表示されます。
image.png

トラブルシューティング?

もし、Elasticserchが 503になったら、
次の設定をIPアドレスにすると直るかもしれません。

/etc/elasticsearch/elasticsearch.yml
cluster.initial_master_nodes: ["127.0.0.1"]

私はGmailのSMTPリレーを使いたかったのですが、
次の設定修正が必要でした。
Gmailに HELO を送るときに、送信元ドメインと不一致だと弾かれてしまいます。

/var/www/html/src/libs/symfony/mailer/Transport/Smtp/SmtpTransport.php
- private string $domain = '[127.0.0.1]';
+ private string $domain = '[example.com]';

後記

実は結構試行錯誤しました。ElasticSearchが動かないとか・・・。
なぜかキーワード検索が機能しないとか。
phpMyFAQのインストールは毎回つまづきます。
誰かの参考になれば幸いです。

MySQLで構築したphpMyFAQのバックアップを、MariaDB環境にリストアしたらエラーになった。何か違うんだろうか(調べていない)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?