サーバ更新に至るいろいろ

FreeBSD,日記・つぶやき,環境構築

今月頭に旧ブログのデータを吹っ飛ばしてしまう大ミスをおかし、新しく立ち上げたのだが、そのあたりの日記を記しておこう。

最初は・・機能追加しようと

WebAPIの環境を整えたい

WebAPIを使ってみたいと以前から思っていたのでその環境を整えようと。また、最近のAI(Artificial Intelligence)ブームでpythonが脚光浴びてるところもあるし、python+αの環境を構築することに決めた。
まずは、pakckageにてpython3をインストール。しようとしたら、、

# pkg install python3
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
Updating database digests format: 100%
New version of pkg detected; it needs to be installed first.
The following 1 package(s) will be affected (of 0 checked):

Installed packages to be UPGRADED:
pkg: 1.5.2 -> 1.10.5_1

The process will require 761 KiB more space.
3 MiB to be downloaded.

Proceed with this action? [y/N]: y
Fetching pkg-1.10.5_1.txz: 100% 3 MiB 1.3MB/s 00:02
Checking integrity... done (0 conflicting)
[1/1] Upgrading pkg from 1.5.2 to 1.10.5_1...
[1/1] Extracting pkg-1.10.5_1: 100%
/usr/local/lib/libpkg.so.4: Undefined symbol "openat"

pkgコマンドがそもそも古い。。。で、まずpkgコマンドがアップグレードされようとしたがエラーが発生した。
しかたないので、portsにてpkgをアップデートする。

pkgコマンドのアップグレード

portsディレクトリに移り、make install

# cd pkg
# make reinstall
/!\ ERROR: /!\

Ports Collection support for your FreeBSD version has ended, and no ports are
guaranteed to build on this system. Please upgrade to a supported release.

No support will be provided if you silence this message by defining
ALLOW_UNSUPPORTED_SYSTEM.

*** Error code 1

Stop.
make[1]: stopped in /usr/ports/ports-mgmt/pkg
*** Error code 1

Stop.
make: stopped in /usr/ports/ports-mgmt/pkg

なんと、もはやFreeBSDがサポート外になったバージョンなんでサポートバージョンにアップグレードせいと。まぁALLOW_UNSUPPORTED_SYSTEMを定義すればできるらしいことは書いてあるが、、
確かにもう古いことは認識していたしいずれアップグレードしなきゃあかんと思ってはいたのでこの機にアップグレードしようと思う。これが失敗の始まりその1である。

FreeBSDのアップグレード

最新Releaseにしようと

とりあえず、主要ディレクトリのtarをとり別マシンへFTPにてバックアップ、WordPress用のMySQLデータベースのバックアップをphpMyAdminのエクスポートで取る。このとりあえずのバックアップが後で失敗を招くのだ。さっさと済まそうとしたのが最大の失敗要因。
そもそもWordPressの機能を使ってバックアップとることもできるし、普段からマメにとっておけばなんてこともないのだが、立ち上げた時からその場しのぎでやってきてろくにやってなかったのだ。やらなきゃいかんと思っても後回しだったのね。まぁさほど重要じゃないし困るの自分だけというのが要因の一つではあるww

そして、最新のReleaseである11.1-RELEASEにしようと

# freebsd-update upgrade -r 11.1-RELEASE
Looking up update.FreeBSD.org mirrors... none found.
Fetching metadata signature for 10.1-RELEASE from update.FreeBSD.org... done.
Fetching metadata index... done.
Fetching 2 metadata patches.. done.
Applying metadata patches... done.
Fetching 1 metadata files... done.
Inspecting system... done.

The following components of FreeBSD seem to be installed:
kernel/generic world/base world/doc world/games

The following components of FreeBSD do not seem to be installed:
src/src

Does this look reasonable (y/n)? y

Fetching metadata signature for 11.1-RELEASE from update.FreeBSD.org... done.
Fetching metadata index... done.
Fetching 1 metadata patches. done.
Applying metadata patches... done.
Fetching 1 metadata files... done.

The update metadata is correctly signed, but
failed an integrity check.
Cowardly refusing to proceed any further.

拒否されたw
この時点で金曜日夜中23:30ごろだったか。諦めて翌日にすればよかったのでしょうが、そのまま作業を続けてしまった。これも失敗要因だ。慌てちゃいかんかった。

まず10系の最新版に

とりあえず、10系の最新10.4-RELEASEにすることに。

# freebsd-update upgrade -r 10.4-RELEASE
Looking up update.FreeBSD.org mirrors... none found.
Fetching metadata signature for 10.1-RELEASE from update.FreeBSD.org... done.
Fetching metadata index... done.
Inspecting system... done.

The following components of FreeBSD seem to be installed:
kernel/generic world/base world/doc world/games

The following components of FreeBSD do not seem to be installed:
src/src

Does this look reasonable (y/n)? y

