Oracle Cloud InfrastructureでAlways FreeのARMインスタンスを作ってUbuntu20.04LTSにWordPressを移行するまでのメモ

最終更新日

Comments: 0

あらすじ

OsakaリージョンにてA1インスタンス争奪戦に勝利したのでCentOS7で稼働している当ブログ(WordPress)を運用しているサーバーより引っ越ししてみた。
一応、他インスタンス用に余裕をもたせるためAlways Freeのリソース上限一杯ではなく 3OCPU,18GB 構成のシェイプで作成。
CentOSの雲行きが怪しいためイメージはUbuntu 20.04を選択。

参考

スペック確認

ssh接続してスペック確認しておきましょう。
ちなみにUbuntuイメージの場合、初期で使用するユーザーは opc では無くなぜか ubuntu となっています。

これが無料…!?

下準備

root切り替え

何かとめんどくさいのでrootで作業しましょう。

タイムゾーン変更

パッケージ更新

SELinux無効

ユーティリティインストール。

初めから無効になってた。

Apache導入

インストールと動作確認

インストールして有効化

htmlディレクトリ権限設定
Ubuntuの場合apacheで使用するユーザーは www-data

グローバルIP確認

出力例

外部から http://140.83.83.216 にWebブラウザでアクセスしてデフォルトページを確認…。出ない!なぜ…。
80ポートが開放されてないようなのでサーベイ開始。

ファイアウォール設定

詳細は省きますが、素直にufwを使って80とついでに443ポートをLISTEN設定してもダメでした。
調べてみるとOCIでのUbuntuインスタンスの場合はufwが機能しない既知の問題があるようなのでiptablesを使ってポート開放設定をしていきます。

Ubuntuインスタンスが、Uncomplicated Firewall (UFW)を有効にした後で再起動に失敗します
詳細: Ubuntuを実行しているコンピュート・インスタンスでUFWを有効にすると、インスタンスが正常に再起動されません。

回避策: UFWを使用してファイアウォール・ルールを編集しないでください。プラットフォーム・イメージは、インスタンスがそのブート・ボリュームとブロック・ボリュームに発信接続できるように、ファイアウォール・ルールで事前構成されています。詳細は、「必須のファイアウォール・ルール」を参照してください。UFWがこれらのルールを削除すると、再起動中にインスタンスがブート・ボリュームとブロック・ボリュームに接続できなくなります。

まずは念の為ufwは使えないので無効にしておきます。

/etc/iptables/rules.v4 を編集してポート80と443の開放設定を追加。

更新設定を適用。

再度Webブラウザでアクセスしてデフォルトページが表示されたら成功です。

WordPress引っ越し

WordPress用ディレクトリ作成

任意ですが今回は /srv/d0web/www/blog に配置します。

旧サーバーで配置していたwordpress用ディレクトリの中身をすべて上記のディレクトリにコピー。
コピー後はオーナーを www-data に設定。

PHPとMariaDBをインストール

WordPressに必要なモジュールもインストール

データベース移行

旧サーバーで使用していたWordpressのデータベースのバックアップを取ります。旧サーバーもMariaDBという前提です。

d0web_db.bz2 というファイル名でバックアップが出力されます。

次に移行先のARMインスタンスの方で、データベースを作成します。
以下コマンドでMariaDB起動

旧サーバーと同じデータベース名でデータベース作成。

旧サーバーと同じユーザーとパスワードでユーザー作成。

MariaDBを終了

バックアップしておいた d0web_db.bz2 を作成したデータベースにインポート。

公開設定

配置したWordpressにアクセスできるようにするための設定を行います。

まずApacheのデフォルトページ設定を無効化。

配置したWordpressを表示するための設定を追加します。

以下内容のファイル 任意の名前.conf(d0web.com.conf など) で作成して /etc/apache2/sites-available に配置。
記載のディレクトリ場所等は適宜変更して下さい。

設定を適用

apacheを再起動して外部からWebブラウザでアクセスして確認。

移行したWordpressサイトが表示されたら成功。
各記事へのアクセスや、画像が出ない等はこの段階では無視しておく。(後ほどのドメイン設定で解決予定)
データベース確立エラーなどが表示される場合は手順を見直し。

ドメイン設定

使用している独自ドメインのIP割当を新サーバーのIPに割り当てる必要がありますが状況によって手順が異なります。

今回は旧サーバーがOCIのインスタンスで予約済みパブリックIPを割り当てており、
かつドメインはそのIPを割り当てている前提の手順とします。

