#概要
今回はAWSの無料アカウントでサーバを用意してLaravelの初期画面を表示します。
先日教えて頂いたので手順のみ残しておくために書きました。
AWSは無料枠内での利用です。
DBに関しては記事末にRDSの設定方法も用意しています
(MySQL)
##参考にしたページ
メイン
webサーバー
swap memory
[RDS] (https://qiita.com/na0AaooQ/items/7c69a88c80f1efb4cad3)
RDS phpMyAdmin
AWS EC2でwebサーバを立てる
アカウントの登録
AWSアカウント作成画面 にアクセスすると以下の画面になります。
それぞれの項目を入力して「続行」してください。
※パスワードはパスワード生成サイト等で強固なものを用意することをお勧めします。
連絡先入力
次の画面も任意の情報を入力していきます。
会社で使う場合はプロフェッショナル、個人で使う場合はパーソナルです。
住所の辺りは日本語ダメなのでローマ字表記で書きましょう。
支払い情報入力 ~ コンソールにサインイン
- 支払情報を入力します
- 本人確認を携帯等で済ませます
- ベーシックプランを選択します
- 右上のコンソールにサインイン
- 登録したメールと
無料枠を使いますが、カードの登録が必要です。
無料枠以外の使い方をしなければ基本的には大丈夫です。
EC2の利用設定(インスタンス生成)
--画面右上のオハイオを「アジアパシフィック(東京)」に変更しておく。
その後左上の「サービス」を開き、EC2を選択します
--インスタンスの生成を押す
--Amazon Linux AMIを選択
--無料枠が選択されているので右下の「次のステップ」を押す
--「終了保護の有効化」にチェックを入れ「次のステップ」
--ストレージのサイズを任意で変更(無料なら30まで)
--[Name]タグを追加して[次のステップ]
--[タイプ: HTTP]のルールを追加して「確認と作成」
--設定内容を確認して右下の「起動」を押す
--新しいキーペアを作成しダウンロード後、「インスタンスの作成」
--「インスタンスの表示」を押す
出てきた画面で生成されたインスタンスを確認します
Elastic IPをインスタンスに割り当てる
先ほど作ったインスタンスにパブリックのIPを割り当てます。
--サイドバーから「Elastic IP」を選択
写真の通りにボタンを推し進めてください
これで作成したインスタンスにネット経由でアクセスできるようになりました。
laravelが使えるようにする
###LAMP環境を整える
LAMPサーバー
ssh接続します。
先ほど作ってダウンロードしたキーペアを使ってサーバに入ります。
ec2-userという名前で入ってます
windowsの場合はputty
やtera term
でssh接続してください
【macのターミナル】
$ssh -i /User/{あなたの名前}/Downloads/{あなたの鍵名}.pem ec2-user@{インスタンスのipアドレス}
例)
ssh -i /Users/takashi/Downloads/myserver.pem ec2-user@3.115.181.26
インスタンスに入れたら、ソフトウェアの更新を行います。
sudo yum update -y
その後、webサーバ(Apache)、PHP(7,
.0)、MySQL(56?)を入れていきます。
sudo yum install -y httpd24 php70 mysql56-server php70-mysqlnd
インストールしたApacheを起動します
sudo service httpd start
インスタンスが起動されたりしたあと、自動でApacheも起動するようにします
sudo chkconfig httpd on
httpdが有効になっているか確かめます
chkconfig --list httpd
結果の2,3,4,5が(on)
2:on 3:on 4:on 5:on
となっていれば大丈夫です
次に、ファイル権限をいじります
①ec2-userをapacheグループに追加
sudo usermod -a -G apache ec2-user
②/var/www
とそのコンテンツのグループ所有権をapacheグループに変更
sudo chown -R ec2-user:apache /var/www
③グループ書き込み許可を追加し、これからできるサブディレクトリにグループIDを適用するために、/var/www
とサブディレクトリのパーミッションを変更します。
sudo chmod 2775 /var/www
find /var/www -type d -exec sudo chmod 2775 {} \;
④グループ書き込みを許可するために、/var/www
とそのサブディレクトリのファイル許可を変更します
find /var/www -type f -exec sudo chmod 0664 {} \;
⑤LAMP webサーバーのテストを行います。以下を実行した後、ブラウザから{インスタンスのIPアドレス}/phpinfo.php
にアクセスしてみてください
echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
このような画面が表示されればうまくいっています
確認が済んだらphpinfo.php
は削除しておきます
rm /var/www/html/phpinfo.php
DBサーバーのセキュリティ
①MySQLサーバの起動
sudo service mysqld start
②mysql_secure_installationの実行
最初にパスワードを聞かれますが未設定なのでそのままエンターを押し、
その後「y」を入力して新しいパスワードを2回いれます。
その後に続くやり取りは、すべて「y」で進んで構わないです。
sudo mysql_secure_installation
③webサーバと同じく、起動と同時にMySQLサーバを起動させるようにします
sudo chkconfig mysqld on
phpMyAdminをインストールする
①必要な依存ファイルをインストール
sudo yum install php70-mbstring.x86_64 php70-zip.x86_64 -y
②apacheの再起動
sudo service httpd restart
③/var/www/html
に移動
cd /var/www/html
④このドキュメントルートにphpMyAdminのパッケージをダウンロードします
wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
⑤phpMyAdminファイルを作ってそこにパッケージを展開します
mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1
⑥phpMyAdmin-latest-all-languages.tar.gz
を削除します
rm phpMyAdmin-latest-all-languages.tar.gz
⑦ブラウザでphpMyAdmin
が開くか確認する
インスタンスのIPアドレス/phpMyAdmin
にアクセス
これでphpMyAdminを入れられました
Laravelプロジェクトを作成する
composerをinstallしたりとか
curl -sS https://getcomposer.org/installer | sudo php
sudo cp composer.phar /usr/local/bin/composer
sudo ln -s /usr/local/bin/composer /usr/bin/composer
SWAPメモリの確保
そのままLaravelプロジェクトをインストールすると固まったりすることも
あるそうなので回避策
sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo /sbin/swapon /var/swap.1
free
この後、Swap
の欄に数字があればOKです
今後OSの再起動の際に自動的に同じ処理をするように設定しておきます
sudo cp -p /etc/fstab /etc/fstab_yyyymmdd
vi /etc/fstab
開いたエディタで以下を追加
/swap_ext1 swap swap defaults 0 0
これで大丈夫です
Laravel プロジェクト作成
ようやくLaravelを入れます。
cd /var/www
composer create-project --prefer-dist laravel/laravel {プロジェクト名}
ドキュメントルート変えたりします
viエディタ
使います
以下を実行すると、、
sudo vi /etc/httpd/conf.d/custom.conf
キーボードのi
を押すと左下に[INSERT]の文字が出てます。すると、入力できるようになります
入力できるようになったら、以下のように入力してください
Alias /{プロジェクト名} /var/www/{プロジェクト名}/public
# .htaccess 有効化
<Directory /var/www/{プロジェクト名}/public>
AllowOverride All
</Directory>
その後Esc
キーを押し、:wq
と入力してEnter押すとエディタから出られます
設定を変えたのでwebサーバを再起動します
sudo service httpd restart
権限を変更していきます
sudo chmod -R 777 /var/www/{プロジェクト名}/storage
sudo chmod -R 775 /var/www/{プロジェクト名}/bootstrap/cache
{インスタンスのIPアドレス}/{プロジェクト名}
をブラウザで開いて
Laravelの初期画面が表示されていれば全て完了です
AWS RDS
セキュリティグループ
- EC2の画面左から「セキュリティグループ」を押す
- 新しいセキュリティグループを作成します
RDSに接続させることができるセキュリティグループを後ほど入力するので、上でEC2を作った時にできたセキュリティグループのIDをコピーしておき、その後「セキュリティグループの作成」を押します。
- 以下を設定後「作成」を押します
①「ルールの追加」を押す
②「ソース」の部分に先ほどコピーしておいたEC2のセキュリティグループIDを張り付ける
③「タイプ」を「MYSQL/Aurora」を選択
④「セキュリティグループ名」「説明」を入れて「VPC」でデフォルトを選択
--> 「作成」
これでセキュリティグループに関しては完了です
サブネットグループ
- 「サービス」の「RDS」の左の「サブネットグループ」を選択し「DBサブネットグループの作成」を押す
- 「名前」「説明」「VPC」を入力・選択します
- アベイラビリティゾーンを2通り選択して両方に「サブネット」を追加します
「このサブネットグループのサブネット」が2つ設定されていることを確認し「作成」を押す
以上で「サブネット」の設定は完了です。
パラメータグループ
- 「RDS」のパラメータグループを選択、「パラメータグループの作成」を押す
- 画像のようにそれぞれの項目を選択し、「作成」を押す
これでパラメータグループは完了です
RDSインスタンス作成
- RDSの項目の「データベースの作成」
※以下の画像の上部の「元のインターフェースに切り替える」を選択しています
「データベースの作成」を押すと以下の画面が表示されるので「MySQL」を選択し「次へ」を押します
- 画像のように無料枠のものを選択
※以下説明がない部分はデフォルトで進めて頂いて大丈夫です
- 以下のように進める
①上のパラメータグループで設定したMySQLのバージョンに合わせて設定
②無料枠指定にチェックを入れる
③「DBインスタンス識別子」「マスターユーザの名前」「マスターパスワード」をそれぞれ入力し「次へ」を押す
- サブネットグループ、セキュリティグループ
「サブネットグループ」「セキュリティグループ」を先ほど設定したものに選択しておく
- パラメータグループを選択
- 削除保護の有効化にチェックを入れておく
これで「データベースの作成」を押すとしばらく待ち、作成完了を待つ
RDS phpMyAdminからアクセスする
次に今作ったRDSにphpMyAdminからアクセスできるようにします
EC2インスタンスにssh接続します
windowsの場合はputty
やtera term
でssh接続してください
【macのターミナル】
$ssh -i /User/{あなたの名前}/Downloads/{あなたの鍵名}.pem ec2-user@{インスタンスのipアドレス}
phpMyAdminの設定変更
cp /var/www/html/phpmyadmin/config.sample.inc.php /var/www/html/phpmyadmin/config.inc.php
sudo vi /var/www/html/phpMyAdmin/config.inc.php
これでエディタに入るので
$cfg['Servers'][$i]['host'] = 'localhost';
の部分を
$cfg['Servers'][$i]['host'] = '【エンドポイント】';
に変更してください
※エディタの操作は記事上部を参考にしてください
エンドポイントは以下で確認できます
- RDS の「データベース」を選択すると画像のような画面が表示されるので丸が付いたリンクをクリック
- 画像の部分にエンドポイントがあります
これでphpMyAdminの設定は完了です
phpMyAdmin
の画面でRDSインスタンス作成の際の「マスターユーザ名」「マスターパスワード」を入れてphpMyAdmin
の中に入ることができたら完了です