3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

EC2(Amazon Linux)とRDS(MySQL)でLAMP環境を構築するまで

3
Last updated at Posted at 2017-11-13

備忘録程度に簡単にメモ

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アプリ公開するなりする。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?