OCI Cloud Free Tier をもぎ取れ その4

## 概要
OCI Cloud Free Tierを取得してみた。
ubuntuにWordPressのインストールする手順


## Free Tier: UbuntuインスタンスへのWordPressのインストール
このチュートリアルでは、Oracle Cloud Infrastructure Free Tierアカウントを使用してUbuntuインスタンスを設定します。
次に、Apache Webサーバー、PHP 8、MySQL、最後にWordPressをインストールします。
インストール後、インターネットから新しいWordPressインストールにアクセスします。
このチュートリアルでは、仮想ネットワーク、コンピュート・インスタンスを設定し、ホストをインターネットに接続するために必要なすべてのステップについて説明します。

主なタスクは:

開発作業用のコンパートメントを設定します。
Ubuntu Linuxインスタンスをインストールし、仮想クラウド・ネットワーク(VCN)に接続します。
ホストがインターネットに接続するために必要なOracle Cloud Infrastructure仮想クラウド・ネットワークおよび関連するネットワーク・サービスを設定します。
Ubuntu Linuxサーバーにアクセスするためのssh暗号化キーを設定します。
VCNのイングレス・ルールを構成します。
VMでApache、PHP 8、MySQLおよびWordPressを構成します。
インターネットからインスタンスに接続します。

開始する前に
このチュートリアルを正常に完了するには、次が必要です:
要件
Oracle Cloud Infrastructure Free Tierアカウント。Oracle Cloud Infrastructure Free Tier
sshサポートがインストールされているMacOS、LinuxまたはWindowsコンピュータ。

## 1. 開発用のコンパートメントの設定
開発用のコンパートメントを構成します。

コンパートメントの作成
このチュートリアルで作成するリソースのコンパートメントを作成します。

Oracle Cloud Infrastructureコンソールにサインインします。
ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「コンパートメント」をクリックします。
「コンパートメントの作成」をクリックします。
次の情報を入力します:
名前: <your-compartment-name
説明: Compartment for <your-description
親コンパートメント: <your-tenancy>(root)
「コンパートメントの作成」をクリックします。
参照: コンパートメントの作成

## 2. Ubuntu Linuxインスタンスのインストール
「VMインスタンスの作成」ワークフローを使用して、新しいコンピュート・インスタンスを作成します。

ワークフローでは、インスタンスのインストール時にいくつかのことが実行されます:

Ubuntu Linuxを実行しているコンピュート・インスタンスを作成およびインストールします。
Ubuntu Linuxインスタンスをインターネットに接続するために必要なサブネットおよびコンポーネントを含むVCNを作成します。
インスタンスへの接続に使用するsshキー・ペアを作成します。
インストール・ステップの確認
「VMインスタンスの作成」ワークフローを使用してインスタンスのインストールを開始するには、次のステップに従います:

 重要

示されているステップは、Free Tierアカウント用です。有料アカウントを使用している場合は、ここに示すステップとは異なる場合があります。
「Oracle Cloud」アイコンをクリックして、メイン・ランディング・ページに移動します。
「リソースの起動」までスクロールします。
「VMインスタンスの作成」ワークフローを選択します。
「コンピュート・インスタンスの作成」ページが表示されます。このページのセクションは次のとおりです
名前およびコンパートメント
配置
セキュリティ
イメージとシェイプ
ネットワーキング
SSHキーの追加
ブート・ボリューム
「名前」および「コンパートメント」を選択します。
初期オプション

名前: <name-for-the-instance
コンパートメントに作成: <your-compartment-name
名前の値を入力するか、システム指定のデフォルトを使用します。コンパートメントには、作成したコンパートメントを選択します。

「配置」の設定を確認します。
デフォルト値を使用します。可用性ドメインが割り当てられます。
データは次のようになります:

可用性ドメイン

可用性ドメイン: AD-1
容量タイプ: オンデマンド容量
フォルト・ドメイン: 最適なフォルト・ドメインの選択をOracleに任せます
 ノート

Free Tierの場合、可用性ドメインに「Always Free対象」オプションを使用します。
「セキュリティ」の設定を確認します。
デフォルト設定を使用します。
データは次のようになります:

セキュリティ

