Amazon LightsailでLAMPサーバーを構築する

ども!

ちょいとPHPアプリを公開する環境が欲しくなったのでサクッとAmazon LightsailLAMPサーバーを建ててみようと思います。

ちなみにこのブログは、Amazon LightsailのWordPressサーバーを使って運用しています。

LAMPサーバーインスタンス作成

まずはLightsailのコンソールから「インスタンスの作成」を選びLAMPサーバーインスタンスを作成します。
リージョン、AZ、OS、アプリ、プランを選んで作成します。
今回は東京リージョンのゾーンCにLinuxでPHP7のLAMPインスタンスを一番安いプランで作成します。
作成してしばらくすると、インスタンスが起動します。
パブリックIPが割当てられているので、ブラウザでアクセスしてみます。
Bitnamiで用意されているトップページにアクセスできました。
ちゃんとインスタンスがインターネットに公開されています。

このままだとインスタンスを再起動するとIPが変わってしまうため、「静的IPの作成」で静的IPを割り当てておきます。
公開するなら取得したIPを自分の持っているドメインと紐づけておきましょう。
私はRoute 53でDNSに登録しました。

各種設定・動作確認

LinuxOSにターミナル接続します。
ブラウザ経由でもTera Termなどのターミナルアプリを使用してもOKです。

とりあえずパッケージは最新にしておきましょう。
$ sudo apt update
$ sudo apt upgrade

タイムゾーンの変更

デフォルトでは日本時間になっていないのでタイムゾーンを変更します。
$ date
Mon May  6 05:44:14 UTC 2019
$ sudo dpkg-reconfigure tzdata

Current default time zone: 'Asia/Tokyo'
Local time is now:      Mon May  6 14:46:49 JST 2019.
Universal Time is now:  Mon May  6 05:46:49 UTC 2019.

$ date
Mon May  6 14:46:55 JST 2019
表示される画面で方向キーで「Asia」を選んでEnter、続いて「Tokyo」を選んでEnterを押せばOKです。

PHPの動作確認

Apacheのドキュメントルートディレクトリはデフォルトだと/opt/bitnami/apache2/htdocsになっています。
ここにPHPファイルを置いて叩いてみます。
$ echo '<?php echo "Hello World"; ?>' > /opt/bitnami/apache2/htdocs/hello.php
ちゃんとPHPコードが実行されました!

SSLの証明書インストール

https対応も済ませておきましょう。

手順は以前書いた↓の投稿とほぼ一緒です。
# githubからLet's Encryptをクローン
git clone https://github.com/letsencrypt/letsencrypt

# 証明書のインストール
cd letsencrypt/
./letsencrypt-auto
./letsencrypt-auto certonly --webroot -w /opt/bitnami/apache2/htdocs/ -d danishi.net
./letsencrypt-auto certonly --webroot -w /opt/bitnami/apache2/htdocs/ -d www.apps.danishi.net

# インストール場所の確認
sudo ls -l /etc/letsencrypt/archive/
total 4
drwxr-xr-x 2 root root 4096 May  6 15:09 www.apps.danishi.net

# 証明書をApacheに配置
sudo cp /etc/letsencrypt/live/www.apps.danishi.net/fullchain.pem /opt/bitnami/ap
ache2/conf/server.crt
sudo cp /etc/letsencrypt/live/www.apps.danishi.net/privkey.pem /opt/bitnami/apac
he2/conf/server.key

# Apacheを再起動
sudo /opt/bitnami/ctlscript.sh restart apache
Lightsailのコンソールでhttpsの通信を閉じてしまえばセキュアなhttps通信のみを許可することができます。

MySQLの動作確認

MySQLの管理用Webアプリ「phpMyAdmin」がデフォルトで構成されているので、これでMySQLの動作を確認します。
デフォルトではローカルホスト以外のアクセスを遮断するので、自分の使うグローバルIPを通すよう設定しておきます。
vim /opt/bitnami/apps/phpmyadmin/conf/httpsd-app.conf

<IfVersion >= 2.3>
Require local
Require ip x.x.x.x ← 自分のプロバイダのグローバルIP(https://www.cman.jp/network/support/go_access.cgi)
</IfVersion>

# サービス再起動
sudo /opt/bitnami/ctlscript.sh restart
アクセスできました。

rootユーザーの初期パスワードは/home/bitnami/bitnami_application_passwordに書いてあるのでそれで初回ログインしましょう。

初回ログインの後パスワードは変更しておきましょう。
以上!

やっぱりLightsailは簡単でいいですね!
LAMPのデプロイ環境が整ったのでそのうち作ったアプリでも紹介します!

でわ!