Fetching metadata signature for 10.4-RELEASE from update.FreeBSD.org... done.
Fetching metadata index... done.
Fetching 1 metadata patches. done.
Applying metadata patches... done.
Fetching 1 metadata files... done.
Inspecting system... done.
Fetching files from 10.1-RELEASE for merging... done.
Preparing to download files... done.
Fetching 11358 patches.....10....20....30....40....50....60....70....80....90....100....110....120....130....140....150....160....170....180....190....200....
(中略)
....11210....11220....11230....11240....11250....11260....11270....11280....11290....11300....11310....11320....11330....11340....11350.... done.
Applying patches... done.
Fetching 9335 files... 

ここで表示が止まること30分。何も反応がないと不安である。
その後、変更ファイルのリスト等が表示された後

To install the downloaded upgrades, run "/usr/sbin/freebsd-update install".
# 

と無事表示されました。そしてメッセージ通り

# freebsd-update install
Installing updates...
Kernel updates have been installed.  Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.

メッセージ通りリブートして再び

# freebsd-update install
Installing updates...

(待つこと数分)

Installing updates... done.
#

完了したようだ。この時0:30くらい。

次のステップ

そして、そこで一旦寝て翌朝再開すればよかったのに続けて作業してしまった。続けて11.1-RELEASEにアップグレードしようとしたのだ。ここで(1)そのまま10.4-RELEASEで運用する(2)翌朝、一旦状況整理して再度いろいろ確認とか必要な処置とか考えて11.1-RELEASEへアップグレード という方法を取るべきだった。夜中に計画なしに作業してろくなことはない。

ここでまた上記の(30分待つ)のところまで見てから布団に入った。

翌朝。
・・・終わってない。。。
その後、いろいろ漁ってゴチャゴチャやっているうちに、11.1-RELEASEにアップグレードはできたが、カーネルが壊れて起動できなくなりました。。落ち着いてやればそんなことなかっただろうに。

11.1-RELEASEのクリーンインストール

カーネル破損時も、一度はoldカーネルで起動できた。冷静ならこの時点でoldカーネルをちゃんとバックアップしてちゃんと起動するカーネルを整えてから次の作業をしただろうが、ろくに寝てない状態で冷静さを欠いていたのだろう。きちんとやらずに完全破壊させてしまった。まぁ壊れたものは仕方ないのでクリーンインストールする。
この時点では、がっかり半分、クリーンできていいか半分くらいの余裕があった。

OSのインストールは10分ほどで終了。速いね。

サービスのインストール

まずはネットワーク設定をし、FTP可能にしてバックアップしてあったファイル群を展開可能に。その後以前のサーバーで稼働させていたサービスを設定。そしてやりたいと思っていた設定も。

メール

既存サービス:Postfix、Dovecot SSL/TLS対応
新規サービス:webメール
メールデータの復旧

Web

サービス:Apache、MySQL、phpMyAdmin、WordPress
Webページデータの復旧(WordPress分以外)
新規にSSL(https)対応化

プログラミング環境

新規サービス:WebAPI(Python他)

それぞれの設定については別途書きたいと思う。

WordPressデータの復旧失敗

今回の作業の最大の失敗は、WordPressのデータのバックアップ失敗。このブログサイトの他にもテスト用も含めたら4、5個あったのだが、どれもまとめて失った。そのうち1個はかなり痛いのだが、、、まぁ「覆水盆に返らず」であります。
正直、このブログは『書きたいネタは溜まっているが書けていない』状態で停滞していたので却っていい機会となったと前向きに考えている。

サービスの設定

メール環境

他のサービスは最悪多少ダウンタイムが長引いても被害は少ないが、メールだけはメインで使用しておりダウンタイムが長いと致命傷となる。そのため、最優先で対応しダウンタイム4時間くらいかな、でなんとか。
まずは既存相当のサービス環境を無事に立ち上げ、既存データも無事復帰。
マシン移行に関する情報・ノウハウもできたのでまぁヨシと考えよう。
翌週、webメールシステムのrainloopも設定。そこではちょっとハマって時間をロスした。。といっても、rainloop自体の設定ではなくもともとのメール設定に地雷があったのだが(笑)

AMP環境

Apache、MySQL、Pはいろいろ(PHP、Perl、Python etc. phpMyAdminなんかも?)の環境。
Apacheは結構すんなり。MySQLはボチボチ。まずは既存のSSL対応なしの状態での立上げはスムーズに済んだ。
webメール対応するということでSSL対応を真剣にやることに。SSL対応は以前からずっとやりたいと思っていたことだが、やってみるとそんなに苦労することなく順調にできた。こんなにサクッといくのならもっと早くやればよかった。以前にやりかかった時は認証ファイル関係がよくわからずだった記憶があるが・・・

 

ダウンさせてというかぶち壊して2週間(実質4、5日)で元の環境を超える環境の構築ができたのは不幸中の幸いというか、怪我の功名というか。失ったものもあるが、得たものも多くていい経験となりました。

FreeBSD,日記・つぶやき,環境構築

Posted by kawachan