Oracle Cloudを使って無料で簡単にWordPress環境を構築してみた

Oracle Cloud Infrastructure

こんにちは、今回はOracle Cloudを使い完全無料でWordPress環境を構築してみたいと思います。レンタルサーバーやHerokuのようなサービスを使わずともOracle Cloud Infrastructure(OCI)を使うことで無料で構築できます。

出来るだけ複雑な作業はせずに簡単に構築する方法をとります。構築の流れは以下の目次通りです。

Oracle Cloud InfrastructureでVMインスタンスを作成

まずはOracle Cloudのアカウントを作成し、ログインを行います。Oracleホームページ画面の今から始める、もしくはアカウントをすでに持っている方からクラウドにサインインします。本記事ではアカウント登録の流れは省きます。

本記事ではOCIのTokyoリージョンを使っていきます。*現在2020/04/20、東京リージョンでは可用性ドメイン内のシェイプ空きが少なく、VMインスタンスを作ることが困難です(たまたま空いた時を狙うしか無い)。そのためホームリージョンをTokyo以外に設定することをお勧めします。

ログインしたらコンソール画面からコンピュートVMインスタンスの作成から、インスタンス作成画面に行きます。

インスタンスに適当な名前をつけ、OSはOracle Linux7.7を選択します(デフォルトでOracle Linux7.7が選択されています)。シェイプはデフォルトのVM.Standard.E2.1Microを選択。Always Free対象と言うマークがついているのを確認してください。

後にSSH接続でアクセス、WordPressにHTTPアクセスを行うのでパブリックIPアドレスの割り当てにチェックを入れます(デフォルト)。

最後に、ログインで利用するパブリックキーをアップロードします。秘密鍵は保管しておきます。Macの場合はこちら等を参考に、Windowsの場合はこちらを参、またはPuttyを使用して鍵を作成できます。

作成をクリックし、インスタンスを作成します。インスタンスが起動したら、パブリックIPアドレスが表示されているのでメモに取っておきます。

以上でVMインスタンスの作成は完了です。

VMインスタンスにSSH接続

MacOSのターミナル、WindowsでBashやPuttyを利用してSSH接続を行います。接続方法はこちらの公式ドキュメントに書いてあります。

ssh opc@ip_address -i private_key

インスタンスのOSをOracle Linuxにしたので、ユーザー名はopcとなります。ip_addressは先ほどメモをとったパブリックIPアドレスになります。private_keyには秘密鍵へのパスを記述します(カレントディレクトリ内の.sshディレクトリに暗号鍵がある場合は省略が可能です)。これで先ほど作成したインスタンスにssh接続ができます。

[opc@vm名 ~]$ 

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

上記のような注意が出てきた場合は、”/etc/environment”に以下を追加します。ちなみにvimの保存の仕方は”esc :wq”です。

sudo vi /etc/environment

//ここをコピペ
LANG=en_US.utf-8
LC_ALL=en_US.utf-8

PHP、Apacheをインストール

次にPHP、Apacheをインストールしていきます。ここではコマンドを叩いてダウンロード、インストールを行います。Is this ok [y/d/N]: yと聞かれたら全て’y’と入力します。-yをつけることで省略することもできます。最後にhttpdを有効にし、再起動しておきます。

sudo yum -y install httpd

httpd -version
Server version: Apache/2.4.6 ()
Server built:   Apr  2 2020 05:50:15

sudo systemctl enable httpd
sudo systemctl restart httpd

次にPHPをインストールしていきます。EPILとRemi’s repositoryを使用してインストールします。それぞれリポジトリのrpmをインストールし、PHP、PHPのパッケージをインストールします。

sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

sudo yum-config-manager --enable remi-php74

sudo yum install php php-cli php-mysqlnd php-zip hp-gd php-mcrypt php-mbstring php-xml php-json

php -version
PHP 7.4.5 (cli) (built: Apr 14 2020 12:54:33) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

Apache、PHPのインストールが完了ました。

WordPressのインストール準備

var/www/へ移動し、日本語版ワードプレスをダウンロードして展開します。展開後に不要なファイルを削除し、展開したwordpressフォルダをhtmlに名前変更します。このhtmlディレクトリが公開ディレクトリになります。最後にhtmlディレクトリの権限をApacheに与えます。

cd /var/www/

sudo wget https://ja.wordpress.org/latest-ja.tar.gz

sudo tar zxvf latest-ja.tar.gz

sudo rm -rf html latest-ja.tar.gz

sudo mv wordpress html

sudo chown apache. -R html

これでwordpressのダウンロードや各種準備ができました。次に公開設定に移ります。

ポートの開放とOCIの設定

このままではパブリックIPアドレスをURL欄に入力しても、まだ通信ができていないのでアクセスできません。そこでインスタンス側のポートとOCI側のパブリックサブネット設定を行います。

sudo firewall-cmd --list-ports
//空白

まずはインスタンス側の設定を行います。firewallのポートリストを確認すると、何も表示されていません。ここにtcp80ポートを追加します。apacheの再起動も行います。

sudo firewall-cmd --permanent --add-port=80/tcp

sudo firewall-cmd --reload

sudo firewall-cmd --list-ports
80/tcp

sudo systemctl restart httpd

