AlmaLinux8インストール

管理している事務系システムのOSがCentOS 7なので、間もなくサポートが終了するため、AlmaLinuxでの動作を確認するためにAlmaLinux8をインストールしてみました

環境

事務系システムがCakePHP3で動作していているため、CakePHP3のシステム要件に合わせ、インストール環境は以下となります。

AlmaLinux8

Hyper-Vの仮想マシンとしてインストールしたので、仮想マシンは以下の設定

  • 世代:第1世代 ※第2世代を選択したときは、初回の起動前に「設定>ファームウェア」の「セキュアブートを有効にする」をオフにしないと、起動に失敗します。
  • 起動メモリ:1024MB 動的メモリ使用 ※初期の512MBでは、インストール時にエラーしてしまうため1024MB以上にしましょう。
  • ネットワーク:仮想ネットワーク
  • ハードディスク:VHDXフォーマット 127GB(初期値のまま)
  • ブート:公式サイトからダウンロードした「AlmaLinux-8.9-x86_64-dvd.iso」と指定

インストールのウイザードに沿って、
「言語設定」では「日本語」を選択。
「インストール概要」画面では、赤文字になっている「rootパスワード」、「ユーザの作成」、「インストール先」を設定します
「rootパスワード」を設定すると、「ユーザーの作成」は任意項目(作成しなくても良い)となり、「ユーザーの作成」で「このユーザーを管理者にする」をオンにすると「rootのパスワード」の指定は任意項目となります。
「インストール先」は、設定画面を開いてローカル標準ディスクにチェックがあるいることを確認して何もせずにそのまま「完了」ボタンを押します。

これで、インストールを開始できますが、インストール後の手間が省けるので以下の設定も行いました。

「ソフトウエアの選択」から「FTPサーバー」も選択しました。
「ネットワークとホスト名」を開き、初期状態ではネットワークはオフなので、オンにします。ネットワーク内にDHCPサーバーがあれば、自動的にIPアドレスなどが設定されます。
「設定」を開き「全般」タブを表示して「優先的に自動接続する」をオンにします。ここがオンになっていないと再起動したときに毎回ネットワークを起動する必要があります。
今回はサーバーとして使用するため、IPアドレスは固定したいので「IPv4設定」タブで「メソッド」を「手動」に変更。アドレスにある「追加」ボタンを押して、「アドレス」、「ネットマスク」、「ゲートウェイ」、「DNSサーバー」を設定し、「保存」ボタンを押します。
ホスト名の初期値は「local」なので、「ホスト名」に任意の文字列を入力して、「適用」ボタンを押します。
「日付と時刻」が「アメリカ大陸」となっていたので、地図上の東京あたりをクリックして、「地域」を「アジア」、「都市」を「東京」にしました。また、「NTPサーバーが稼働していません」の警告が表示されていたので、右上にある歯車のボタンを押して、ホスト名「2.almalinux.pool.ntp.org」のプール、稼働中、使用がオンになっているのを確認後、そのまま「OK」ボタンを押したところ、警告は消えました。「完了」ボタンを押して概要画面戻ります。

これで「インストールを開始」ボタンを押します。

インストールが完了したら「システムの再起動」ボタンを押します。

システムが起動すると「初期セットアップ」が表示されます。「ライセンス情報」を開き、「ライセンス契約に同意します」をオンにして「完了」ボタンを押します。

「設定の完了」ボタンを押すと、システムが再起動して、システムのインストールが終了します。

インストール直後から、ssh、FTPは起動しており、何の設定のせずに外部からアクセス可能です。

ページの先頭へ

Apach

Apachは、dnfコマンドを使いインストールします。rootユーザーで行います。

# dnf install httpd

ここでインストールされるのは

依存関係が解決しました。
================================================================================
 パッケージ      Arch   バージョン                              Repo      サイズ
================================================================================
 httpd           x86_64 2.4.37-62.module_el8.9.0+3646+acd210d0  appstream 1.4 M
依存関係のインストール:	
 almalinux-logos-httpd
                 noarch 84.5-1.el8                              appstream  29 k
 apr             x86_64 1.6.3-12.el8                            appstream 128 k
 apr-util        x86_64 1.6.1-9.el8                             appstream 105 k
 httpd-tools     x86_64 2.4.37-62.module_el8.9.0+3646+acd210d0  appstream 110 k
 mod_http2       x86_64 1.15.7-8.module_el8.9.0+3660+29a7abf6.3 appstream 154 k
弱い依存関係のインストール:
 apr-util-bdb    x86_64 1.6.1-9.el8                             appstream  24 k
 apr-util-openssl
                 x86_64 1.6.1-9.el8                             appstream  26 k

インストールされたのは