保護インスタンス:無効
機密コンピューティング:無効化
「イメージとシェイプ」の設定を確認します。オペレーティング・システム・イメージを変更します。
「編集」をクリックします。
「イメージの変更」をクリックします。
「Ubuntu」をクリックします。
「Canonical Ubuntu 22.04」またはそれ以降のバージョンを選択します。
「イメージの選択」をクリックします。
 ノート

次に示すのはAMD仮想マシンのサンプル・データです。実際の値は異なる場合があります。
イメージとシェイプ

イメージ: Canonical Ubuntu 22.04
イメージ・ビルド: <current-build-date
シェイプ: VM.Standard.E2.1.Micro
OCPU: 1
メモリー(GB): 1
ネットワーク帯域幅(Gbps): 0.48
 ノート

Free Tierの場合、「Always Free対象」シェイプ・オプションを使用します。
次のセクションに進みます。
「ネットワーキング」の設定を確認します。デフォルトを次のように変更します。
「編集」をクリックします。
プライマリ・ネットワーク: 「新規仮想クラウド・ネットワークの作成」を選択します。
新規仮想クラウド・ネットワーク名: 生成されたVCN名を使用するか、名前を指定します。
コンパートメントに作成: <your-compartment-name
サブネット: 「新規パブリック・サブネットの作成」を選択します。
新規サブネット名: 生成されたサブネット名を使用するか、名前を指定します。
コンパートメントに作成: <your-compartment-name>。
CIDRブロック: デフォルト値を使用します(10.0.0.0/24など)。
パブリックIPv4アドレス: デフォルト値の「パブリックIPv4アドレスの割当て」を使用します。
次のセクションに進みます。
「SSHキーの追加」の設定を確認します。ワークフローで提供されるデフォルト値を使用します。
「キー・ペアを自動で生成」オプションを選択します。
「秘密キーの保存」および「公開キーの保存」をクリックして、このコンピュート・インスタンスの秘密および公開SSHキーを保存します。
独自のSSHキーを使用する場合は、いずれかのオプションを選択して公開キーを指定します。

 ノート

秘密キーと公開キーのファイルは安全な場所に配置してください。コンピュート・インスタンスの作成後にキーを再度取得することはできません。
「ブート・ボリューム」の設定を確認します。
「カスタム・ブート・ボリューム・サイズを指定します」設定を選択解除します。

「転送中暗号化の使用」設定を選択します。

「自分が管理するキーでこのボリュームを暗号化」設定を選択解除します。

「作成」をクリックして、インスタンスを作成します。システムのプロビジョニングには数分かかる場合があります。
Ubuntu Linuxインスタンスが正常に作成されました。

## 3. インターネット・アクセスの有効化
「VMインスタンスの作成」ワークフローでは、VMのVCNが自動的に作成されます。ポート80でのインターネット接続を許可するイングレス・ルールをサブネットに追加します。

VCNのイングレス・ルールの作成
次のステップに従って、VCNのパブリック・サブネットを選択し、イングレス・ルールを追加します。

ナビゲーション・メニューを開いて「ネットワーキング」をクリックし、「仮想クラウド・ネットワーク」をクリックします。
コンピュート・インスタンスに作成したVCNを選択します。
新しいVCNが表示された状態で、<your-subnet-name>サブネット・リンクをクリックします。
パブリック・サブネット情報は、ページの下部にあるセキュリティ・リストとともに表示されます。VCNのデフォルト・セキュリティ・リストへのリンクが表示されます。

「デフォルト・セキュリティ・リスト」リンクをクリックします。
VCNのデフォルトのイングレス・ルールが表示されます。

「イングレス・ルールの追加」をクリックします。
「イングレス・ルールの追加」ダイアログが表示されます。

イングレス・ルールに次の情報を入力します。
イングレス・ルールを次のように入力します:

ステートレス:選択
ソース・タイプ: CIDR
ソースCIDR: 0.0.0.0/0
IPプロトコル: TCP
ソース・ポート範囲: (空白のまま)
宛先ポート範囲: 80
説明: HTTP接続の許可
「イングレス・ルールの追加」をクリックします。
これで、HTTP接続が許可されます。VCNはポート80でのHTTPトラフィック用に構成されています。
インスタンスをインターネットからポート80で使用できるようにするイングレス・ルールが正常に作成されました。

