AWS LightsailでWordpress環境を作ってローカル環境にあったWordpressをインポートしたときの覚書
まずAWS Lightsailについて。
AWSを自社も顧客も使っているので触る機会が増えているが、Lightsailのことは知らなかった。そのため、AWSに新しいコーポレートサイトを載せたいという依頼が会った時、EC2かECSにDockerで環境構築するかな? と考えていた。けれど、調べてみると、さくらインターネットなどの簡便なVPSと同じような、Wordpress環境を1分で構築できるサービスが実はAWSにもあると知った。
定額で、一番安いプランだと$3.5。 容量的には1T転送量、512MBメモリ、20Gストレージと静的なコーポレートサイトには十分な気がする。
短所としては、SSLを適用するのにロードバランサー利用(月額$18)が必要らしいこと。ただ、Let's Encryptを自分で適用できるようなので、これで回避する予定。また、スナップショットも便利そうだが、1Gあたり0.05円とかかかるらしい。ストレージ20Gだから、月額110円はかかるのではとのこと。 参考は、こちらの記事。
この辺りまで調べて、まずは使ってみるのが良さそうということで作業にかかる。 実際に作るのには本当に時間は掛からず、1分で終了。Elastic IPもボタン一つで設定完了。 このあたりやり方は、いろいろなところで書いてくれているので、省略。
FTP接続
注意点は、SFTPを選ぶことと、アクセスキーをダウンロードすることくらい。 アクセスキーは、LightsailのWordpressのトップページに、以下の記載あり。
クライアントを使用して接続する場合は、プライベートキーも必要です。
このインスタンスを デフォルト (ap-northeast-1) キーペアを使用するように設定しました。
デフォルトのプライベートキーは、アカウントページ からダウンロードできます。
ということでアカウントページからダウンロードして、アクセスキーでFTP接続も完了。
ssh接続
アクセスキーは、権限を400(自分しか読めない)とか600(自分しか読み書きできない)くらいにしておかないと、warningが出て、permission deniedで切られます。
ssh -i [アクセスキーのファイル名] [リモートユーザー]@[リモートサーバーのホスト名] -i は秘密鍵が.sshに置いてあることが前提。別なら別のパスを指定する必要がある。
fingerprintで初回接続時に確認が求められますので、yes。(enterだとだめw) これでssh接続も確認できました。
IP制限
ファイヤウォール機能があるので、デフォルトでは全体に開かれているHTTP/HTTPSにIPを加えて制限をかけることが簡単にできました。
basic認証
Wordpressだとhtaccessに記入するらしいのですが、かからないという噂を聞いて、Apacheのconfigにかけようとしてます。
bitnamiだとどこに書けばいいか、探し中。
その後、bitnamiのbasic authenticationのdocsを見たらかけられました! Password-protect access to an application with Apache
Apacheで用意してくれている、htpasswdコマンドでパスワードファイルを用意して、設定ファイルに書き込む形。
Apachの再起動スクリプトは以下。
sudo /opt/bitnami/ctlscript.sh restart apache
マニュアル通りのパスのconfファイルがなかったので、/opt/bitnami/apache2/conf/bitnami/bitnami.conf に含めましたが行けました。
大体confファイル系は、includeされて大元に加えられている感じなので、行けたのかなと思います。
Require all granted
と書いてあるところが、誰でも接続OKの記述ぽいので、ここをコメントアウトして、下記を記載します。
接続は、443ポート経由の様なので、443と書いてあるところだけ変えればうまく認証かかりましたが、ポート80のところの記載も念のため変えておくほうがいいのかも?
AuthType Basic AuthName MyAuthName AuthUserFile "/opt/bitnami/apache2/APPNAME_users" Require valid-user
特定のページへのauthenticationをかけることを別途検討してお試ししているのですが、こっちのサイト全体のBasic認証とかち合ってしまうのかうまくかかりません。
htpasswdファイルがあると、basic認証がそれを見に行ってしまうのかも。
ファイルをいったんどかしてみて、basic認証関連のことを一旦さらに戻してかけてみようと試してみてます。
これはまた別途追記。
SSL(Let’s Encryptで)
bnhelper-toolで簡単に登録できました。 同じツールで、bitnamiのロゴ(右下に表示される)を削除することができるので、これもやります。
ポイントとしては、ドメインの登録が必要なので、ドメインを先に登録しておいて、そのドメインについてSSLする形になるようだ。
証明書の更新も90日で自動でやってくれるって、すごいなぁ。
(sshで最初の画面に出てくる、###で囲まれた中にコマンドがある!)
メールの設定
SMTP WP Mail というのが一番よく出てくるプラグインなのですが、これではクライアントのメールでうまくテストメールが送られなかったので、別のプラグインを使用しました。
今後への注意点としては、クライアントのメールアドレスのSMTPサーバ経由でメールを送る必要があるので、SMTPサーバの情報(パスワード認証なのか、暗号化は? ポートは?など)を早めに確認しておく必要があるということです!
本番環境へのインポート
All in One Migrationというプラグインを使いました。
おそらくwp-content内をFTPとかで移動させて、リンクの貼り直しとかも、ツール使ってできるようでしたが、このプラグインが便利で確実だったのでこちらを使っています。
500Mb超えると、有料版にしないといけない。$69/lifetime とあったので、多分買い切り?
アップロード制限が、最初は50Mbとかなので、そこを変更しないとインポートができない。
これについては、下記にdocsあり。
Modify the PHP file upload limit
vim /opt/bitnami/php/etc/php.ini
して、
; Maximum size of POST data that PHP will accept. post_max_size = 40M ; Maximum allowed size for uploaded files. upload_max_filesize = 40M
となっているところを修正。
その後、apache/php/mysqlを全部再起動するスクリプトを打つ。 これ打たないと、ページを更新してもアップロードサイズに変更がない。 急いでいる時は、焦るので気をつけること。
sudo /opt/bitnami/ctlscript.sh restart
何か変えたときに、これを覚えておくと便利かも。
リリース時に、このツールでテスト環境から本番環境にアップロードしているのに、なんか変なエラーが出ることが何度かあった。 全く同じものをインポートしているのに?? テスト環境ではエラー出ていないのに?? 一度は、Wordpressのアップデートで直りました。
もう一度は、何かおかしいことはないはずなのに、本番環境の方のエラーが消えなかったので、もうLightsailもう一個立てて、インポートし直しました。 ネットワーク(静的IP)は、置いておいて、detach&attachができるので、それで問題はないはず。
アップロード制限を400MBと設定していて(php.iniで)、400MBちょっと400.9MBとか超えていたけど、アップロード制限で引っかからなかった代わりにエラーが出たとかないかな。
インスタンスを立てて、bnhelper-toolでロゴを消して、インポートして、ネットワークをアタッチし直す、それで以上のはず。 静的IPをアタッチし直すと、確かhost接続で次sshする時に怒られるので、hostsの該当箇所を消して、再度fingerprintを登録し直す必要がある。
その他、Wordpress環境構築関連まとめ
MySQLへの接続
接続は、こちら。