今回はLinuxネタです。

そろそろ、このWordpressが稼働している次期WEBブログサーバをManjaroLinuxに移行したいと考えています。

現行のWEBブログサーバはUbuntuの20.04LTSです。
まだサポート期間中ではありますが、業務環境というわけでもないし、筆者はやはり新しいモノが好きですので、
最新環境で運用するチャレンジにワクワクを感じます。

トラブル解決も含めて運用保守のスキルが身に付くと考えるため、
趣味環境ではソフトウェアのサポート期限ギリギリまで使うという発想はありません。

ちなみに最近は筆者は業務ではプロジェクト管理やメンバーやコスト管理がメインタスクに移行しつつあり、
こうやって自分から手を動かさないとスキルは劣化してしまいますので良い機会です。

というわけで前置きはこれくらいにしておいて、次期WEBブログサーバを
ManjaroLinuxで運用するべく、移行準備のフェーズについて記載していきます。

新環境へのOpenLiteSpeedの移行に向けては以下の流れで進めていきます。


1)新WEBブログサーバ環境の構築、設定ファイルを現行と新環境で合わせる

2)現行サーバ上のWEBのコンテンツデータを新環境に移送

3)サイトの表示を確認し、動作不備がないか、サーバ側ではエラーログが出てないか確認。

4)上記で何か不足なモジュール等があれば追加して、引き続き動作を確認

5)不具合がないことを確認してサーバを新環境に切替実行


まずはこの第1段階、ManjaroLinuxのインストールを実施についてです。

OpenLiteSpeed1.7.14のインストール

次にWEBサーバである「OpenLiteSpeed」をサイトからインストールします。
手順は以下となります。

# curl -O  https://openlitespeed.org/packages/openlitespeed-1.7.14.tgz

次に解凍します。

# tar xvzf openlitespeed-1.7.14.tgz

解凍すると「openlitespeed」というフォルダができます。
フォルダへ移動し、インストーラを実行します。

# cd openlitespeed
# ./install.sh

インストール完了後、管理ユーザ(admin)用パスワードが生成されます。
以下でOpenLiteSpeedのサーバを起動します。

# cd /usr/local/lswd/bin
# ./lswsctl start

起動できたら管理画面はブラウザ経由で作業可能ですので、
管理画面にアクセスし、ID/PASSを入力してログインします。

※ユーザ名は「admin」パスワードは先ほど生成されたパスワード。

管理画面で特に不具合やエラーが無ければ、次は環境設定です。
現行WEBサーバの設定と同じように設定をします。
両方の管理画面を見比べながら同様に設定していきます。

OpenLiteSpeedで現行から新環境への設定引越しについて

筆者は最初は設定ファイルを移行すれば簡単かな?と思い、
/usr/local/lsws/conf以下の設定ファイルを新環境へ移動しました。

しかし、最初はログインできたものの、操作をするうちに徐々に不安定になり、
サーバへアクセスできなくなり、OpenLiteSpeedのWEBサーバ起動すらできなくなりました。

設定ファイルにはサーバ自身の固有の環境情報も含まれます。
そのため設定ファイルを全て移動するのは避けた方が良いと思います。

いくつかトライした中で筆者おすすめの方法は以下になります。

・設定ファイルを新環境へ移行するのは、conf/配下のvhostのみとする。
・バーチャルホストを現行環境の管理画面を見ながら新環境でも手動で追加していく。
・バーチャルホスト追加時の一般の3項目だけ追加して保存する。
・上記後サーバ再起動で、他の項目の設定情報は引き継がれて表示されました。

設定ファイルが完了したらこのタイミングで各バーチャルホスト上のウェブサイトの
コンテンツについても現行環境と同一の箇所に移動が可能です。

PHP8の最新版への更新

次にPHP8を最新環境へバージョンアップしましょう。
OpenLiteSpeedをダウンロードしたデフォルト状態だと8.0.7となっていました。

以下ファイルを開き、本日時点で最新の[8.0.12]を追記します。

# vi /usr/local/lsws/admin/html/lib/util/build_php/BuildConfig.php

尚、最新版へ更新の詳細手順は前回記事にも記載しています。
合わせて参照ください。


上記でコンフィグファイル修正後、管理画面に移動し、PHPを最新バージョンを選択してコンパイル。
サーバを再起動するとPHP8が最新版へ入れ替わります。

ビルド時の設定ですが、筆者は以下のようにしました。

'--with-mysqli' '--with-zlib' '--enable-gd' '--enable-gd-jis-conv' '--enable-shmop' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-mbstring' '--with-iconv' '--with-pdo-mysql' '--enable-ftp' '--with-curl' '--enable-soap' '--enable-xml' '--enable-json' '--with-openssl' '--enable-bcmath' '--enable-exif' '--with-jpeg' '--with-freetype' '--with-xmlrpc' '--with-gettext' '--with-bz2' '--enable-litespeed' '--enable-opcache' '--with-zip' '--with-xpm'

尚、ManjaroLinuxの場合は、PHP8のコンパイル時には以下のパッケージが不足して、
コンパイル時にエラーで停止しました。

※「oniguruma」、「libzip」、「make」の不足

今回は以下コマンドでパッケージを追加して再度コンパイルして成功しました。

$ sudo pacman -S oniguruma libzip make

サーバ証明書について

次にSSLサーバ証明書データを現行環境と同一の場所にコピーします。
筆者の場合、サーバ証明書は無償のLetsencryptを利用しています。

新環境でも以下コマンドでletsencryptをインストールします。

$ sudo pacman -S certbot

ついでにAWS Route53の連携更新用のモジュールも追加します

$ python3 -m pip install certbot-dns-route53 awscli boto3 botocore

現行の「.aws」配下のAWSの設定ファイルも移送しておきます。

次にletsencryptの設定ファイルを現行環境の以下のパスにあるものを、新環境にコピーします。

/etc/letsencrypt/*

これでletsencryptの準備が完了です。


切り替え動作試験

本番のDNSでの切り替え前に、仮に切り替えても動作するかを、手元のPC環境だけで確認します。
これにはPCのhostsファイルを書き換えて確認することができます。

このhosts切り替えで新環境へアクセスが可能であれば、あとは各種コンテンツの準備ができたら
切り替え実施が可能ということになります。

hostsファイルの位置

windowsの場合
c:¥windows¥system32¥drivers¥etc/hosts

Linux/macOSの場合
/etc/hosts


という流れで事前に切り替え試験をして問題ないことを確認してから、
WEBサーバの切り替えを実施していくことになります。

筆者の場合は既にデータ移行も終わり、都合の良いタイミングで切り替えるだけという二台体制となっています。
二台体制だと安心ですね、仮に一台が故障しても二台めに切り替えができます。

しかし、常にデータを二台とも同一にしておく必要があります。

そこで、今後はこのサーバ二重化、冗長化体制を維持する方法についても記載していきます。