LoginSignup
15
20

More than 5 years have passed since last update.

EC2サーバー上にLaravel5.3のプロジェクトを初回デプロイする(git経由)

Last updated at Posted at 2016-10-30

概要

前回は、起動済みのまっさらなEC2インスタンスに nginx + PHP7 + (php-fpm) 環境を構築しました。
Qiita - AWS EC2 Amazon Linux 2016.09 + nginx + PHP7.0でサーバー構築

今回は、このEC2 + nginx + php7なサーバー上に、ローカルで作成したLaravel5プロジェクトを配置します。

LaravelプロジェクトはEC2サーバー上の/var/www/html/MyProjectに配置することとします。

構成

  • Amazon Linux - 2016.09.0
  • nginx - 1.10.1
  • PHP - 7.0
  • Laravel - 5.3

ハマりポイント

この作業、5時間ぐらいハマりました(かかりすぎ。。。)
ハマらなければ、15分もかからずに終わるのですがorz

肝は、
nginxの設定でROOTを/var/www/htmlではなく、
/var/www/html/MyProject/publicに設定することです。

同じサーバーに複数プロジェクトを配置するため、
/var/www/htmlをドメインのルートにしたかったのですが、断念しました。1ドメイン1プロジェクトにします。

ちなみに、どうしても複数プロジェクトにする場合は下記を参考にしてください。
nginx+PHP-FPMが稼働中のLinuxにLaravelを導入する

手順

gitのインストール

$ sudo yum install git

var/www/htmlフォルダの所有者変更

デフォルトではroot所有になっており、この後の作業でsudoが必要になってしまいます。
composerをsudoで使うのはよろしくなく、警告が出るので所有者をec2-userに変更します。

$ sudo chown -R ec2-user:root /var/www/html

git経由でLaravelプロジェクトを取得

$ cd /var/www/html
$ git clone [https://user@project/~~~/~~~.git] MyProject

期待するフォルダ名になるよう、名前を指定してgitから取得しています。
参考:Qiita - cloneしてきたプロジェクトの名前を変えてクローンしてくる方法

Composer経由で依存ライブラリ取得

デフォルトの.gitignoreでは、venderフォルダが無視されていて、Gitリポジトリ内に存在しないので、Composerで取得します。gitにvenderフォルダを含めるのはLaravel的に非推奨みたいです。

Composerのインストール

ホームディレクトリでcomposerパッケージをDLしてからbinに移動させています。

$ cd
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer

Composerで依存ライブラリを取得

composer.lockで指定されているライブラリ/バージョンを取得します。
ローカルプロジェクトで使ったバージョンで固定されるので安心です。

$ cd /var/www/html/MyProject
$ composer install

storageフォルダに書き込み権限を追加

$ chmod -R o+w /var/www/html/MyProject/storage

nginxの設定を変更

前回、設定したものをさらに変更します。
以下のように、rootをプロジェクトのMyProject/publicフォルダに指定し、すべてのリクエストをMyProject/public/index.phpで受けるようにします。これがハマらないための肝です。

/etc/nginx/nginx.conf

# これだとうまくいかない
# root         /var/www/html;

# 今回修正
root         /var/www/html/GuideMap/public;

# 今回追加
location / {
    # リクエストURI, /index.phpの順に処理を試みる
    try_files $uri /index.php?$query_string;
}

location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

あとはnginxのリスタートをして完了です。

$ sudo service nginx restart

まとめ

これでLaravelプロジェクトをEC2のサーバーに配置することができました。

次はgit + CodeDeployなどで自動デプロイを企んでます。

gitクローンした後に、$ composer installstorageフォルダの書き込み権限追加のスクリプトを流せれば自動デプロイできる気がします。

15
20
1

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