初めまして、こんにちは。t-tasakaです。 Cloudiiに関わらせていただくこととなり、自分もOracle Cloudについて学んでいこうと思います。 これからOracle Cloud初心者として、自分と同じくOracle Cloudを学習し使っていこうという方向けに記事を書いていければと思います。
よろしくお願いします!
目次
1.今回やること
Oracle Cloudを学習するにあたり、こちらのOracle Cloudのチュートリアルをやってみました。
チュートリアル : Oracle Cloud Infrastructure を使ってみよう | Oracle Community
今回はOracle Cloud上にインスタンスを建ててWordPressの環境を構築したいと思います。 図のようにWEBサーバー1台、DBサーバー1台で構築します。インスタンス同士のネットワーク設定を実感しながら学習できると思ったからです。
*ここではあくまで学習用としてWordPressの環境構築を行っておりますので、厳密な設定方法は述べておりません。本番環境向けに構築する際は 公式リファレンスをみるなどしてきちんと設定しましょう。

Free Tierアカウントの作成
テストのためOracle Cloud Free Tierのアカウントを作成して構築しました。 こちらで登録をして、無償サービスと$300分のサービスが30日間使えます。
2.コンパートメントの作成
コンパートメントを作成しておきます。 左のメニュータブからアイデンティティ>コンパートメント>コンパートメントの作成から任意の名前のコンパートメントを作成しておきます。

3.VCNの作成
こちらのチュートリアルにしたがってVCNを作成します。
左のメニュータブからネットワーク>仮想クラウド・ネットワーキングを選択します。
「VCNを作成」を選択し、名前を入力します。 CIDRブロックは10.0.0.0/16に設定してあります。

さらに、今回は作成するWEBサーバー、DBサーバー用のインスタンスそれぞれに別のセキュリティルールを適用するためネットワーク・セキュリティー・グループを使用します。 意図しないポート開放を防ぐため、セキュリティリストのルールは削除しておきます。 作成したVCNの画面の「リソース」の欄の「セキュリティ・リスト」を選択し、表示されているセキュリティリストを開き、ルールを削除します。

次にVCNの画面に戻り、「リソース」の欄の「ネットワーク・セキュリティー・グループ」を選択して、「ネットワーク・セキュリティー・グループの作成」ボタンを押します。 名前を入力し、次へと進むと、イングレス 、エグレスルールの入力ができます。

WEBサーバーは
- 設定用のssh通信
- インスタンス同士の通信
- pingの疎通
- httpのアクセス
をできるようにしたいので、 イングレス、エグレスを以下のように設定していきます。

DBサーバーは、
- 設定用のssh通信
- インスタンス同士の通信
- pingの疎通
をできるようにしたいので、 イングレス、エグレスを以下のように設定していきます。

4.WEBサーバー用インスタンス作成
インスタンス作成
こちらのチュートリアルを参考に、WordPressのサービスを格納するインスタンスを作成します。 今回は WEBサーバーとDBサーバーどちらもAlways Freeのインスタンスを利用しました。
ネットワーク・セキュリティー・グループはWEBサーバ用に設定したものを適用します。

チュートリアルで実施した接続方法でアクセスし、sshでの通信ができることを確認します。
ssh -i /~/.ssh/id_rsa opc@hostname
(hostnameの部分は接続するインスタンスのパブリックIPアドレスです。)
PHP、Apache、WordPressのインストール
rootのユーザーを取得し、yumリポジトリをアップデートしておきます。
yum update -y
PHP、Apacheをインストールしていきます。phpのインストール時にApacheもインストールされます。
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm yum-config-manager --enable remi-php74 yum -y install php php-cli php-mysqlnd php-zip php-gd \ php-mcrypt php-mbstring php-xml php-json
httpでアクセスできるようポート開放をし、Apacheを起動して、
http://"WEBサーバーのインスタンスのIPアドレス"
をブラウザで開くと、Apacheのテストページが表示されます。
firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --reload systemctl start httpd systemctl status httpd

WordPressもインストールします。WordPressをダウンロードして、展開し、/var/www/html/配下におきます。
wget https://ja.wordpress.org/latest-ja.tar.gz tar xzvf latest-ja.tar.gz cd wordpress sudo cp -r * /var/www/html/
WodPressのファイルに対してパーミッションを与えます。
cd /var/www/html sudo chmod -R 777
再度 WEBサーバーのインスタンスのパブリックIPを叩くと、WordPressの初期設定画面が表示されます。

5.DBサーバー用インスタンス
インスタンス作成
続いて、DB用のインスタンスを作成します。 先ほどと同じ手順で、DB用のインスタンスを作成します。
ネットワーク・セキュリティー・グループはDB用に設定したものを適用します。

MySQLインストール
ssh接続したら、 MySQLとMySQLserverをインストールします。CLIとしてMySQL Shellもインストールします。
yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm yum install mysql-community-server yum install mysql-shell
MySQLを起動して、MySQLの初期パスワードを確認し、rootユーザーのパスワード設定をします。(*********はrootユーザのパスワードです。)
systemctl start mysqld sudo grep password /var/log/mysqld.log mysqlsh --sql root@localhost set password='*********';
DB作成、ユーザー作成、権限設定をします。(********は今回作成したwpというユーザに設定したパスワードです。)
create database wordpress; create user wp identified by '********'; grant all privileges on wordpress.* to wp;
DB接続用のポート開放をします。
sudo firewall-cmd --zone=public --permanent --add-port=3306/tcp sudo firewall-cmd --reload
6.WordPress初期設定
MySQLの設定を終えたら、 WEBサーバーのインスタンスのパブリックIPを叩き、WordPressの設定画面を出します。
設定画面で、データベース名、ユーザ名、パスワード、ホスト名(入力するのはDBインスタンスのプライベートIPアドレスです)を入力し、送信すると、通常のWordPressの設定画面が始まります。

ここまできて何とDB接続エラーが出てしまい、いろいろ調べたところLinuxのセキュリティ制御モジュールであるSE Linuxの設定だとわかりました。
以下をWEBサーバーのインスタンスで実行して設定を変更します。
sudo setsebool -P httpd_can_network_connect_db 1
するとWordPress設定画面が出て、設定したユーザ情報を入力すると、、、
表示できました!

他にも実際に運用するにあたっては設定することが他にもあるとは思いますが、今回Oracle Cloudの学習としては以上とします。
7.やってみて
チュートリアルで理解したつもりにはなっていましたが、実際に成果物を作ってみることで、より理解が深まりました。これからどんどんコンテンツを増やして参りたいと思いますので、今後ともどうぞよろしくお願いいたします!