稼働環境がだいぶ古いもののインストール時のあれやこれやが面倒でバージョンアップせずに済ませてきましたが、諸々の事情でサーバーを統合することとなり重い腰を上げた結果、色々と楽になっていたので、手順を記録しました。
前提
- Hyper-V上に構築します(Hyper-Vに関連する部分には触れていません)。
- Dockerコンテナは使わないで構築します。
- データベースにはMySQLを使用し、新規に同一ホスト内に構築します。
参照したもの
GLPIインストールの前に
OSのインストール
起動イメージはもっとも小さくなるようlatest-x86_64-boot
にしました。
- ソフトウェアの選択は
Minimal Install
のみ。 - rootパスワードを設定、ユーザーは管理者になれるよう設定します。
- IPv4アドレスは手動で固定します。
- サーバー名はlocalhostのままにせず、この段階で名前を付けます。
インストールが終わったら、Windows Terminalでssh ユーザー名@設定したIPv4アドレス
します。
以降、root
で作業させて頂きます。
su
rootパスワード入力
cd ~
通信の許可
firewalldの状況を確認します。
firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
http
https
がありませんでした。追加します。
firewall-cmd --add-service={http,https}
firewall-cmd --list-all
firewall-cmd --runtime-to-permanent
firewall-cmd --reload
GLPIインストール
GLPI公式のほか、こちらを参考にさせて頂きました。
GLPIリポジトリの追加
https://download.copr.fedorainfracloud.org/results/ligenix/enterprise-glpi10/ を覗いてみて、自分にあったbaseurlを。
今回はcentos-stream-9-x86_64
にするので、centos-stream-9-$basearch
に。
vi /etc/yum.repos.d/glpi.repo
[copr:copr.fedorainfracloud.org:ligenix:enterprise-glpi10]
name=Copr repo for enterprise-glpi10 owned by ligenix
baseurl=https://download.copr.fedorainfracloud.org/results/ligenix/enterprise-glpi10/centos-stream-9-$basearch/
type=rpm-md
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://download.copr.fedorainfracloud.org/results/ligenix/enterprise-glpi10/pubkey.gpg
repo_gpgcheck=0
enabled=1
enabled_metadata=1
module_hotfixes=1
dnfを更新
dnf update
インストール
リポジトリからインストールするのは初めてなので、どんなパッケージが導入されるのか知りたくて、まずはdnf install glpi
しました。
dnf install glpi
メタデータの期限切れの最終確認: 0:03:02 時間前の 2022年12月02日 12時37分28秒 に実施しました。
依存関係が解決しました。
========================================================================================================
パッケージ Arch バージョン リポジトリー サイズ
========================================================================================================
インストール:
glpi noarch 10.0.5-1.el9 copr:copr.fedorainfracloud.org:ligenix:enterprise-glpi10
32 M
依存関係のインストール:
apr x86_64 1.7.0-11.el9 appstream 123 k
apr-util x86_64 1.6.1-20.el9 appstream 95 k
apr-util-bdb x86_64 1.6.1-20.el9 appstream 14 k
centos-logos-httpd noarch 90.4-1.el9 appstream 252 k
dejavu-sans-fonts noarch 2.37-18.el9 baseos 1.3 M
fontconfig x86_64 2.14.0-1.el9 appstream 297 k
fonts-filesystem noarch 1:2.0.5-7.el9.1 baseos 10 k
freetype x86_64 2.10.4-9.el9 baseos 388 k
gd x86_64 2.3.2-3.el9 appstream 132 k
graphite2 x86_64 1.3.14-9.el9 baseos 95 k
harfbuzz x86_64 2.7.4-8.el9 baseos 625 k
httpd x86_64 2.4.53-7.el9 appstream 50 k
httpd-core x86_64 2.4.53-7.el9 appstream 1.5 M
httpd-filesystem noarch 2.4.53-7.el9 appstream 15 k
httpd-tools x86_64 2.4.53-7.el9 appstream 85 k
jbigkit-libs x86_64 2.1-23.el9 appstream 53 k
langpacks-core-font-en noarch 3.0-16.el9 appstream 11 k
libX11 x86_64 1.7.0-7.el9 appstream 647 k
libX11-common noarch 1.7.0-7.el9 appstream 206 k
libXau x86_64 1.0.9-8.el9 appstream 31 k
libXpm x86_64 3.5.13-7.el9 appstream 59 k
libicu x86_64 67.1-9.el9 baseos 9.6 M
libjpeg-turbo x86_64 2.0.90-5.el9 appstream 176 k
libpng x86_64 2:1.6.37-12.el9 baseos 117 k
libtiff x86_64 4.4.0-5.el9 appstream 196 k
libwebp x86_64 1.2.0-3.el9 appstream 278 k
libxcb x86_64 1.13.1-9.el9 appstream 243 k
libxslt x86_64 1.1.34-9.el9 appstream 243 k
libzip x86_64 1.7.3-7.el9 appstream 64 k
mailcap noarch 2.1.49-5.el9 baseos 33 k
nginx-filesystem noarch 1:1.20.1-13.el9 appstream 12 k
oniguruma x86_64 6.9.6-1.el9.5 appstream 218 k
php-cli x86_64 8.0.20-3.el9 appstream 3.1 M
php-common x86_64 8.0.20-3.el9 appstream 681 k
php-fpm x86_64 8.0.20-3.el9 appstream 1.6 M
php-gd x86_64 8.0.20-3.el9 appstream 44 k
php-intl x86_64 8.0.20-3.el9 appstream 152 k
php-mbstring x86_64 8.0.20-3.el9 appstream 472 k
php-mysqlnd x86_64 8.0.20-3.el9 appstream 153 k
php-pdo x86_64 8.0.20-3.el9 appstream 85 k
php-pecl-zip x86_64 1.19.2-6.el9 appstream 58 k
php-xml x86_64 8.0.20-3.el9 appstream 135 k
xml-common noarch 0.6.3-58.el9 appstream 32 k
弱い依存関係のインストール:
apr-util-openssl x86_64 1.6.1-20.el9 appstream 16 k
glpi-marketplace noarch 10.0.5-1.el9 copr:copr.fedorainfracloud.org:ligenix:enterprise-glpi10
4.1 M
mod_http2 x86_64 1.15.19-2.el9 appstream 150 k
mod_lua x86_64 2.4.53-7.el9 appstream 63 k
php-ldap x86_64 8.0.20-3.el9 appstream 43 k
php-opcache x86_64 8.0.20-3.el9 appstream 513 k
php-pecl-apcu x86_64 5.1.20-5.el9 appstream 63 k
トランザクションの概要
========================================================================================================
インストール 51 パッケージ
ダウンロードサイズの合計: 61 M
インストール後のサイズ: 346 M
これでよろしいですか? [y/N]:
y
を入力し進めますと、パッケージ群のインストールが完了します。
インストール後にphp -m
などして公式マニュアルと比べたところ、
- 必須のPHP拡張機能はすべて含む
- オプションの拡張機能は
domxml
を除き含む -
sodium
という拡張機能があるとパフォーマンスの向上が望める
ようなので、後ほどsodium
だけ追加します。
domxml
は必要性や入手方法がよくわからず・・・
完了したと思って他端末からインストールウィザードを開こうとすると、
Restricted area.
Only local access allowed.
Check your configuration or contact your administrator.
と表示されます。追加の作業が必要なようです。
追加の作業
SELinuxの設定
設定をしない場合、インストールウィザードで
推奨 SELinuxモードは Enforcing
SELinux の boolean httpd_can_network_connect は off であり、一部の機能ではこれをオンにしてください。
SELinux の boolean httpd_can_network_connect_db は off であり、一部の機能ではこれをオンにしてください。
SELinux の boolean httpd_can_sendmail は off であり、一部の機能ではこれをオンにしてください。
と推されたので、SELinuxの設定をします。
setsebool -P httpd_can_network_connect on
setsebool -P httpd_can_network_connect_db on
setsebool -P httpd_can_sendmail on
PHP拡張機能の追加
追加をしない場合、インストールウィザードで
推奨 PHP emulated 拡張モジュール
パフォーマンスをわずかに向上させます。
以下の拡張モジュールはインストール済み : ctype, iconv, mbstring。
以下の拡張モジュールが存在しません : sodium。
と推されたので、追加します。
EPELにありますので、EPELの追加からです。
dnf install epel-release
dnf update
dnf install php-sodium
PHPの設定
設定をしない場合、インストールウィザードで
推奨 セッションのセキュリティー設定
セッション Cookie でセキュリティが施されていることを確認してください。
クライアント側スクリプトが cookie 値にアクセスするのを防ぐため、PHP の設定項目、"session.cookie_httponly" は、"on" に設定する必要があります。
と推されたので、設定します。
設定しても反映されない場合は、ホスト名がlocalhost
のままかもしれません。
また、公式ドキュメントに
Configuration
PHP configuration file (php.ini) must be adapted to reflect following variables:
memory_limit = 64M ; // max memory limit
file_uploads = on ;
max_execution_time = 600 ; // not mandatory but recommended
session.auto_start = off ;
session.use_trans_sid = 0 ; // not mandatory but recommended
とあるので、これも合わせて設定します。
memory_limit
は初めから128M
でしたので、不足するまではこのままにしようと思います。
memory_limit
はpost_max_size
より大きくする必要があり、post_max_size
はアップロードするファイルの制約となるため、他のPHPアプリケーションを含め、大きなファイルをアップロードする必要があれば、それを考慮し、大きくします。
max_execution_time
は最大の処理待ち時間を秒単位で規定しますが、非力な環境ではインストールウイザードのデータベース作成処理が時間切れになり、完走できません。私の環境では'600'(10分)では足りなかったため、余裕をもって'1800'(30分)にしました。
その他の項目は初めから設定されていたこともあり、最終的に変更した箇所は、以下の通りです。
max_execution_time = 1800
session.auto_start = off
session.cookie_httponly = on
Apacheの設定
/etc/httpd/conf.d/glpi.conf
にGLPI用の設定が書かれていますが、インストールウィザードにアクセスできるのはlocal
からのみという潔さなので、変更します。
<Directory /usr/share/glpi/install>
# Install is only allowed via local access (from the GLPI server).
# Add your IP address if you need it for remote installation,
# but remember to remove it after installation for security.
<IfModule mod_authz_core.c>
# Apache 2.4
# Require local # <-- コメントアウト
Require ip 192.168.0 # <-- インストールウィザードにアクセスできるIPアドレス(ここでは192.168.0を含むもの)を指定
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
Apacheの自動起動と起動
自動起動を設定します。
systemctl enable httpd.service
インストールウィザードを実行するため、起動します。
systemctl start httpd.service
ここまでの動作確認
まだデータベースに手を付けていませんが、dnf install glpi
だけでインストールされたパッケージの動作を確認しておきたく、ここでインストールウィザードを使ってみます。
インストールウィザード
公式ドキュメントに従い進めます。
ブラウザでhttp://サーバー/glpi/install
にアクセス。
やったー!
日本語を選択し、先に進みます。
今回はクリーンインストールしているので、インストールを選択します。
一通りのチェックをしてくれます。
続行すると、データベースの設定になります。
まだデータベースはインストールしていませんので、ここでブラウザを閉じ、終了します。
互換性の検査でなんらかの指摘があれば、直しましょう。
データベースの構築
webインターフェースまわりに問題がなくなったら、データベースを導入します。
MySQLインストール
dnf install mysql-server
記事執筆時点では、バージョンは8.0.30-3.el9
でした。MySQL本家リポジトリじゃないけど、わりと新しいのが有難い。
メタデータの期限切れの最終確認: 0:00:31 時間前の 2022年12月02日 15時48分57秒 に実施しました。
依存関係が解決しました。
========================================================================================================
パッケージ Arch バージョン リポジトリー サイズ
========================================================================================================
インストール:
mysql-server x86_64 8.0.30-3.el9 appstream 17 M
依存関係のインストール:
checkpolicy x86_64 3.4-1.el9 appstream 347 k
libtirpc x86_64 1.3.3-1.el9 baseos 93 k
mariadb-connector-c-config noarch 3.2.6-1.el9 appstream 11 k
mecab x86_64 0.996-3.el9.3 appstream 356 k
(以下略)
自動起動を有効にし、起動します。
systemctl enable mysqld.service
systemctl start mysqld.service
MySQLのroot設定
MySQLといえばインストール中に初期パスワードが生成されるものと思っていました。
MySQL公式ドキュメントもそれにそった手順になっています。
しかしappstreamリポジトリのMySQLは、そうではないようで。
grep 'temporary password' /var/log/mysql/mysqld.log
(結果なし)
とりあえずログインを試みます。
パスワードがわからないので、Enter password:
と聞かれた箇所で、そのままEnterを押下しました。
mysql -uroot -p
Enter password:(そのままEnter)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.30 Source distribution
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
パスワードは無いようです。設定しましょう。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'パスワード';
文字コードについて
以前はインストール後の設定といえば文字コードでしたが、バージョン8ではutf8mb4
が初期値になりました。
mysql> SHOW VARIABLES LIKE '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8mb3 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
GLPI用データベースユーザーの作成と権限付与
GLPI用ユーザーをMySQLに作成します。
CREATE USER 'GLPI用データベースユーザー名'@'localhost' IDENTIFIED BY 'パスワード';
GLPI用データベース名を決め、GLPI用データベースにGLPI用ユーザーを登録します。
GRANT USAGE ON GLPI用データベース名.* TO 'GLPI用データベースユーザー名'@'localhost';
GLPI用データベースに限定し、GLPI用ユーザーに対し全権限を付与します。
GRANT ALL PRIVILEGES ON GLPI用データベース名.* TO 'GLPI用データベースユーザー名'@'localhost';
現段階でGLPI用データベースは存在しませんが、ユーザーの登録や権限付与はできました。
GLPI用のデータベース作成
インストールウィザードの中で、新規に作成できました。権限を付与したときに指定したデータベース名と同じ名前にする必要があります。
もちろん、あらかじめ作成するのもありだと思います。作成しておけば、インストールウィザードの中でデータベースの選択肢として登場します。
インストールウィザード(2回目)
ブラウザでhttp://サーバー/glpi/install
にアクセス。
1回目では準備できていなかったデータベース部分を入力します。
接続が成功すれば、データベースが選択できるようになります。
事前に決めておいたデータベース名を入力するか、事前に用意しておいたデータベースを選択します。
データベースの作成と初期化が行われます。
少し時間がかかります。
php.ini
のmax_execution_time
が小さいと、タイムアウトしてしまいます。
権限が不足しているなどでエラーになった場合は、MySQL側の設定を確認しましょう。
インストールが完了すると、初期ユーザーとパスワードが表示されます。
後処理
ログインに成功すると、下記のメッセージが表示されます。
- セキュリティ上の理由から、デフォルトユーザー: glpi post-only tech normal のパスワードを変更してください
- セキュリティの観点から、次のファイルを削除してください: install/install.php
忘れずに対処しましょう。
- 標準ユーザーはパスワードを変更したうえで、無効にする
-
install/install.php
は削除する
以上。