wordpressをGoogle Compute Engineに移設して実質無料で運用する手順

投稿日: カテゴリー: Blog(ブログ), Programming(プログラミング)

どうもこんにちは、SenKuSya代表の原田です。

今回は技術ブログです。僕は技術ブログは書かない、という謎のポリシーを打ち立てていたのですが、ふと、

(エンジニアなのに技術ブログを全くもって書いていないのはどうなんだ?
自分がやったことはどんどんアウトプットしていく姿勢はどうしたんだ?
ビビってんのか? いや、そんなわけじゃないけども、、
よし、、、、、、書くか!)

という感じになったので、技術ブログをたまに書くことにしました。

このホームページは今まで、さくらのドメイン + さくらのレンタルサーバー という構成で動かしていたのですが、これがいかんせん遅い。遅すぎる。(月額500円という破格の安さなので、さくらレンタルサーバーは何も悪くないです) 遅すぎていつも読書しながら作業していたんですが、設定をいじる気力も失せ、投稿する気力も失せ、これじゃいかんと思って、いま勢いのあるGoogle Cloud Platform(GCP)へ移設することにしました。また、GCPは現在1年間$300まで無料になっていますので、下記構成なら実質1年間無料で運用できます。それでは、移行作業を以下にまとめましたので、是非参考にしてください。

事前準備

今回はGCPの詳しい手順は割愛しますが、下記の設定でインスタンスを作成すれば大丈夫です。
コストを下げる方針で設定しているので、マシンタイプやディスクサイズは用途に合わせて変更してください。

  1. Google Cloud Platformにてアカウント作成
  2. Google Compute Engineにてインスタンス作成
    • ゾーン : asia-northeast1
    • マシンタイプ : micro(メモリ 0.6GB)(想定PV数に合わせて変更してください)
    • ブートディスク : CentOS 7
    • ブートディスクの種類 : 標準の永続ディスク,10GB
    • アクセス範囲 : すべての Cloud API に完全アクセス権を許可
    • ファイアウォール : HTTP,HTTPS両方許可
  3. さくらコントロールパネルからwordpressファイル配下をローカルにコピー
  4. MySQLのダンプを取得(プラグインでも可能)
  5. 

StaticなIPアドレスに変更

左のメニュー “ネットワーキング” -> “VPCネットワーク” -> “外部IPアドレス” から先ほどのインスタンスのIPアドレス選び、”エフェメラル”となっているタイプを”静的”に変更するだけです。Nameは何でもOKです。

GCPコンソール画面での設定は以上です。次項目からは、実際にインスタンスにSSH接続して設定していきます。
なお設定は全てrootユーザーで行なってください。


$ sudo -s

yum設定

epelリポジトリ追加


# yum -y install epel-release
# vi /etc/yum.repos.d/epel.repo

[epel]部分の「enabled=1」を「enabled=0」に変更して、標準では見に行かないようにする

remiリポジトリの追加


# wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# rpm -Uvh remi-release-7.rpm

nginx設定

nginxインストール


# yum install –enablerepo=epel nginx

wordpressインストール用ディレクトリ権限付与


# chown -R nginx:nginx /var/www/html/

nginx conf設定


# cd /etc/nginx/conf.d
# vi server-wp.conf

server_nameのところはFQDNを書く


server {
 listen 80;
 server_name XXX.XXX.XXX.XXX;
 root /var/www/html;
 index index.php;

 charset utf-8;

 # wordpress パーマネントリンク設定
 try_files $uri $uri/ /index.php?q=$uri&$args;

 # wp-config.phpへのアクセス拒否設定
 location ~* /wp-config.php {
 deny all;
 }

 # php-fpm用設定
 location ~ \.php$ {
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_param PATH_INFO $fastcgi_script_name;
 include fastcgi_params;
 }
}

自動起動設定


# systemctl enable nginx

wordpress設定

インストール


# cd /var/www/html/
# wget https://ja.wordpress.org/latest-ja.tar.gz
# tar xzfv latest-ja.tar.gz
# chown -R nginx:nginx wordpress

※ wordpress移行の時はwordpressディレクトリを /var/www/html/ 配下にコピーすれば良い

wordpress プラグインやテーマをダウンロードできるようにする


# chmod -R 757 wp-content

PHP設定

PHP、php-fpmインストール


# yum install –enablerepo=epel,remi-php70 php php-mbstring php-pear php-fpm php-mcrypt php-mysql

php-fpmを起動させ、自動起動設定をONにする


# systemctl start php-fpm
# systemctl enable php-fpm

PHPバージョン確認


# php -v
PHP 7.0.21 (cli) (built: Jul  5 2017 14:33:41) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.21, Copyright (c) 1999-2017, by Zend Technologies

MySQL設定

インストール


# yum install http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
# yum info mysql-community-server
# yum -y install mysql-community-server
# mysqld –version
# systemctl start mysqld
# systemctl enable mysqld

rootパスワードの設定


mysql> update mysql.user set password='root用のパスワード' where user = 'root';
mysql> flush privileges;
mysql> exit;

wordpress用のユーザとDBを作成


mysql> mysql -u root -p
mysql> create database wp;
mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema |
| wp |
+——————–+
mysql> grant all privileges on wp.* to wp@localhost identified by 'ユーザのパスワード';

※ dumpリストアする場合は以下のコマンドを実行


mysql -u root -p wp < dumpfilename.sql

接続テスト


# mysql -u wp -p wp

wordpress wp-config.phpの設定


# cd /var/www/html/wordpress
# vi server-wp.conf

以下の項目を書き換える


/** WordPress のためのデータベース名 */
define('DB_NAME', 'データベース名');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'ユーザー名);

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'パスワード');

ファイルを直接ダウンロードできるようにする為に一番下に記述


define(‘FS_METHOD’,’direct’);

お疲れ様です

これで、nginxに設定したIPアドレスに接続することで、wordpressに入れるようになります。
wordpressを初めてインストールした場合は、http://XXX.XXX/wp-admin/setup-config.php にアクセスして設定を開始してください。

最後に

実はこれで終わりではないです。まだ独自ドメインで接続できないんですね。これに関しては、ちゃちゃっと終わるんですが、ここに書くとごちゃっとする気がしたので、別記事にまとめたいと思います。簡単にいうとDNSサーバー情報をいじるだけですね。

それでは、また。

今回の作業に関しておすすめの本


シェア・いいね! よろしくお願いします!