次にOCIの設定に移ります。OCIのコンソールから、作成したインスタンスを表示しサブネット:パブリックサブネットをクリックし、セキュリティリストを選択します。デフォルトだとDefault Security List for “各自network”となります。

イングレスルールの追加より以下のように設定し追加します。

以上で設定は完了となります。パブリックIPアドレスにアクセスしてみてください。

WordPressの画面が表示されると思います。表示されない場合は以下を試してみてください(apacheの再起動)。

sudo systemctl restart httpd

MySQLをインストール・設定

もう一踏ん張りです。

このまま”さぁ始めましょう”をクリックするとデータベース接続の画面になります。

WordPressではMySQLが推奨(というか必須?)なのでOracle CloudのVMインスタンスにMySQLをインストールします。

yumでMySQLをインストールしようとすると、MariaDBがインストールされてしまうので、まずMariaDBを削除します。

sudo yum -y remove mariadb-libs

次にMySQL:yumリポジトリからRed Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Packageを選択(ダウンロードをクリック)し、No thanks, just start my downloadのリンクをコピーします。

コピーしたリンクからwgetでMySQLをダウンロードし、MySQL・各種パッケージインストールを行います。

sudo wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

sudo yum -y install mysql80-community-release-el7-3.noarch.rpm

sudo yum -y install mysql-community-devel

sudo yum -y install mysql-community-server

インストールが完了したら、MySQLを起動・有効にします。

sudo systemctl start mysqld

sudo systemctl enable mysqld

次にMySQLの設定を行います。まずデフォルトパスワードを確認し、パスワードの変更を行います。

新しいパスワードはパスワードポリシーに沿わないとエラーになります。ある程度長く、数字英字、特殊文字(#など)、大文字小文字を含めてください。その後、何か聞かれたら基本yで構いません。

sudo grep password /var/log/mysqld.log

2020-04-20T04:25:05.170097Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: <パスワード表示>
2020-04-20T04:25:20.269843Z 8 [Warning] [MY-013360] [Server] Plugin sha256_password reported: ''sha256_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'

//パスワード変更
mysql_secure_installation --use-default

Securing the MySQL server deployment.

//先ほど確認したパスワード
Enter password for user root: 

The existing password for the user account root has expired. Please set a new password.

New password: 

Re-enter new password: 

変更が完了すると変更後のパスワードとrootユーザーでアクセスできます。

mysql -u root -p
Enter password: 

Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 13
Server version: 8.0.19 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> 

MySQLが使えるようになったので、WordPress用に新しいユーザーとデータベースを追加しましょう。新しいユーザーにはWordPress用のデータベースににアクセス権限を付与します。例としてここではデータベース名をwpdb、ユーザー名をopcdbとします。********には新しく設定するパスワードを記述してください。

最後にデータベースが作成されたか確認しています。

//database作成
mysql> create database wpdb;
Query OK, 1 row affected (0.00 sec)

//ユーザーを追加
mysql> create user 'opcdb'@'localhost' identified by '*********';
Query OK, 0 rows affected (0.01 sec)

//ユーザーに権限を付与
mysql> grant all on wpdb.* to 'opcdb'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wpdb               |
+--------------------+
5 rows in set (0.01 sec)

WordPressのインストール・ログイン

それでは改めてパブリックIPアドレスにアクセスします。さぁ、始めましょう!をクリックし、データベース接続画面に移ります。

データベース名は先ほど作成した”wpdb”、ユーザー名・パスワードも先ほど新しく作成した”opcdb”とパスワード、そしてデータベースのホスト名はlocalhostとし送信を押します。

以下の画面が出てきた場合は、wp-config.phpファイルの記述を表示されたテキストに書き換えてください。直接コマンド操作でも良いですし、FTPクライアントからファイルの転送でも良いです。

vi /var/www/html/wp-config.php
//表示される全てをコピーアンドペースト
<?php
~~~省略~~~
?>

wp-config.phpが無事に書き換えられたら、インストール実行を押します。するとWordPressのようこそ画面が表示され。各種項目を入力してWordPressのインストールを行います。

インストールが完了すると、下のような画像が表示されるのでログインしましょう。

ログインできました!管理画面が表示されています。この後は独自にドメインを取得し、ドメインサービスを利用してドメイン設定、SSL化等を行えば完了です!お疲れ様でした。

おわりに

今日はOracle Cloudを利用してWordPressを環境を構築することで無料でウェブサイトを作ることができました。Oracle CloudのAlways Freeは読んで字のごとく”いつまでも無料“ですから、今後費用がかかることもありません。

もちろんAlways Free枠を超えるような利用をする場合は料金が発生しますが、WordPressの運用では通常枠を超えることはないと思います。

*ちなみに当サイトはHerokuを利用しています。少し手間はかかりますがOracle Cloudの方が断然に良いです。Herokuの場合ストレージを外部クラウドストレージにする必要がありますし、プラグインもgit経由でインストールする必要があり、データベースはMySQLの場合5MBを超えると料金が発生してしまいます。

Oracle Cloudにすればよかった…OCIにそのうち引っ越すと思います。

実は、このブログを始める前に挑戦はしました。が…途中でつまずいてしまい、Herokuを使うことにしました。今思えばどこでつまずいたのだろう…

今日も最後までご覧いただきありがとうございました。

コメント

タイトルとURLをコピーしました