LaravelをAWSで使うことになった
LaravelをAWSで動かせるかを確認しておけとのこと。
備忘録的なことも含めてメモしておく。
今回の環境
- AWS EC2 Amazon Linux2
- nginx 1.12
- PHP 7.2
- Laravel 5.5
AWSにSSH接続
EC2でインスタンスを生成します。
今回選んだサーバーの種類
Amazon Linux 2 AMI (HVM), SSD Volume Type
SSH接続する!
$ ssh -i ~/.ssh/[SHHキー.pem] ec2-user@[ドメイン名かIPアドレス(パブリック DNS (IPv4))]
インスタンスの再起動でIPアドレスが変わるので気をつけよう。固定したい場合にはElastic IPで出来る
nginxのインストール
yumでのインストールを試みたが...amazon-linux-extras
使えと。
amazon-linux-extras
はあらかじめAWSでインストールされているソフトウェアを起動させることで簡単に利用できるシステム。以下のようなソフトが用意されている。
$ amazon-linux-extras
0 ansible2 available [ =2.4.2 =2.4.6 ]
2 httpd_modules available [ =1.0 ]
3 memcached1.5 available [ =1.5.1 ]
4 nginx1.12 available [ =1.12.2 ]
5 postgresql9.6 available [ =9.6.6 =9.6.8 ]
6 postgresql10 available [ =10 ]
8 redis4.0 available [ =4.0.5 =4.0.10 ]
9 R3.4 available [ =3.4.3 ]
10 rust1 available \
[ =1.22.1 =1.26.0 =1.26.1 =1.27.2 =1.31.0 ]
11 vim available [ =8.0 ]
13 ruby2.4 available [ =2.4.2 =2.4.4 ]
15 php7.2 available \
[ =7.2.0 =7.2.4 =7.2.5 =7.2.8 =7.2.11 =7.2.13 =7.2.14 ]
16 php7.1 available [ =7.1.22 =7.1.25 ]
17 lamp-mariadb10.2-php7.2 available \
[ =10.2.10_7.2.0 =10.2.10_7.2.4 =10.2.10_7.2.5
=10.2.10_7.2.8 =10.2.10_7.2.11 =10.2.10_7.2.13
=10.2.10_7.2.14 ]
18 libreoffice available [ =5.0.6.2_15 =5.3.6.1 ]
19 gimp available [ =2.8.22 ]
20 docker=latest enabled \
[ =17.12.1 =18.03.1 =18.06.1 ]
21 mate-desktop1.x available [ =1.19.0 =1.20.0 ]
22 GraphicsMagick1.3 available [ =1.3.29 ]
23 tomcat8.5 available \
[ =8.5.31 =8.5.32 =8.5.38 ]
24 epel available [ =7.11 ]
25 testing available [ =1.0 ]
26 ecs available [ =stable ]
27 corretto8 available [ =1.8.0_192 =1.8.0_202 ]
28 firecracker available [ =0.11 ]
29 golang1.11 available [ =1.11.3 ]
30 squid4 available [ =4 ]
31 php7.3 available [ =7.3.2 ]
32 lustre2.10 available [ =2.10.5 ]
amazon-linux-extrasを使っていく
$ sudo amazon-linux-extras install nginx1.12
PHPのインストール
同様にamazon-linux-extrasでPHPをインストールしていく
15 php7.2 available
[ =7.2.0 =7.2.4 =7.2.5 =7.2.8 =7.2.11 =7.2.13 =7.2.14 ]
16 php7.1 available [ =7.1.22 =7.1.25 ]
31 php7.3 available [ =7.3.2 ]
3種類あった。今回は7.2バージョンを選択。
$ sudo amazon-linux-extras install php7.2
まずはphpinfo()が動いているか確かめよう
ディレクトリを作ってコードを書く。phpならなんでもいい。
で、やること3つ
HTTPトラフィックの許可
AWS EC2の使っているインスタンスのセキュリティグループを探す
↓
下の方にあるタブからインバウンドを探す
↓
ブラウザから今回はアクセスできるようにするためHTTPを追加
[ 編集 → ルールの追加 → HTTPを選んで決定(他の設定はとりあえず放置で) ]
nginxのドキュメントルート設定
vi /etc/nginx/nginx.conf
で中身を編集
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /; ##ここを編集
好きな場所にIPでアクセスした時に参照するディレクトリーを設定
今回はルートディレクトリにします。
nginxとphp-fpmの開始
nginxの設定を変えたので再起動。php-fpmも再起動しとく
起動してなかったら起動する。
$ service nginx restart(start) もしくは $ systemctl restart(start) nginx
$ service php-fpm restart(start) もしくは $ systemctl restart(start) php-fpm
動いているかの確認には
$ service nginx status もしくは $ systemctl status nginx
IP[xx.xx.xxx]/phpinfoのパス
ex)127.0.0.1/var/www/phpinfo/info.php にアクセス
しっかり表示されたらlaravelのインストールに移っていく
composerのインストール
PHPのライブラリ管理のためのcomposerをインストールする。
$ curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...
Composer (version 1.8.4) successfully installed to: //composer.phar
Use it: php composer.phar
このままだとカレントディレクトリにcomposer.pharファイルがあるのでパスが通っている場所に移動
$ echo $PATH
パスの通っているところを確認
通っているところにcomposerと言うファイル名で移動
$ mv composer.phar /usr/bin/composer
ディレクトリーに入れてそちらにパスを通す方法でもおk。
binの中にcomposerディレクトリは必要ないのでくれぐれも作らないように
起動確認
$ composer
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.8.4 2019-02-11 10:52:10
laravelのインストール
インストールする時にmb-stringとmb-pdoが欲しい
よく分からないから先人に習ってインストール
もし余計なものが入ってるのがわかる人がいたら教えて欲しいです!
$ yum install --enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-gd
laravelのプロジェクトを置くディレクトリに移動
今回はsiteと言う名前のlaravelプロジェクトを作る
$ composer create-project --prefer-dist laravel/laravel site "5.5.*"
多分出来てる。welcomeページ表示までのいくつかの設定を最後にする。
laravelの初期設定
laravelプロジェクト内のComposerのアップデート
php-mbstring, php-pdo, php-xmlが必要。よく分からんから先人に習う
yum install --enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-gd php-xml
で、アップデート
$ composer update
****
****
Package manifest generated successfully. # これでてたらおk
APP_KEYの設定
.envファイルのセキュリティの為のKEYを入れてあげる。composerでインストールするとあらかじめ入っているらしいが、一応やって置くに越したことはない。
$ php artisan key:generate
Application key [base64:sJQq984xxxxxxxx7PnJmiaRCBn0N5GwNtbU0lcq8Yc=] set successfully.
laravelのコマンドartisanが動くかチェック。なんでもいいけど、今回はわかりやすいrouteでの警告を受けます。
$ php artisan route
Command "route" is not defined.
Did you mean one of these?
route:cache
route:clear
route:list
artisanが動いて上のように出ればおk。ここでエラーが出た場合は、laravelのセットアップが上手くいってません。composer周りの設定が足りていない可能性が高いです。
nginxからの権限を許可する
storageの権限を許可する。
$ chmod -R 777 storage/
-Rはディレクトリ配下全てのオプション。
これを忘れて苦しんだので忘れないように...
アクセス
ルートにlaravelのpublicを設定してあればIPアドレスにアクセスすればおk!
無事滞りなく行けばこんなページが表示されるはず!
終わりに
結構環境構築で引っかかったところが多かったので同じような人がいれば参考にして欲しい。
おわり