32
20

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.

AWS EC2 + nginx + PHP7 + Laravel5 で環境構築

Last updated at Posted at 2019-04-05

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で中身を編集

/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!
無事滞りなく行けばこんなページが表示されるはず!

スクリーンショット 2019-04-05 13.12.54.png

終わりに

結構環境構築で引っかかったところが多かったので同じような人がいれば参考にして欲しい。

おわり

32
20
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
32
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?