インストール済み:
almalinux-logos-httpd-84.5-1.el8.noarch
apr-1.6.3-12.el8.x86_64
apr-util-1.6.1-9.el8.x86_64
apr-util-bdb-1.6.1-9.el8.x86_64
apr-util-openssl-1.6.1-9.el8.x86_64
httpd-2.4.37-62.module_el8.9.0+3646+acd210d0.x86_64
httpd-tools-2.4.37-62.module_el8.9.0+3646+acd210d0.x86_64
mod_http2-1.15.7-8.module_el8.9.0+3660+29a7abf6.3.x86_64

バージョン確認

# httpd -v
Server version: Apache/2.4.37 (AlmaLinux)
Server built:   Oct 18 2023 12:00:09

ユーザー名「webmaster 」、ホームディレクトリはドキュメントルートの「/var/www/html」で専用のユーザーを作りました。

# useradd -d /var/www/html webmaster
useradd: 警告: ホームディレクトリが既に存在します。
skel ディレクトリからのコピーは行いません。

パスワードを設定します。

# passwd webmaster
ユーザー webmaster のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

「/var/www/html」下にあるファイルのパーミッションを「webmaster 」にします。-Rオプションで再帰的に行うようにします。

# chown -R webmaster:webmaster /var/www/html

AlmaLinux8は、SELinuxが有効になっているので初期状態ではそのままでは外部からのアクセスができません。外部からアクセスできるようにファイアウォールのポートを開きます。

# firewall-cmd --add-service=http --zone=public --permanent
success
# firewall-cmd --reload
success

.htaccessを有効にするためhttpd.confを編集します

# vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/html">

<Directory "/var/www/html">タブにあるAllowOverrideディレクティブの設定をNoneからAllに変更します。 ※AllowOverrideは何カ所かにあるので変更する箇所に注意しましょう。

#    AllowOverride None
    AllowOverride All

Apachを起動します。

# systemctl start httpd

自動起動の設定を行います。

# systemctl enable httpd

ページの先頭へ

postgresql

postgresqlも、dnfコマンドを使いインストールします。

# dnf install postgresql-server

ここでインストールされるのは

依存関係が解決しました。
================================================================================
 パッケージ  Arch   バージョン                                  Repo      サイズ
================================================================================
インストール:
 postgresql-server
             x86_64 10.23-4.module_el8.9.0+3736+952d0ed7.alma.1 appstream 5.1 M
依存関係のインストール:
 libpq       x86_64 13.11-1.el8.alma.1                          appstream 198 k
 postgresql  x86_64 10.23-4.module_el8.9.0+3736+952d0ed7.alma.1 appstream 1.5 M
モジュールストリームの有効化中:
 postgresql         10

途中で、2回GPG 鍵インポートの確認を求められますが、特に問題が無ければ「y」を入力します。

インストールされたのは

インストール済み:
  libpq-13.11-1.el8.alma.1.x86_64
  postgresql-10.23-4.module_el8.9.0+3736+952d0ed7.alma.1.x86_64
  postgresql-server-10.23-4.module_el8.9.0+3736+952d0ed7.alma.1.x86_64

バージョン確認 ※「V」は大文字です

# psql -V
psql (PostgreSQL) 10.23

サーバー起動前にデータベースの初期設定を行います。初期設定しないと起動できません。

# postgresql-setup initdb
WARNING: using obsoleted argument syntax, try --help
WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

サーバーを起動します。

# systemctl start postgresql

自動起動の設定を行います。

# systemctl enable postgresql

データ管理をWindowsPCから行うので外部からアクセスできるようにpostgresql.confを編集します。

# vi /var/lib/pgsql/data/postgresql.conf

以下の記述を追加します。 ※検証機のため、すべてのIPから許可してますが、実機運用では特定のIPアドレスを指定しましょう。

listen_addresses = '*'

接続認証を変更します。以下の記述を文末に追加します。 ※検証機のため、「パスワードなし」にしてますが、実機運用では必ず、パスワード認証を行うように設定してください。上の2行が内部接続、3行目は外部からのアクセス用です。

# vi /var/lib/pgsql/data/pg_hba.conf

host  all all 127.0.0.1/32 trust
host  all all ::1/128      trust
host  all all 192.168.0.0 255.255.255.0 trust

設定を変更したので、再起動します。

# systemctl restart postgresql

外部からアクセスできるようにファイアウォールのポートを開きます。

# firewall-cmd --add-service=postgresql --permanent
success
# firewall-cmd --reload
success

ページの先頭へ

PHP

AlmaLinux8のデフォルトはPHP7.2のため7.4がインストールできるようにします。今回はremi-7.4をインストールします。

