Amazon LightsailでLAMP環境を整えてWebページを公開する


はじめに

本日出版される本をまとめて表示するサイトをラズパイサーバーで公開するで自作Webページを自宅のラズパイサーバで公開していたのですが、あろうことか、データの更新中に落雷による停電が起きて…データが消えてしまいました…

こういうリスクがあるんだなと思いつつ、この機に勉強も兼ねてVPSでWebページを公開することにしました。

構築環境

VPSサービス色々ありますが、Amazon Lightsailを利用してみます。これといった理由はありません。
一番安い3.50 USD/月のプランを使用してみます。
スペック
Amazon Linux
512 MB メモリ
1 コアプロセッサ
20 GB SSD ディスク
1 TB 転送

OSは現在使用しているPCがUbuntuなので今回はRedHat系のディストリビューションを使ってみようと思い、Amazon Linuxを使用することにしました。

構築

SSH接続

インスタンスを作成したら、インスタンス名の横にあるコンソールアイコンをクリックするとブラウザのSSHコンソールが立ち上がります。そこでタイムゾーンの設定と日本語化を適宜行います。
なお、ブラウザのSSHコンソールだと日本語化しても謎の文字化けが起きるので、ローカルPCのターミナルでSSH接続出来るようようにします。
まず、アカウントページのSSHキータブから東京リージョンの秘密鍵をダウンロードします。

ダウンロードした秘密鍵(.pem形式)を適当なディレクトリ(ここではkey)を作成し、そこに移動します。

$ cd ~/
$ mkdir key
ダウンロードした秘密鍵を保存してある場所からkeyディレクトリに移動
mv ***.pem key
アクセス権限を変更
chmod 400 ~/key/***.pem

以下のコマンドで接続

sudo ssh -i key/***.pem ユーザー名@パブリックIPまたはDNS

余談ですが、Termuxアプリを使えば同じような手順でAndroidスマホでもSSH接続が出来ます。

LAMP環境

LAMP環境の構築はチュートリアル: Amazon Linux AMI を使用して LAMP ウェブサーバーをインストールするを参考にしました。

$ sudo yum update 
必要なソフトウェアパッケージをインストール
$sudo yum install  httpd24 php72 mysql57-server php72-mysqlnd
apache起動
$sudo service httpd start
システムがブートするたびにapacheが起動するように設定
$sudo chkconfig httpd on

/var/www/html/内に適当なphpファイル(ここではphpinfo.php)を作り、<?php phpinfo(); ?>を書き込む

LAMP環境が構築できたか試してみる
http://パブリックIPまたはDNS/phpinfo.php
PHPの情報ページが表示されたら、構築完了。

mysqlも設定しちゃいます。

mysqlを起動
$sudo service mysqld start
rootのパスワード初期設定
$sudo mysql_secure_installation

設定したパスワードポリシーによっては複雑なパスワードを作る必要があります。
パスワードポリシーをMEDIUMやSTRONGに設定したのも関わらず、数字のみのパスワードを設定しようとすると
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
というエラーが出ます。
もし、あとからパスワードポリシーを変更したくなったときの方法はこちらが分かりやすいです。「Mysql 5.7* パスワードをPolicyに合わせるとめんどくさい件について

mysqlを管理・編集するなら、やはりphpmyadminは外せないので、phpmyadminも入れます。

依存ファイルをインストール
$sudo yum install php72-mbstring.x86_64 
apache再起動
$sudo service httpd restart
apacheのドキュメントルートに移動
$cd /var/www/html
phpmyadminパッケージをダウンロード
$sudo wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
パッケージを展開
$sudo mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1
ダウンロードしたファイルを削除
$sudo rm phpMyAdmin-latest-all-languages.tar.gz
mysqlを起動
$sudo service mysqld start

http://パブリックIPまたはDNS/phpMyAdminでphpmyadminにアクセスしてみる
phpmyadminのログインページが表示されたら完了。

あとは、適宜apacheなどの設定をしておく。

DNS

DNSの設定をしておきます。
ホーム画面から「ネットワーキング」タブ→DNSゾーンの作成
登録済みのドメインの入力に追加したいドメインを入力して、DNSゾーンの作成をクリック


DNSレコードを押して、レコード作成します。
Aのレコードでサブドメインに@を入れ@.mono-today-book.workとし、解決先(?)に静的IPアドレスを設定し、追加します。
そして、お名前ドットコムのネームサーバーの設定で生成されたネームサーバーを登録。
これでhttp://mono-today-book.work/にアクセスしてapacheのページが表示されたら成功。

あとは、本日出版される本をまとめて表示するサイトをラズパイサーバーで公開するで作ったphpファイルをapacheのルートディレクトリに持ってきて移行完了。

さいごに

突然ラズパイがお亡くなりになったので、今まで集積してきた書籍データがなくなってしまったのが痛い。
一応、先週バックアップしてたので復元しましたが5日分の書籍データが欠ける結果に…
これを機にもっと頻繁にバックアップをするようにします…

参考文献

チュートリアル:Amazon Linux AMIを使用してLAMPウェブサーバーをインストールする:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/install-LAMP.html
Mysql 5.7* パスワードをPolicyに合わせるとめんどくさい件について:https://qiita.com/keisukeYamagishi/items/d897e5c52fe9fd8d9273
今更ですが、Amazon Lightsail試してみました:https://medium.com/anti-pattern-engineering/%E4%BB%8A%E6%9B%B4%E3%81%A7%E3%81%99%E3%81%8C-amazon-lightsail%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F-7b2438d16bae