【初心者向け】Oracle Cloudを初めてみた インスタンス作成〜WordPress環境構築まで

初めまして、こんにちは。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の環境構築を行っておりますので、厳密な設定方法は述べておりません。本番環境向けに構築する際は 公式リファレンスをみるなどしてきちんと設定しましょう。

network
ネットワーク図


Free Tierアカウントの作成

テストのためOracle Cloud Free Tierのアカウントを作成して構築しました。 こちらで登録をして、無償サービスと$300分のサービスが30日間使えます。

www.oracle.com

2.コンパートメントの作成

コンパートメントを作成しておきます。 左のメニュータブからアイデンティティ>コンパートメント>コンパートメントの作成から任意の名前のコンパートメントを作成しておきます。

compartment
コンパートメント作成


3.VCNの作成

こちらのチュートリアルにしたがってVCNを作成します。

community.oracle.com

左のメニュータブからネットワーク>仮想クラウド・ネットワーキングを選択します。

「VCNを作成」を選択し、名前を入力します。 CIDRブロックは10.0.0.0/16に設定してあります。

make VCN
make VCN


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

security rule
ルールの削除


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

nsg config
nsg設定


WEBサーバーは

  • 設定用のssh通信
  • インスタンス同士の通信
  • pingの疎通
  • httpのアクセス

をできるようにしたいので、 イングレス、エグレスを以下のように設定していきます。

ws nsg
ws nsg


DBサーバーは、

  • 設定用のssh通信
  • インスタンス同士の通信
  • pingの疎通

をできるようにしたいので、 イングレス、エグレスを以下のように設定していきます。

db nsg
db nsg



4.WEBサーバー用インスタンス作成

インスタンス作成

こちらのチュートリアルを参考に、WordPressのサービスを格納するインスタンスを作成します。 今回は WEBサーバーとDBサーバーどちらもAlways Freeのインスタンスを利用しました。

community.oracle.com


ネットワーク・セキュリティー・グループは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

apacheのテストページ
Apache2 Test Page



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の初期設定画面が表示されます。

wordpress
WordPress 初期画面


5.DBサーバー用インスタンス

インスタンス作成

続いて、DB用のインスタンスを作成します。 先ほどと同じ手順で、DB用のインスタンスを作成します。

ネットワーク・セキュリティー・グループはDB用に設定したものを適用します。

db instance
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の設定画面が始まります。

init config
WordPressの初期設定


ここまできて何とDB接続エラーが出てしまい、いろいろ調べたところLinuxのセキュリティ制御モジュールであるSE Linuxの設定だとわかりました。

以下をWEBサーバーのインスタンスで実行して設定を変更します。

sudo setsebool -P httpd_can_network_connect_db 1

するとWordPress設定画面が出て、設定したユーザ情報を入力すると、、、

表示できました!

wp success
WordPress 初期画面

他にも実際に運用するにあたっては設定することが他にもあるとは思いますが、今回Oracle Cloudの学習としては以上とします。


7.やってみて

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