はじめに
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
NextCloud が使用しているファイルをこのマウントポイントへ全部コピーしておくことにした。
おわりに
NextCloud が使用しているディスク容量は 170GB ほどだったんで、パーミッションやあれこれの関係上、一時的に sshd に root 接続を許可して scp -rp してまとめてコピーしている。
コピーが終わったら動作テストをどうやるか考えて実行に移せればとおもう。
ここまで上手く動作させることが出来れば、表向きに動かしているサービス類は移行ができるはずなんで頑張ろう。
内部的には DHCP や RA 等、足回りの設定が残っているけどテストが面倒なので後回し中。
コメント