AlmaLinux 9 への移行テスト 4 – WEB 周り

Linux
この記事は約8分で読めます。

はじめに

 MTA の動作テストは無事に完了したので次のステップは WEB 周りに手を付けてみる。
 NextCloud を使っている関係上、ストレージのほうもちょっと設定があったりでどうしようかちょっと悩んだ。

FreeNginx

 Nginx ではなく FreeNginx を使っているからこれをビルドする。
 モジュールをいくつか追加している事と、いち早く HTTP/3 を使いたかったからと最新版を使いたいが故に RPM パッケージは使わない。

 必要なソースのダウンロードと展開。OpenSSL のビルドに perl-IPC-Cmd が必要だった気がするので入れておく。

% mkdir ~/src
% cd ~/src
% wget https://github.com/openssl/openssl/releases/download/openssl-3.3.2/openssl-3.3.2.tar.gz
% wget https://freenginx.org/download/freenginx-1.27.4.tar.gz
% tar xf openssl-3.3.2.tar.gz
% tar xf freenginx-1.27.4.tar.gz
% sudo dnf install perl-IPC-Cmd

 FreeNginx をビルドする。オプションは RPM パッケージを拾ってきてビルドオプションを大体パクっている。
 別途 Nginx のモジュールを追加しているが、該当するソースの取得に関しては割愛。
 キャッシュディレクトリも掘っておいた。

% cd freenginx-1.27.4
% ./configure --prefix=/usr/local --modules-path=/etc/nginx/modules --conf-path=/etc/nginx/nginx.conf  --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads --add-module=../nginx_modules/ngx_cache_purge --add-module=../nginx_modules/ngx_http_geoip2_module --add-module=../nginx_modules/ngx_brotli --with-http_v3_module --with-openssl=../openssl-3.3.2
% make -j$(nproc)
% sudo make install

% sudo mkdir /var/cache/nginx
% sudo chown nginx:nginx /var/cache/nginx

 あとは Nginx の設定ファイルを移行元ホストからコピーして配置、sudo nginx -t して出たエラーを潰していく。

 systemd の Unit ファイルも用意しておく。内容は上記でビルドしたオプションに合わせた専用のものになる。

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStart=/usr/local/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /var/run/nginx.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /var/run/nginx.pid)"

[Install]
WantedBy=multi-user.target

PHP

 移行元ホストに入れているパッケージを調べ、それらから入るものは全部入れる。
 以下のようにインストールされている PHP のパッケージ名を抽出してバージョンナンバーをパースして消すと、何が入っているか分かりやすい。

% rpm -qa | grep php | sed -r "s/^(.+)\-.+\-.+$/\1/g;"

 続いて dnf でまるっとインストール

% sudo dnf install gd3php oniguruma5php php-bcmath php-brotli php-cli php-common php-devel php-fedora-autoloader php-fpm php-gd php-gmp php-imap php-intl php-ldap php-mbstring php-mysqlnd php-opcache php-pdo php-pear php-pear-Auth-SASL php-pear-Mail-Mime php-pear-Net-IDNA2 php-pear-Net-SMTP php-pear-Net-Socket php-pecl-apcu php-pecl-igbinary php-pecl-imagick-im6 php-pecl-mcrypt php-pecl-msgpack php-pecl-redis5 php-pecl-zip php-process php-pspell php-smbclient php-sodium php-tidy php-xml

 設定周りは移行元ホストから /etc/php.ini/etc/php-fpm.d をまんまコピーしておく。
 あとは sudo systemctl start php-fpm として出たエラーを潰していく。

NextCloud 用の設定

 NextCloud は別途ストレージを 500GB 割り当てていたので、これを仮想ディスクで追加する。

 追加後、仮想マシンを起動したら次のようにしてパーティションを作成し、起動時にマウントするようにする。

% sudo fdisk
(snip...
% sudo mkfs.xfs /dev/sda1
% sudo blkid /dev/sda1
/dev/sda1: UUID="7893bc97-2484-4ba1-a8fb-bf539872aa98" TYPE="xfs" PARTUUID="be44106d-01"

 blkid コマンドで指定したデバイスの UUID が分かるんで、それを以下の行のように /etc/fstab に追記してマシン起動時に自動的にマウントするようにする。

UUID=7893bc97-2484-4ba1-a8fb-bf539872aa98 /storage/cloud xfs defaults 0 0

UUID はパーティションを作成する度に変わるんで、作り直したりしたら毎回 UUID を調べること。
ブロックデバイスを指定してもマウントは出来るけど、確実にデバイスを指定したいので UUID を使っている。

 NextCloud が使用しているファイルをこのマウントポイントへ全部コピーしておくことにした。

おわりに

 NextCloud が使用しているディスク容量は 170GB ほどだったんで、パーミッションやあれこれの関係上、一時的に sshd に root 接続を許可して scp -rp してまとめてコピーしている。
 コピーが終わったら動作テストをどうやるか考えて実行に移せればとおもう。

 ここまで上手く動作させることが出来れば、表向きに動かしているサービス類は移行ができるはずなんで頑張ろう。
 内部的には DHCP や RA 等、足回りの設定が残っているけどテストが面倒なので後回し中。

著者プロフィール
ぶっち

本格的に PC へ触れ始めてたのは 1990 年位から。
興味は PC 全般。OS は Windows と Linux などを嗜む。
プログラマやネットワークエンジニアを経てフリーに活動している 40 代も後半に入ったおじさんです。

ぶっちをフォローする

コメント

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.