## 4. Apache、PHP 8、MySQLおよびWordPressのインストールおよび構成
次に、Ubuntu Linuxインスタンスで実行するApache WebサーバーとPHPをインストールおよび構成します。

- Ubuntuファイアウォールの構成

Ubuntuインスタンスに接続し、ファイアウォール設定を構成します。次のステップに従います:

Free Tierアカウントにサインインします。
ナビゲーション・メニューを開き、「コンピュート」をクリックします。「コンピュート」で、「インスタンス」をクリックします。
前のステップで作成したインスタンスへのリンクをクリックします。
「インスタンス・アクセス」セクションから、システムによって作成されたパブリックIPアドレスを書き留めます。このIPアドレスを使用してインスタンスに接続します。

ターミナル・ウィンドウを開きます。
パート1で作成したssh暗号化キーを格納したディレクトリに移動します。
次のSSHコマンドを使用してVMに接続します。
```
ssh -i <your-private-key-file> ubuntu@<your-public-ip-address>
```
VMの作成時に公開キーを特定したため、このコマンドでVMにログインします。sudoコマンドを発行して、サーバーをインストールおよび起動できるようになりました。

ファイアウォール設定を更新します。
次に、HTTPトラフィックを許可するように、iptables構成を更新します。iptablesを更新するには、次のコマンドを実行します。

```
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT

sudo netfilter-persistent save
```
コマンドにより、HTTPトラフィックを許可するルールが追加され、変更がiptables構成ファイルに保存されます。

- Apacheサーバーのインストール