予約済みIPの割当を変更

OCIコンソールより、
旧インスタンスの インスタンスの詳細 -> アタッチされたVNIC -> VNICの詳細 -> IPv4 アドレス にて 編集 を開きます。

一旦 “パブリックIPがありません” に設定してから、”エフェメラル・パブリックIP” に設定変更。

次は新インスタンス(ARM)の インスタンスの詳細 -> アタッチされたVNIC -> VNICの詳細 -> IPv4 アドレス の編集にて、
同様に一度パブリックIPを解除してから、既存の予約済みIPアドレスを選択します。

独自ドメインにて新インスタンスにSSH接続できるかやってみましょう。

VirtualHost設定

一つのサーバーで複数ドメインを使用して複数サイトを運用するなどが可能なVirtualHost設定をしておきましょう。

www.d0web.com または d0web.com でアクセスされた時のみ /srv/d0web/www/blog 配置されたコンテンツを表示する場合は、
/etc/apache2/sites-available に配置した d0web.com.conf を以下のように編集します。

設定反映

独自ドメインでWebブラウザにアクセスしてWordpressサイトが表示されるかどうかチェックしましょう。

トップページ以外のリンク切れ修正

WordPress引越し後に記事ページが404になって表示されないことがあり、
その場合Apacheにてmod_rewriteが有効になっていない可能が高いので以下のコマンドで有効化します。

それでも直らない場合はWordpressの管理画面のパーマリンク設定で、何も変更を加えず保存をすると直る可能性があります。

Apacheのセキュリティ設定

ディレクトリ一覧表示を無効

Webサーバーのバージョン情報等を非表示

404ページ等の下部に表示されるサーバーの情報を非表示に設定。
/etc/apache2/conf-available/security.conf を以下のように編集。

未定義ホストやIPアドレスでのアクセス禁止

未定義ホスト名でのアクセスを拒否する設定を行います。
以下のファイルを 任意の名前.conf(000-undefhost.conf 等) で作成して /etc/apache2/sites-available に配置。

設定の有効化

注意点として、UbuntuのApacheのホスト設定ファイル(.conf)は名前順に設定を読むこむ仕様のようで、
今回のアクセス禁止設定は最初に読み込まれないと効果がないため、
000- などを先頭につけて必ず他の設定ファイルより早く読み込まれるようにする必要があります。

SSL化

ついでにサイトのSSL化もずっとしてなかったのでいい機会かと思いcertbotを使ってLet’s Encryptします。これも無料なのでありがたいですね。
以下のcertbot公式の手順通りにやっておしまいです。

Apacheのホスト設定も自動的に更新され、httpでアクセスした際のhttpsへのリダイレクト設定もやってくれます。

あと、certbotでのSSL化と同時にsystemdのタイマーに証明書更新コマンドが自動的に登録されるので期限切れの心配も無いですね。

タイマー確認

http, https両方でアクセスしてSSLが有効になっているかどうか確認しておきましょう。

トライアル期間終了後にA1インスタンスも終了

OCIコンソールで気になってたのは作成したA1インスタンスのところに Always Free の表記が無いこと。

引っ越し前に使っていたE2.1.Microインスタンスには Always Free 表記があるので本当に無料なのか気になるところ。

聞いた話によるとA1インスタンスはトライアル期間終了後に強制停止されるようなので、この仕様があるためわざと Always Free が表示されないようになっている…?

まだ1ヶ月弱トライアルが残ってるので終了次第以下と同様の対応を予定。
またリソース争奪戦が予想されますが…。

再度インスタンス取得時に Always Free 表記が出れば安心なのですが果たして。

おわい

祭りに乗っかって試しにA1インスタンスを取ってみてWordpressを引っ越して見ましたが見違えるほどのレスポンスになって満足しか無いです。ありがとうOracle。

2021.09.16現在当ブログはA1インスタンスで稼働してますが何も問題なさそうです。
Vultr $5コース -> E2.1.Micro -> A1.Flex と引っ越しをしまして、無料になりスペックもアップして言うこと無しです。

VultrのVPSは一旦停止しましたが、あっちはあっちで既に AlmaLinux と Rocky Linux と新しめなOSに対応するなどのおもしろ要素があるのでまた必要になれば使おうと思います。

かと言って只より高いものはないというぐらいなので、何かあった時を見据えて避難先の目処は立てておいたほうが良さそうです。

おわい

シェアする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントする