AWSを使ってLAMP環境を構築する手順

自己学習のメモとして。
AWS上にLAMP環境を作成する手順を書いておきます。

#Linux仮想マシン（EC2）を起動

１、AWSのマネジメントコンソールからEC2を選択。
※この段階でリージョンを日本にしておく

２、インスタンスの作成を選択
・AMAZON Lunux AMIを選択
・無料利用枠のt2.microを選択
→インスタンスを作成

キーペアが生成できるのでダウンロードしておく。

#パブリックIPアドレスを設定

パブリックIPアドレスが毎回変化してしまうので固定する。

・左のメニューからElastic IPを選択
・新しいアドレスの割り当てをクリック
・出来上がったアドレスを選択し、アクション→アドレスの関連付け
・インスタンスをクリックし、先ほど設定したLinuxのIDが出るので選択して紐づけ
・インスタンスからセキュリティグループをクリッ
アクション→インバウンドルールの編集を選択
・ルールの追加→http→保存

#リモートアクセス

・ターミナル（コマンドプロンプト）を起動
・.sshフォルダがあるか確認する。（無ければmkdirでユーザーディレクトリの中に作っておく）
・.sshの中に先ほどのKey.pemファイルを移動しておく
・以下のsshコマンドでAWSにアクセス

```
ssh -i ~/.ssh/xxx.pem ec2-user@xx.xxx.xxx.xxx
```
※デフォルトで名前はec2-userになっている
初回はyesを選択して接続

###今後接続するときは毎回このコマンドを打つので覚えておきたい
exitで接続を終了できる

#Apacheを導入

・Linuxをアプデしておく

```
sudo yum -y update
```
※-yをつけると確認画面なしにできる

・Apacheをインストールする

```
sudo yum -y install httpd
```
・Apacheを起動する

```
sudo service httpd start
```
・今後自動で立ち上がるように設定する

```
sudo chkconfig httpd on
```
※ブラウザに切り替えてIPアドレスからapacheが見られるか確認するとよい

###おまけ１
htmlファイルを作って試しに見てみる方法

htmlを作成

```
sudo vi /var/www/html/index.html
```
１、編集画面になったら「i」を打って適当にhtmlファイルを作成する
２、「esc」を押してから「:wq」で上書き保存しenter
#####※:q!で保存せず終了できる

ファイルの確認方法

```
ls /var/www/html
```

ブラウザにIPアドレスを打ち込んで確認できる

###おまけ２

scpコマンドで、ローカルで作成したhtmlファイルを転送する
※scpはPC間で安全に転送するコマンド

おまけ１でAWSに作ったhtmlファイルをローカルにダウンロードする(デスクトップの場合)

```
scp -i ~/.ssh/xxx.pem ec2-user@xx.xxx.xxx.xxx:/var/www/html/index.html ~/Desktop
```
適当にhtmlファイルを編集し、AWSに転送する

```
scp -i ~/.ssh/xxx.pem ~/Desktop/index.html ec2-user@xx.xxx.xxx.xxx:
```

成功したかどうかsshコマンドで接続して確認
(pwd、lsで見られる。)

現状htmlファイルはec2-userの中にあるので正しい保存先に移動させる

```
sudo mv ~/index.html /var/www/html
```
これでブラウザで見ることができるようになる

###この流れは面倒なのでもう少し簡略化できるよう設定する

EC2にリモートアクセスしている状態でwwwというグループを作成する

```
sudo groupadd www
```
このグループに自分のユーザー名を追加する

```
sudo usermod -a -G www ec2-user
```
いったんexitでログアウトし、もう一度ログイン→グループの権限が有効になっているはず

```
groups
```
で確認すると

```
ec2-user wheel www
```
となっているはず

htmlを保存するディレクトリのグループ所有権を変更する

```
sudo chown -R root:www /var/www
```
/var/www以下のディレクトリに書き込み許可を設定する

```
sudo chmod 2775 /var/www
```
将来のサブディレクトリにグループIDを設定

```
find /var/www -type d -exec sudo chmod 2775 {} \;
```
/var/www及びサブディレクトリのファイル許可を繰り返し、グループの書き込み許可を与える

