763

お名前.com + Amazon Lightsail + WordPressでブログを構築する6つの手順

この記事は約17分で読めます。




「安くてスペックが良いVPSサーバで、ブログを運営してみたい」

そんな方に向けて本記事では、Amazon Web Services(以下、AWS)が提供しているサービス「Amazon Lightsail」を使って、WordPressをインストールし、お名前.comで取得したドメインと紐づけて、LetsencryptでSSL証明書を発行・自動更新するまでを画像付でご紹介いたします。



Amazon Lightsailとは

Amazon Lightsailとは、AWSが提供するVPS(Virtual Private Server:仮想プライベートサーバー)です。

VPSをもっと知りたい方は、ネコでもわかるVPS講座がわかりやすく記されているので、そちらを一読してください。

参考
ネコでもわかる!さくらのVPS講座 〜第一回:VPSてなんだろう?〜

Lightsailのメリット

  1. 従量課金制のクラウドサーバではなく、$3.5〜の月額固定サーバ(初月無料)なので予算が立てやすい
  2. 数クリックでWordPressが立ち上がるので、知識がない初心者にも簡単に利用できる
  3. スナップショットでサーバの複製やスペックのアップグレードができる(IPそのまま)
  4. DNSサーバー機能がある
  5. コンソールを使ってブラウザからSSH接続(ターミナルも可)

Lightsailのデメリット

  1. 月額制なのでサーバを停止しても料金を支払わないといけない
  2. 転送量を超えたら課金される(めったにない)
  3. 日本国内のVPSではCentOSが主流の中、あまり馴染みのないUbuntuがメイン

使う用途

  1. 小規模なサイト・WordPressを使った個人ブログの運営
  2. 最安プランは利用開始月が無料なので、開発・実験環境用などに活用

システム情報

OS: Ubuntu 16.04.6 
PHP: 7.2.17
Apache: 2.4.18
MySQL: 8.0.16

1. インスタンスの作成

インスタンスの作成

Linnux/Unix WordPress

SSHキーペアの変更

ダウンロード

LightsailDefau....pem

.5 WordPress-512MB-Tokyo-1

インスタンスの作成

  1. ログインしたらインスタンスがない状態なので、インスタンスを作成
  2. Linux/Unix、WordPressを選択
  3. SSHキーペアの変更
  4. ダウンロード
  5. ダウンロードされた.pemを確認
  6. $3.5を選択して、インスタンス名をつける
  7. インスタンスの作成

2. 静的IPアドレスの作成

静的IPアドレスを作成

インスタンスを選択

WordPress-512MB-Tokyo-1

WordPress-512MB-Tokyo-1 StaticIp-Tokyo-1 作成

bitnami

Hello World!

  1. ネットワークの静的IPの作成
  2. インスタンスを選択します
  3. WordPress-512MB-Tokyo-1
  4. 静的IPの識別を記入
  5. 作成
  6. 静的パブリックIPアドレスの確認
  7. ユーザー名とパブリックIPをメモる
  8. IPにアクセスしてみると、WordPressの初期画面が立ち上がる

3. SSHで接続

$ mv Downloads/LightsailDefaultKey-ap-northeast-1.pem ~/.ssh/
$ cd ~/.ssh/
$ chmod 400 LightsailDefaultKey-ap-northeast-1.pem
  1. Macの隠しフォルダ.ssh/に、Lightsailでダウンロードした秘密鍵を設置
  2. .sshフォルダに移動
  3. アクセス権(パーミッション)を変更
$ .ssh -i LightsailDefaultKey-ap-northeast-1.pem bitnami@xx.xxx.xxx.xxx

iオプションで秘密鍵のパス、ssh ユーザ名@IPを指定します。

ユーザー名は初期設定のbitnami、xx.xxx.xxx.xxx…静的IPアドレスの生成された数値です。

The authenticity of host 'xx.xxx.xxx.xxx (xx.xxx.xxx.xxx)' can't be established.
ECDSA key fingerprint is hogehoge.
Are you sure you want to continue connecting (yes/no)?

の問いに対して、yesと打ち込んでEnterを押すと、

Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-1081-aws x86_64)
*** System restart required ***
       ___ _ _                   _
      | _ |_) |_ _ _  __ _ _ __ (_)
      | _ \ |  _| ' \/ _` | '  \| |
      |___/_|\__|_|_|\__,_|_|_|_|_|

  *** Welcome to the Bitnami WordPress 5.1.1-2 ***
  *** Documentation:  https://docs.bitnami.com/aws/apps/wordpress/ ***
  ***                 https://docs.bitnami.com/aws/ ***
  *** Bitnami Forums: https://community.bitnami.com/ ***
To run a command as administrator (user "root"), use "sudo ".
See "man sudo_root" for details.

bitnami@ip-xxx-xx-x-xxx:~$

サーバに接続ができました。

最低限の設定

WordPressへログインするための、ユーザー名とパスワードを確認します。

bitnami アイコン

