AlmaLinux8インストール
管理している事務系システムのOSがCentOS 7なので、間もなくサポートが終了するため、AlmaLinuxでの動作を確認するためにAlmaLinux8をインストールしてみました
環境
事務系システムがCakePHP3で動作していているため、CakePHP3のシステム要件に合わせ、インストール環境は以下となります。
- AlmaLinux8
- Apach
- postgresql10
- PHP7.4.33
- CakePHP3
- sqlsrv
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