```
find /var/www -type f -exec sudo chmod 0664 {} \;
```

今後は転送先に直接/var/www/htmlを指定できる

```
scp -i ~/.ssh/xxx.pem ~/Desktop/index.html ec2-user@xx.xxx.xxx.xxx:/var/www/html
```

#PHPをインストール

※お決まりのコマンドでリモートログインしておく

管理者権限に切り替えておく

```
sudo su
```
ユーザー名の部分に#がつけばOK。
切り替えておけばsudoコマンドを打つ必要が無くなる。

時間の設定

```
date
```
ロンドンの時間になっていたりすると、掲示板などのサービスを作った際におかしくなるので日本時間に修正

```
ln -sf /usr/share/zoneinfo/Japan /etc/localtime
```
dateコマンドで確認して問題なければOK

・PHPをインストールする

```
yum install -y php
```

###動作確認

・PHPの設定をしておく
※バックアップを取っておくと良い

```
cp /etc/php.ini /etc/php.bak
```
もしバックアップの必要が出た場合は

```
cp /etc/php.bak /etc/php.ini
```

viでphp.iniの設定をいじる

```
vi /etc/php.ini
```
行番号を表示させると見やすくなるのでescキーを押して

```
:set number
```
520行目あたりを編集したいので

```
:520
```
iモードにして

```
error_reporting = E_ALL &E_DEPRECATED 
```
に追記をすれば、phpの余分なエラーメッセージを表示させずに済む

```
error_reporting = E_ALL &E_DEPRECATED & ~E_NOTICE
```
次に537行目を編集。
ディスプレイエラーをOnにしておく
これでphpのエラーがブラウザに表示されるようになる

```
display_errors = On
```

ターミナルに戻り、apacheを再起動

```
service httpd restart
```

viでindex.phpを作って動作確認をすると良い
ブラウザでxx.xxx.xxx.xxx/index.php、（または番号のみで閲覧できる？）で確認できる。

#MySQLのインストール

※sshでリモートアクセスし、sudo suで管理者にしておく。

yumでmysqlをインストールする

```
yum install -y mysql-server
```
phpからmysqlをコントロールするため追加プログラムを入れる

```
yum install -y php-mysqlnd
```
mysqlを起動してみる

```
service mysqld start
```

・mysqlの設定

```
mysql_secure_installation
```
パスワードを聞かれるが無いのでそのままenter
すると新しくパスワードを設定するかを聞かれるのでyを押し、パスワードを設定する
※パスワードは忘れないように
確認のためにもう一度打ち込む
そしてRemove anonyemous users？（ゲストユーザーを消しますか？）と尋ねられるのでyを押す。
そのあとはすべてyでOK。

・mysqlの文字コードをviで設定

```
vi /etc/my.cnf
```
11行目あたりにある[mysqld_safe]の前に

```
character-set-server = utf8
```
を追加。:wqで保存
再起動して確認

```
service mysqld restart
```
OKと表示されているればOK。

#phpMyAdminを導入

phpMyAdminをインストールするためにyumコマンドの設定を変更する

```
yum-config-manager --enable epel
```
これで準備ができたので、phpmyadminをインストールする

```
yum install -y phpmyadmin
```
・自分のローカルPCのみでphpmyadminにログインできるよう設定する
自分のPCのグローバルIPアドレスを確認する
→[確認くん](https://www.ugtop.com/spill.shtml)

確認できたらviで設定をいじる

```
vi /etc/httpd/conf.d/phpMyAdmin.conf
```
※大文字に注意

127.0.0.1の部分をグローバルIPアドレスに書き換えればOK
###せっかくなので置換機能を使ってみる

```
:%s/127.0.0.1/xxx.xx.xx.xx/g
```
全4か所が修正されていればOK
設定を反映させるために再起動する

```
service httpd restart
```
確認のためxx.xx.xx.xx/phpmyadminをブラウザで確認する
ユーザー名はroot、パスワードはmysqlで設定したものを入力。

##これにてLAMP環境が完成！

今後はLaravel環境を作る方法を書けるようになれればと思っています！

ありがとうございました。