IPにアクセスして、右下のbitnamiのアイコンをクリックすると、

Username: user Username: bitnami

ユーザー名が表示されます。

  1. Access data for WordPressがWordPressへログインするためのユーザー名
  2. System Access DataがSSHで接続するためのユーザー名

です。

ログインパスワードは、SSH接続した状態で下記のコマンドを打つと

$ cat bitnami_application_password
cInEQs3GIxct

表示されます。

$ sudo /opt/bitnami/apps/wordpress/bnconfig --disable_banner 1

画面右下のbitnamiのロゴを削除のコマンドです。

Hello World!

最低限の情報を調べておく

システム情報

$ uname -a
Linux ip-xxx-xx-xx-xxx 4.4.0-1081-aws #91-Ubuntu SMP Tue Apr 16 08:21:03 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

OS

$ cat /etc/issue
Ubuntu 16.04.6 LTS \n \l

ディスク容量

$ df -h

rootの設定

$ vi /etc/ssh/sshd_config
PermitRootLogin prohibit-password

bashのバージョン

$ bash --version
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)

gitのバージョン

git --version
git version 2.7.4

phpのバージョン

$ php -v
PHP 7.2.17

Apacheのバージョン

$ apache2 -v
The program 'apache2' is currently not installed. You can install it by typing:

インストールされていないので後述します。

MySQLのバージョン

$ mysql --version
Ver 8.0.16 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)

Nginxのバージョン

$ nginx -v
The program 'nginx' can be found in the following packages:

調べた情報はどこかにメモを残しておくことで、後々バージョンを確認しなくても済むので便利です。

アップデート・インストール

まずは、OSを最新のUbuntuにアップデートしておきます。

$ sudo apt update
Hit:1 ...
Get:2 ...
Fetched 3,865 kB in 3s (1,195 kB/s)  
Building dependency tree       
Reading state information... Done
11 packages can be upgraded    
... Done

WP-CLIのインストール

$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
$ chmod +x wp-cli.phar
$ sudo mv wp-cli.phar /usr/local/bin/wp
$ wp --version
WP-CLI 2.2.0

Apacheをインストール

$ sudo apt-get install apache2
...
Processing triggers for ufw (0.35-0ubuntu2) ...
$ apache2 -v 
Server version: Apache/2.4.18

パスを通す

$ vi ~/.bash_profile
export PATH="/opt/bitnami/php/bin:$PATH"
export PATH="/opt/bitnami/mysql/bin:$PATH"
export PATH="/opt/bitnami/apps/wordpress/bin:$PATH"

Apacheの再起動

$ sudo  /opt/bitnami/ctlscript.sh restart apache

4. WordPress側の設定

WordPressログイン画面

WordPressログイン後

Updates

Update Plugins

  1. WordPressにユーザー名とパスワードを入力してログイン
  2. ログイン後の画面
  3. Updates
  4. Select Allで全プラグインを選択してUpdate Plugins

更新されていないプラグインが入っていたため、セキュリティ対策としてアップデートを実施。

WordPressテーマもアップデートしておいたほうがよいですが、使わないテーマは削除しても問題ございません。プラグインも同様です。

Setting General

日本語 UTC+9

Save Changes

設定を保存

  1. Setting→General
  2. WPサイトアドレスとサイトURLを確認して、日本語とUTC+9に変更
  3. Save Changes
  4. 日付フォーマットを変更して変更を保存

これで日本語で表示されるようになります。

5. レコードを設定

Lightsailインスタンスとお名前.comと紐づける

ホーム

ネットワーク

DNSゾーンの作成

yuichi.co

キーのみのタグの追加 キーと値のタグを作成 DNSゾーンの作成

  1. ホーム
  2. ネットワーク
  3. DNSゾーンの作成
  4. 登録済みドメインの入力にお名前.comで取得したドメインを入力
  5. DNSゾーンの作成(キーのタグと値はご自由に)

Lightsailで発行された静的IPを、お名前.comのAレコードに紐づけます。

お名前.comでドメイン取得・変更その他設定まで

bitnamiの仕様では、WPにログインして、WordPressアドレス(URL)とサイトアドレス(URL)が変更できなくなっています。

なので、ターミナルからSSHで接続して、wp-config.phpを開きます。

$ vi /opt/bitnami/apps/wordpress/htdocs/wp-config.php
define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/');
define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/');

98行目〜99行目に記述されている” ‘ . $_SERVER[‘HTTP_HOST’] . ‘ “部分を取得した独自ドメインに置き換えます。

define('WP_SITEURL', 'http://yuichi.co/');
define('WP_HOME', 'http://yuichi.co/');

更新して再度IPに接続して、WPにログインしてみると、

http://yuichi.co

変更ができました。

6. SSL証明書を取得

Letsencryptをgitでcloneして、SSL証明書を取得