Apacheサーバーをインストール します。
```
sudo apt update

sudo apt -y install apache2
```
次に、Apacheを起動します。
```
sudo systemctl restart apache2
```
これで、サーバーをテストできます。
curl localhostを使用して、コマンドラインからサーバーをテストできます。または、VMに割り当てられたパブリックIPアドレス(http://<your-public-ip-address)にブラウザを接続できます。


- PHPのインストール

次のコマンドを使用して、PHPをインストールしてから、いくつかの有用なモジュールをインストールします。
```
sudo apt -y install php

sudo apt -y install php-mysql php-curl php-gd php-zip
```
インストールを検証し、Apacheを再起動します。
```
php -v

sudo systemctl restart apache2
```
PHPテスト・ファイルをVMに追加します。
```
sudo vi /var/www/html/info.php
```
ファイルに次のテキストを入力し、ファイルを保存します:
```
<?php
phpinfo();
?>
```
http://<your-public-ip-address>/info.phpに接続します。
ブラウザには、次のようなVM上のPHP構成のリストが生成されます。

 ヒント

イメージは、オペレーティング・システムの更新により異なります。
PHP構成ページ
ApacheおよびPHPがOracle Cloud Infrastructureインスタンスに正常にインストールされました。

 ノート

テストの完了後、info.phpファイルを削除します。

- Apache HTMLディレクトリの構成

/var/www/htmlディレクトリからの読取りおよび書込みを行うように、Apacheサーバーを設定します。

/var/www/htmlディレクトリを編集できるように、ユーザー名をwww-dataグループに追加します。
```
sudo adduser $USER www-data
```
ここで、コンテンツ・ディレクトリの所有者を変更します。
```
sudo chown -R www-data:www-data /var/www/html
```
ファイルおよびディレクトリに対する権限を変更します。
```
sudo chmod -R g+rw /var/www/html
```
変更を有効にするには、マシンを再起動します。

MySQLサーバーおよびクライアントのインストールおよび構成

次に、WordPressで使用できるようにMySQLサーバーおよびクライアントをインストールして構成します。

 重要

Ubuntu MySQL設定に構成の変更が加えられたため、このチュートリアルでは、sudo mysql_secure_installationスクリプトの前後に追加のステップが加えられています。新しいステップは、mysql_secure_installationスクリプトが正常に完了するために必要です。

- MySQL Serverパッケージをインストールします。

```
sudo apt -y install mysql-server
```
このステップにはしばらく時間がかかることがあります。

MySQLにサインインします。
```
sudo mysql
```
パスワード認証を許可するようにMySQL rootユーザーを変更します。
```
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<your-password>';
```
ノート

このパスワードは一時的なものです。rootパスワードは、後のステップでリセットします。
MySQLを終了します。
```
mysql> exit
```
mysql_secure_installationスクリプトを使用してMySQLを保護します。
スクリプトを実行します。
```
sudo mysql_secure_installation
```
次の出力が生成されます:
```
Securing the MySQL server deployment.
設定した一時パスワードの入力を求められます。
Enter password for user root:
パスワードを入力します。

パスワード検証をオンにします:

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to set up VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No:    
                    
Yを選択します。
パスワード検証レベルを選択します。

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:                        
                    
rootパスワードを変更します。
Using existing password for root.
                                
Estimated strength of password: XX
Change the password for root ? ((Press y|Y for Yes, any other key for No) :                            
Yを選択します。
ルート・パスワードを設定します。

New password: 

Re-enter new password: 

Estimated strength of the password: 100 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :
                    
 ノート

このステップでは、前に設定した初期一時パスワードを置き換えます。
Yを選択します。
残りのセキュリティ・オプションを選択します。

Remove anonymous users? (Press y|Y for Yes, any other key for No) : 
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : 
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : 
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : 
Success.

All done! 
```

 ヒント

デフォルト値(すべてのオプションに対してY)を使用することをお薦めします。
新しいパスワードでMySQLにサインインします。
```
mysql -u root -p
```
MySQLの認証方式をauth_socketに戻します。
```
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;
```
ヒント

auth_socket認証方式では、MySQLパスワードではなくsudoを使用して認証できます。
MySQLを終了します。
```
mysql> exit
```
WordPress MySQL Databaseの設定
MySQLにサインインします。
```
sudo mysql
```
MySQLプロンプトが表示されます。

デフォルトのデータベースをリストします。
```
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)
```                    
MySQLのユーザーを作成します。
```
mysql> CREATE USER '<your-user-name>'@'localhost' IDENTIFIED BY '<your-password>';
Query OK, 0 rows affected (0.01 sec)
```
ユーザーを管理者にします。
```
mysql> GRANT ALL PRIVILEGES ON *.* TO '<your-user-name>'@'localhost';
Query OK, 0 rows affected (0.01 sec)
```                    
WordPressデータベースを作成します。
```
mysql> create database wpdb;
Query OK, 1 row affected (0.01 sec)
```                    
結果を確認します。
```
mysql>show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wpdb               |
+--------------------+
5 rows in set (0.00 sec)
```
キャッシュされたメモリーをクリアする権限をフラッシュします。
```
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye
```

- WordPressのインストールおよび構成

WordPressをダウンロードし、次のステップに従ってサーバーにインストールします。

ターミナル・ウィンドウを開き、tmpディレクトリを作成します。
https://wordpress.org/download/ からWordPress Linux zipをダウンロードして解凍します。
```
wget <url-for-download/filename>.tar.gz

tar xvfz <download-file-name>.tar.gz
```
このコマンドは、WordPressのPHPコードを含むwordpressディレクトリを作成します。

wordpressディレクトリの内容を/var/www/htmlディレクトリにコピーします。
```
cp -R /home/<your-username>/tmp/wordpress/* /var/www/html
```
wordpressディレクトリの内容が/var/www/htmlディレクトリにコピーされます。このコマンドはサンプルです。コマンドは、ディレクトリの名前によって異なる場合があります。

/var/www/htmlディレクトリに移動します。
```
cd /var/www/html
```
デフォルトのindex.htmlファイルの名前を変更します。
```
mv index.html index.html.bk
```
これで、ルート・ディレクトリにアクセスすると、デフォルトでindex.phpがロードされるようになりました。

wp-config-sample.phpファイルの名前を変更します。
```
mv wp-config-sample.php wp-config.php
```
MySQL設定の値を更新します。
```
vi wp-config.php
```
ブラウザおよび次のURLを開いて、インストール・スクリプトを実行します: http://<your-public-ip-address/wp-admin/install.php
 ノート

WordPressブログの管理者アカウントを作成します。インストール・ページから情報を確実に書き留めてください。この情報は、WordPressブログにサインインするために必要です。
http://<your-public-ip-addressで新しいブログを開きます
WordPressに必要なその他の構成を完了します。
OCIコンピュート・インスタンスにWordPressブログを設定しました。


以上。