ネットの情報によるとremiレジストリとはRemi Colletさんと言う方がメンテナンスしているリポジトリだそうです。

# dnf install epel-release
# dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

キャッシュを作成/更新します

# dnf clean all && dnf -y makecache

remi-7.4をインストールするように指定します。

# dnf module reset php && dnf module enable php:remi-7.4

指定後はこのようになります。上が標準リポジトリ、下がremiリポジトリですね。

# dnf module list php
AlmaLinux 8 - AppStream
Name     Stream          Profiles                      Summary
php      7.2 [d]         common [d], devel, minimal    PHP scripting language
php      7.3             common [d], devel, minimal    PHP scripting language
php      7.4             common [d], devel, minimal    PHP scripting language
php      8.0             common [d], devel, minimal    PHP scripting language

Remi's Modular repository for Enterprise Linux 8 - x86_64
Name     Stream          Profiles                      Summary
php      remi-7.2        common [d], devel, minimal    PHP scripting language
php      remi-7.3        common [d], devel, minimal    PHP scripting language
php      remi-7.4 [e]    common [d], devel, minimal    PHP scripting language
php      remi-8.0        common [d], devel, minimal    PHP scripting language
php      remi-8.1        common [d], devel, minimal    PHP scripting language
php      remi-8.2        common [d], devel, minimal    PHP scripting language
php      remi-8.3        common [d], devel, minimal    PHP scripting language

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled

CakePHPの要件からmbstring とxmlを、データベースにpostgresqlを使うのでpdo とpgsqlを、そのほか必要なPHP 拡張も一緒にインストールします。

# dnf install php-mbstring php-pgsql php-pdo php-xml php-pear php-devel
インストールされたモジュールは(長いので畳んでます)
インストール済み:
 autoconf-2.69-29.el8.noarch
  automake-1.16.1-8.el8.noarch
  cmake-filesystem-3.26.5-1.el8_9.x86_64
  cpp-8.5.0-20.el8.alma.x86_64
  gcc-8.5.0-20.el8.alma.x86_64
  gcc-c++-8.5.0-20.el8.alma.x86_64
  glibc-devel-2.28-236.el8.7.x86_64
  glibc-headers-2.28-236.el8.7.x86_64
  httpd-filesystem-2.4.37-62.module_el8.9.0+3646+acd210d0.noarch
  isl-0.16.1-6.el8.x86_64
  kernel-headers-4.18.0-513.18.1.el8_9.x86_64
  keyutils-libs-devel-1.5.10-9.el8.x86_64
  krb5-devel-1.18.2-26.el8_9.x86_64
  libcom_err-devel-1.45.6-5.el8.x86_64
  libkadm5-1.18.2-26.el8_9.x86_64
  libpq-13.11-1.el8.alma.1.x86_64
  libselinux-devel-2.9-8.el8.x86_64
  libsepol-devel-2.9-3.el8.x86_64
  libstdc++-devel-8.5.0-20.el8.alma.x86_64
  libtool-2.4.6-25.el8.x86_64
  libverto-devel-0.3.2-2.el8.x86_64
  libxcrypt-devel-4.1.1-6.el8.x86_64
  libxml2-devel-2.9.7-16.el8_8.1.x86_64
  m4-1.4.18-7.el8.x86_64
  make-1:4.2.1-11.el8.x86_64
  oniguruma5php-6.9.9-1.el8.remi.x86_64
  openssl-devel-1:1.1.1k-9.el8_7.x86_64
  pcre2-devel-10.32-3.el8_6.x86_64
  pcre2-utf16-10.32-3.el8_6.x86_64
  pcre2-utf32-10.32-3.el8_6.x86_64
  perl-Thread-Queue-3.13-1.el8.noarch
  php-cli-7.4.33-10.el8.remi.x86_64
  php-common-7.4.33-10.el8.remi.x86_64
  php-devel-7.4.33-10.el8.remi.x86_64
  php-fedora-autoloader-1.0.1-7.el8.noarch
  php-json-7.4.33-10.el8.remi.x86_64
  php-mbstring-7.4.33-10.el8.remi.x86_64
  php-pdo-7.4.33-10.el8.remi.x86_64
  php-pear-1:1.10.15-1.el8.remi.noarch
  php-pgsql-7.4.33-10.el8.remi.x86_64
  php-process-7.4.33-10.el8.remi.x86_64
  php-xml-7.4.33-10.el8.remi.x86_64
  xz-devel-5.2.4-4.el8_6.x86_64
  zlib-devel-1.2.11-25.el8.x86_64

バージョン確認

# php -v
PHP 7.4.33 (cli) (built: Dec 12 2023 14:40:21) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

