bakalog

備忘録的なもの

AWS EC2に Nginx / vsftpd /php-fpm / mysql を入れてみた。

下書き状態で放置していたので、 せっかくなので公開。 ちなみに開発環境はMacです。

以下の構成で構築します。

  • AWS EC2(仮想サーバ)
  • nginx(WEBサーバ)
  • vsftpd(FTPサーバ)
  • php-fpm ( php実行環境 )
  • mysql ( RDBMS )

AWS環境の用意

おしながき

  1. AWSアカウントの作成
  2. AWSマネジメントコンソールからのEC2インスタンスの作成
  3. EC2で作成した仮想サーバに接続する為の秘密鍵を作成
  4. 生成した公開鍵に権限を与える
  5. 秘密鍵が適切に設定できているかどうか確認する為、サーバへ接続する
  6. Elastic IPを固定する
  7. nginx( webサーバ )のインストール
  8. php-fpm (PHP実行環境 ※nginxと連携させる)
  9. vsftpd (FTPサーバ)
  10. mysql (RDBMS 管理運用システム)

上記の1〜3まで、
「1. AWSアカウントの作成」
「2. AWSマネジメントコンソールからのEC2インスタンスの作成 」
「3. EC2で作成した仮想サーバに接続する為の秘密鍵を作成」

この辺についてはLIGさんの記事でわかりやすく解説されていたので、
そちらを参照して下さい。(ぶん投げ)

参考 : http://liginc.co.jp/web/programming/server/39969
見出し : Apacheインストール の直前までを参考にする。

4. 生成した公開鍵に権限を与える

コンソールでの作業。
以下の例では「書類」に秘密鍵を置いた。
該当ディレクトリへ移動して、pemに対して実行権限を与える。

cd /Users/ユーザ名/Documents/
chmod 600 生成した鍵.pem

5. 秘密鍵が適切に設定できているかどうか確認する為、サーバへ接続する

ssh -i 生成した鍵.pem ec2-user@Public DNSの値

初めて接続する時は以下の様に、 繋いで良いか確認されるので、 “yes”を入力する

Are you sure you want to continue connecting (yes/no)?

6. Elastic IPを固定する

デフォルトだとIPアドレスインスタンスを再起動する度に変わる為、
アクセスするIPアドレスを固定します。
※ EC2につけられるIPアドレスやホスト名が3種類あるが、
デフォルトだと動的な値しか無い為。

(1). Public DNS

グローバルなホスト名。
インターネットから接続可能でデフォルトでは、動的なホスト名になる。
インスタンスを停止後に起動すると、値が変わる。

(2). Elastic IP

Elastic IPを有効にした場合、割り当てられる固定IPアドレス
Elastic IPが有効である場合、Public DNSはElastic IPを逆引きしたものに固定される。

(3). Private DNS ( Private IPs )

Privateなホスト名 及び IPアドレス
同一リージョン内で他のインスタンスと通信する際に利用する。
インターネットからは接続できない。
Private DNS ( Private IPs )を使って通信する場合に限り、
同一のAZ内の通信は、費用がかからない。

Elastic IPの設定が完了したら、
SSH接続時の値を以下のように変更する。

ssh -i 生成した鍵.pem ec2-user@Public DNSの値  
↓  
ssh -i 生成した鍵.pem ec2-user@Elastic IPの値  

■ nginx( webサーバ )のインストール

参考 : http://d.hatena.ne.jp/january/20130819/1376866225

nginx が含まれたAMIもたくさんある。 らしい。

1.nginxの情報を確認する
yum info ngninx
2. nginxのインストール
sudo yum install nginx  

■ vsftpd (FTPサーバ)

概要 :
vsftpd をインストールして、ユーザー/パスワードを作成。
上記ユーザーに対しての接続権限・rootパスを指定。
AWSコンソールより、ftpポートを開通する。

参考 :
http://blog.genies.jp/2011/07/amazon-ec2-amazon-linux-vsftpd.html

http://raining.bear-life.com/linux/ftp%E3%83%A6%E3%83%BC%E3%82%B6%E3%81%94%E3%81%A8%E3%81%AB%E3%83%9B%E3%83%BC%E3%83%A0%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%99%E3%82%8Bvsftpd

php-fpm (PHP実行環境 ※nginxと連携させる)

※ FPM (FastCGI Process Manager)

参考 :
http://www.s-shirayama.com/blog/4/

mysql (RDBMS 管理運用システム)

1.mysqlのインストール
yum install mysql  
yum install mysql-server  
2.mysqlを起動、サーバ再起動時に自動立ち上げをする設定をONにする
/etc/init.d/mysqld start  
/sbin/chkconfig mysqld on  
3.php-mysqlのインストール
yum install php-mysql  
4.mysqlでdatabaceを作成
# ※ aws_db01 の部分が任意の名称  
create database aws_db01  
5.DBが作成できたかどうかを確認する
SHOW DATABASES;  
最後に

EC2インスタンスは起動している時間だけ、課金される為
必要がない時は、停止する事。

感想

細かい事所まで理解したとは言えないけども、 サーバの全体像が見れたような気がする。