$ cd /tmp/
$ git clone https://github.com/letsencrypt/letsencrypt
Cloning into 'letsencrypt'...
...
Checking connectivity... done.
$ cd letsencrypt
$ ./letsencrypt-auto
...
Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): Eメールアドレスを記述してEnter
...
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
(A)gree/(C)ancel: A
...
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
(Y)es/(N)o: N
...
No names were found in your configuration files. Please enter in your domain
name(s) (comma and/or space separated)  (Enter 'c' to cancel): yuichi.co
...
Error
...
Already use...

エラーが出力されました。既にSSL証明書を取得しているとのこと。

確かに、以前借りていたサーバでLetsencryptでSSL証明書を取っていた記憶が。登録が済んでいるので、certonlyコマンドで取得します。

$ ./letsencrypt-auto certonly --webroot -w /opt/bitnami/apps/wordpress/htdocs/ -d yuichi.co
...
IMPORTANT NOTES:
 - Congratulations!
...
$ sudo cp /etc/letsencrypt/live/yuichi.co/fullchain.pem /opt/bitnami/apache2/conf/server.crt
$ sudo cp /etc/letsencrypt/live/yuichi.co/privkey.pem /opt/bitnami/apache2/conf/server.key
$ sudo /opt/bitnami/ctlscript.sh restart apache

リダイレクトをします。

$ vi /opt/bitnami/apps/wordpress/conf/httpd-prefix.conf
RewriteCond "%{HTTP_HOST}" ^ec2-([0-9]{1,3})-([0-9]{1,3})-([0-9]{1,3})-([0-9]{1,3})\..*\.amazonaws.com(:[0-9]*)?$
RewriteRule "^/?(.*)" "%{REQUEST_SCHEME}://%1.%2.%3.%4%5/$1" [L,R=302,NE]

RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://yuichi.co/$1 [R,L]

RewriteCondとRewriteRuleを変更します。

$ vi /opt/bitnami/apps/wordpress/htdocs/wp-config.php
define('WP_SITEURL', 'https://yuichi.co/');
define('WP_HOME', 'https://yuichi.co/');

WordPressアドレス(URL)とサイトアドレス(URL)の変更。

DNSサーバで紐づかれたドメインにアクセスしてみましょう。

https://yuichi.co

成功です。

SSL証明書の自動更新

root作業で新規ファイル(renew-certificate.sh)を作成

$ sudo su -
# vi /etc/letsencrypt/renew-certificate.sh

#!/bin/bash
sudo /opt/bitnami/ctlscript.sh stop apache
sudo /usr/local/certbot/certbot-auto --email="yuichisato0120@gmail.com" --domains="yuichi.co" renew
sudo cp /etc/letsencrypt/live/yuichi.co/fullchain.pem /opt/bitnami/apache2/conf/server.crt
sudo cp /etc/letsencrypt/live/yuichi.co/privkey.pem /opt/bitnami/apache2/conf/server.key
sudo /opt/bitnami/ctlscript.sh start apache

cronの編集

$ sudo crontab -e
Choose 1-4 [2]: 3 #vi を選択
...
0 0 1 * * /etc/letsencrypt/renew-certificate.sh 2> /dev/null

viを選択できなくて、自動でnanoが出る場合

$ sudo select-editor
Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/vim.basic
  4. /usr/bin/vim.tiny

Choose 1-4 [2]: 3

viで打てるようになります。

iptablesの設定

追加

3000 保存

Lightsailのネットワークから、ポート番号3000(22、80、443以外)を開放してリダイレクトを設定。

$ sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000

画像をS3 + CloudFront + WP Offlaod Media Liteで配信するとなお良し

ウサギが走っているイラスト

画像を外部サイトのAWS S3へ避難させて、CloudFront経由で配信させる方法です。ディスク容量の削減や画像ファイルの読み込み高速化が見込めます。

AWS S3 + CloudFront + WP OffloadでWP画像を高速配信する4つの手順

おまけ

Sppedtestをインストールして、インターネットの速度を計測してみます。

$ sudo apt install speedtest-cli
... Done

Lightsailのネット速度を計測。

$ speedtest-cli
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Amazon.com (xx.xxx.xxx.xxx)...
Selecting best server based on latency...
Hosted by OPEN Project (via 20G SINET) (Tokyo) [6.34 km]: 4.255 ms
Testing download speed...
Download: 468.44 Mbit/s
Testing upload speed...
Upload: 250.79 Mbit/s

468Mbpsは速すぎてビックリした数値です。ちなみに、Conoha VPSのスピードはというと、

$ speedtest-cli
...
Testing download speed...
Download: 129.56 Mbit/s
Testing upload speed...
Upload: 130.12 Mbit/s

129Mbpsで、約3.6倍の差があります。たぶんさくらVPSも同じくらいでしょう。

関連記事
Amazon Lightsailで構築したWordPressのWP Mail SMTP設定手順

AWS
Amazon Lightsail

参考
Lightsailで常時SSLのWordPress
WordPressをLightsailに移行した(メール以外)
AWSのLightsailというVPSが安すぎる

コメント

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