備忘録程度に簡単にメモ
EC2でLAMP環境を構築するまでにやったこと
AWSでやったこと
- AWSのアカウントを作った
- 無料枠の範囲内でとりあえずEC2とRDSを立てる
理由はなくなんとなくAmazon LinuxとMySQLの構成で作成。
RDSを作成する時は無料枠のオプションを表示することが出来るので、そのチェックを入れておくと料金が発生する設定にしてしまうことを防ぐことができる。 - 請求アラームの作成
0ドルを超えるとメールで発報するよう設定(通常料金でも1,000円に収まる範囲だと思うが無料枠でいろいろしたいので) - Elastic IPの取得
IPアドレスを取得し、EC2に関連付ける(無料枠内で起動しているEC2に関連付けされている間は無料らしい) - EC2のセキュリティグループにアクセスする際のIPからのSSH接続を許可
ここで一緒に任意のIPからのHTTP/HTTPSも許可しとくといい
たぶんざっくりこんなもん
リージョンはオレゴン(リージョン次第で無料かどうか変わるのかはわからない)
SSH接続の設定
EC2を作成したときにpemをDLしているはずなので、それを使ってSSH接続してみる
pemの権限設定を変更する
$ chmod 400 [pemのパス]
SSH接続してみる
$ ssh -i [pemのパス] ec2-user@[パブリックドメイン]
パブリックドメインはec2から始まるインスタンスごとに勝手に設定されているもの
こんなの(ec2-11-111-111-1.us-east-2.compute.amazonaws.com)
これでつながるはず。繋がらなかったらインバウンドで許可したIPアドレスに間違いがないか、
ユーザ名(デフォはec2-user)を別に設定していないかなどを確認
ここまでできればあとはサーバ側の設定とDNSさえどうにかすればWebサーバとして利用できる
SSHConfigをいじって接続しやすくする(おまけ)
$ vi ~/.ssh/config
以下のような感じで追記
# AWSサーバ
Host [sshコマンドで使う名前]
HostName [パブリックドメイン]
User ec2-user
IdentityFile [pemのパス]
これで以下みたいに簡単に接続できる
$ ssh [sshコマンドで使う名前]
サーバ側の設定(とりあえずPHPとMySQLが使える状態に持っていく)
とりあえずソフトウェアパッケージを更新
$ sudo yum update -y
Apahe、PHP、MySQLをインストール
$ sudo yum install -y httpd24 php70 mysql56-server php70-mysqlnd
Apache起動とサーバ起動時に自動的に立ち上がるよう設定
$ sudo service httpd start
$ sudo chkconfig httpd on
chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
EC2のインバウンド設定でHTTPを任意のIPに対して許可していれば、ブラウザにIPアドレスを入力すると
Apacheのテストページが見れるはず
Apacheのドキュメントルートを編集できるようにする
デフォルトではApacheは/var/www/htmlをドキュメントルートにしている。
/var/wwwディレクトリはrootが所有者なので、apacheユーザに変更する
SSH時のユーザはec2-userなので、apacheユーザグループにec2-userを追加する。
$ sudo usermod -a -G apache ec2-user
再接続する
$ exit
$ groups
ec2-user wheel apache
$ sudo chown -R ec2-user:apache /var/www
グループ編集許可を与える
$ sudo chmod 2775 /var/www
$ find /var/www -type d -exec sudo chmod 2775 {} \;
$ find /var/www -type f -exec sudo chmod 0664 {} \;
PHPファイルの動作を確認する
さっきの設定がうまく行っていれば、ec2-userはルートディレクトリにファイルを作成する事ができるはず
$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
[IPアドレス]/phpinfo.php にアクセスしてPHPの情報が表示されるはず
公開すべき情報ではないので、忘れずに削除しとく
$ rm /var/www/html/phpinfo.php
EC2とRDSを疎通させる
とりあえずMySQLポートを開放
EC2のインバウンドにMYSQLの接続を任意の場所から許可するよう設定
mysqlコマンドでRDSのMySQLへ接続してみる
RDSのインスタンスのセキュリティグループで、EC2インスタンスのセキュリティグループからのMYSQL接続を許可するよう設定
mysql –h [RDSインスタンスのエンドポイント] -P 3306 –u [ユーザ名] –p
Enter password: [パスワード]
基本的にユーザ名とパスワードはAWSのユーザ名パスワードになっているはず(何も設定していなければ)
ここまでできればApache、PHP、MySQLのセットアップはざっくりと完了。
セキュリティ的な話をすると弱い部分はたくさんあるので、実際の公開時には補強の必要があるが、
最低限は上記で完了。
後は静的HTML置くなり、Codeigniterでも入れて本格的なWebアプリ公開するなりする。