lightSailでインスタンスを生成してApacheデフォルトページ表示まで
さくらVPS、このはVPS、Indigo等複数のVPSサービスがあるが、それぞれに対して初期設定が若干ずつ異なっている。LightSailの特徴としては
- 静的public IPアドレスが最初から割り当てられていない
- Amazon独自のファイアウォールがコンソール上で設定でき、初期の段階ではSSHとHTTPポートしか開けられていない
- SELinuxが初期状態で有効化されている
- 初期のタイムゾーン設定がUTC
という点が注意すべき点である。それでは作業を始める。
静的IPのアタッチ
ネットワーキングタブの静的IPの作成ボタンから作成する。
ファイアウォールの開放
良く使うポートは開放しておく。HTTPSポートの開放は必ず行おう。私の場合は開発で3000ポートと5000ポートは良く使うので空けておいている。ここは人により異なる。最初分からなければ状況に応じて設定すれば良い。
ブラウザコンソールでユーザ作成
AWSではそこそこ使い勝手の良いブラウザコンソールでSSH接続することができる。これを使って初期ユーザを作成しよう。
$ sudo su
# useradd yamanaka
# passwd yamanaka
# visudo
visudoでRoot権限を作成したユーザに対して与える。
## Allow root to run any commands anywhere
root ALL=(ALL)ALL
+ yamanaka ALL=(ALL) ALL
ブラウザコンソールでは取り敢えずここまでおこなう。全てブラウザコンソールで行ってもよいが、文字がそれほど見やすくない、接続が切れやすいなどの欠点もあるので、Windowsの好きなターミナルでSSH接続を行う。
SSH環境整備
AWSではPrivateKeyをインストールして使うことができるが、接続ユーザがcentosに決まってしまっており、各人がそれぞれのPrivateKeyをもってSSH接続することができない。
そこでPutty Key Generatorを使用してSSHキーペアを作成して、設定を自分で全て行う必要がある。
サーバ側設定
ユーザホームディレクトリまで移動し
$ mkdir .ssh
$ chmod 700 .ssh
$ touch authorized_keys
$ chmod 600 authorized_keys
とする。権限は自分以外の人がkeyを読み込むことができなくするためのセキュリティ設定であり、この設定がない場合はPermission Deniedエラーが発生する。
Putty Key Generatorで作成した公開鍵のテキストをauthorized_keysに張り付けておく。
クライアント側設定
Puttyで接続しないならばopenssh形式でカギをExportする。
ここではaws.ppk
として保存しておく。
次に~/.ssh
に移動して、config
ファイルに下記を記述
Host aws
HostName xxx.xxx.xxx.xxx
User yamanaka
IdentityFile ~/.ssh/aws.ppk
設定をするとあとは
$ ssh aws
とコマンドを打つだけでSSH接続が完了する。
Apache設定
SSHでターミナルに入り、下記コマンドで設定していく
$ sudo yum -y install httpd
$ sudo systemctl enable httpd //再起動時にApacheが起動するようにしておく
$ sudo systemctl start httpd
これで静的IPにアクセスするとApacheにアクセスできる。
AWSではSELinuxがデフォルトで有効になっている。例えばUserDirectoryにアクセスする時には、SELinuxが有効化されているとForbiddenとなりアクセスすることができない。
設定時にハマる可能性が大きいのでSELinuxを無効化するを参照して無効化しておこう。
Timezone設定
グローバルな会社だからか、Timezone設定が標準時となっている。
$ date
Sun Aug 9 16:21:35 UTC 2020
rootユーザになりTimezoneを東京に合わせる
# timedatectl set-timezone Asia/Tokyo
# date
Mon Aug 10 01:23:57 JST 2020
これでLinuxの標準時が日本基準となる。最初気づかなかったが時刻を扱うプログラムを動かしたときに偶然気づいた。
cronを回していたが、こちらもUTCとなっていて、Timezoneを東京に合わせた後も更新されていなかった。よってcrondを再起動
# systemctl restart crond