mod_phpも必要だったのでインストール(これが無いとApachでPHPが動きません)

# dnf -y install mod_php

インストールされるのは

依存関係が解決しました。
================================================================================
 パッケージ       Arch   バージョン                          リポジトリー サイズ
================================================================================
インストール:
 php              x86_64 7.4.33-10.el8.remi                  remi-modular 3.0 M
依存関係のインストール:
 libsodium        x86_64 1.0.18-2.el8                        epel         162 k
弱い依存関係のインストール:
 nginx-filesystem noarch 1:1.14.1-9.module_el8.3.0+2165+af250afe.alma
                                                             appstream     23 k
 php-fpm          x86_64 7.4.33-10.el8.remi                  remi-modular 1.6 M
 php-opcache      x86_64 7.4.33-10.el8.remi                  remi-modular 340 k
 php-sodium       x86_64 7.4.33-10.el8.remi                  remi-modular  93 k
モジュールストリームの有効化中:
 nginx                   1.14

インストールされたのは

インストール済み:
  libsodium-1.0.18-2.el8.x86_64
  nginx-filesystem-1:1.14.1-9.module_el8.3.0+2165+af250afe.alma.noarch
  php-7.4.33-10.el8.remi.x86_64
  php-fpm-7.4.33-10.el8.remi.x86_64
  php-opcache-7.4.33-10.el8.remi.x86_64
  php-sodium-7.4.33-10.el8.remi.x86_64

PHPが動くようにApachを再起動します。

# systemctl restart httpd

ページの先頭へ

CakePHP3

CakePHPは、Composerを使ってインストールしますが、今回は現行のディレクトリをそのままコピーしてしまうために、新規にインストールは省略です。(実情はComposerのインストールがうまく行かなかったため、現在の環境をそのまま展開することにしてしまった)

ログディレクトリとキャッシュディレクトリが書き込みできるようにSELinuxポリシーを変更します。 ※(プロジェクト)はCakePHPプロジェクトのインストールディレクトリ名

# semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/(プロジェクト)
# restorecon -R /var/www/html/(プロジェクト)/tmp
# semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/(プロジェクト)
# restorecon -R /var/www/html/(プロジェクト)/logs

ページの先頭へ

sqlsrv

本システムでは、MS SQLサーバーにもアクセスするため、sqlsrvPHP 拡張をインストールします。sqlsrvをインストールするためには、ODBC ドライバーをも一緒にインストールする必要があります。CentOS 7ではMSODBC13を使っていました。AlmaLinux8ではMSODBC17もインストールできるのはずですが、試行錯誤したもののうまく行かなかったので、ここではMSODBC13をインストールします。 ※後日、MSODBC17の手順が分かったら掲載します。

MSODBC13をインストールします ※msodbcsql-13は、以下のURLにあるものを使います。

# dnf install https://packages.microsoft.com/rhel/7/prod/msodbcsql-13.1.9.2-1.x86_64.rpm

インストールされるのは

依存関係が解決しました。
================================================================================
 パッケージ        Arch    バージョン        リポジトリー                 サイズ
================================================================================
インストール:
 msodbcsql         x86_64  13.1.9.2-1        @commandline                 4.0 M
依存関係のインストール:
 compat-openssl10  x86_64  1:1.0.2o-4.el8_6  appstream                    1.1 M
 unixODBC          x86_64  2.3.11-1.rh       packages-microsoft-com-prod  274 k

途中で、GPG 鍵のインポートとライセンスの確認があるので、そこは「YES」とします。
インストールされたのは

インストール済み:
  compat-openssl10-1:1.0.2o-4.el8_6.x86_64      msodbcsql-13.1.9.2-1.x86_64
  unixODBC-2.3.11-1.rh.x86_64

PHP 拡張をインストールします

# dnf install --enablerepo=remi php-sqlsrv

インストールされるのは ※ログを見る限り、msodbcsql17も一緒にインストールされるようですが、先にmsodbcsqlが入っていないとここでエラーしてしまうので、この手順を踏んでいます。


依存関係が解決しました。
================================================================================
 パッケージ   Arch    バージョン             リポジトリー                 サイズ
================================================================================
インストール:
 php-sqlsrv   x86_64  5.10.1-2.el8.remi.7.4  remi-modular                 263 k
依存関係のインストール:
 msodbcsql17  x86_64  17.10.5.1-1            packages-microsoft-com-prod  913 k

途中で、ライセンスの確認があるので、そこは「YES」とします。
インストールされたのは 

インストール済み:
  msodbcsql17-17.10.5.1-1.x86_64     php-sqlsrv-5.10.1-2.el8.remi.7.4.x86_64

Apachを再起動します。

# systemctl restart httpd

ページの先頭へ