2
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?

More than 1 year has passed since last update.

CentOS 9 StreamにGLPI 10をインストールする

Last updated at Posted at 2022-12-06

稼働環境がだいぶ古いもののインストール時のあれやこれやが面倒でバージョンアップせずに済ませてきましたが、諸々の事情でサーバーを統合することとなり重い腰を上げた結果、色々と楽になっていたので、手順を記録しました。

前提

  • 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
/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_limitpost_max_sizeより大きくする必要があり、post_max_sizeはアップロードするファイルの制約となるため、他のPHPアプリケーションを含め、大きなファイルをアップロードする必要があれば、それを考慮し、大きくします。

max_execution_timeは最大の処理待ち時間を秒単位で規定しますが、非力な環境ではインストールウイザードのデータベース作成処理が時間切れになり、完走できません。私の環境では'600'(10分)では足りなかったため、余裕をもって'1800'(30分)にしました。

その他の項目は初めから設定されていたこともあり、最終的に変更した箇所は、以下の通りです。

/etc/php.ini
max_execution_time = 1800
session.auto_start = off
session.cookie_httponly = on

Apacheの設定

/etc/httpd/conf.d/glpi.confにGLPI用の設定が書かれていますが、インストールウィザードにアクセスできるのはlocalからのみという潔さなので、変更します。

/etc/httpd/conf.d/glpi.conf
<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にアクセス。
image.png
やったー!
日本語を選択し、先に進みます。
image.png
今回はクリーンインストールしているので、インストールを選択します。
image.png
一通りのチェックをしてくれます。
続行すると、データベースの設定になります。
image.png

まだデータベースはインストールしていませんので、ここでブラウザを閉じ、終了します。
互換性の検査でなんらかの指摘があれば、直しましょう。

データベースの構築

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回目では準備できていなかったデータベース部分を入力します。
Setup GLPI および他 12 ページ - 個人 - Microsoft​ Edge-2022-12-02 15_46_01.png

接続が成功すれば、データベースが選択できるようになります。
事前に決めておいたデータベース名を入力するか、事前に用意しておいたデータベースを選択します。
Setup GLPI および他 22 ページ - 個人 - Microsoft​ Edge-2022-12-02 16_49_50.png

データベースの作成と初期化が行われます。
少し時間がかかります。
php.inimax_execution_timeが小さいと、タイムアウトしてしまいます。
Setup GLPI および他 20 ページ - 個人 - Microsoft​ Edge-2022-12-02 16_58_56.png
Setup GLPI および他 20 ページ - 個人 - Microsoft​ Edge-2022-12-02 17_03_23.png

権限が不足しているなどでエラーになった場合は、MySQL側の設定を確認しましょう。
Setup GLPI および他 22 ページ - 個人 - Microsoft​ Edge-2022-12-02 16_33_04.png

データ収集に関する説明が表示されます。
Setup GLPI および他 20 ページ - 個人 - Microsoft​ Edge-2022-12-02 17_04_37.png

サポートの案内が表示されます。
Setup GLPI および他 20 ページ - 個人 - Microsoft​ Edge-2022-12-02 17_05_10.png

インストールが完了すると、初期ユーザーとパスワードが表示されます。
Setup GLPI および他 20 ページ - 個人 - Microsoft​ Edge-2022-12-02 17_05_27.png

ログイン画面が表示されました。
標準インターフェイス - GLPI および他 20 ページ - 個人 - Microsoft​ Edge-2022-12-02 17_05_59.png

後処理

ログインに成功すると、下記のメッセージが表示されます。

  • セキュリティ上の理由から、デフォルトユーザー: glpi post-only tech normal のパスワードを変更してください
  • セキュリティの観点から、次のファイルを削除してください: install/install.php

忘れずに対処しましょう。

  • 標準ユーザーはパスワードを変更したうえで、無効にする
  • install/install.phpは削除する

以上。

2
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
2
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?