Laravelを別環境にデプロイする時のメモ

Mar 2, 2020 15:59 · 219 words · 2 minute read Laravel PHP

概要

ローカル環境(Homestead)で開発したLaravelプロジェクトをAWS EC2サーバーなど別環境にデプロイする時にてこずったのでその時のメモ。Homesteadがよしなにやってくれていた設定を自分でやる必要がある。

php-fpmの設定

$sudo vi /etc/php-fpm.d/www.conf

# 変更箇所のみ抜粋

user = nginx
group = nginx

listen = /var/run/php-fpm/php-fpm.sock

listen.owner = nginx
listen.group = nginx

;listen.acl_users = apache,nginx

// 起動する
$sudo service php-fpm start

// php-fpm.sockの権限を変えておく
$sudo chmod 755 -R /var/run/php-fpm/php-fpm.sock

nginxの設定

$cd /etc/nginx/conf.d
$sudo cp virtual.conf sample_project.conf
server {
    listen 80;
    #listen 443 ssl http2;
    server_name 192.168.10.10;
    root "/var/www/html/sample_project";

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    sendfile off;

    client_max_body_size 100m;

    location ~ \.php$ {
         fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
         fastcgi_index  index.php;
         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
         include        fastcgi_params;
     }

    location ~ /\.ht {
        deny all;
    }
}

composerインストール

$php -r "readfile('https://getcomposer.org/installer');" | php

$sudo mv composer.phar /usr/local/bin/composer

$composer

Laravelプロジェクトをクローン

$cd /var/www/html

$git clone [sample_projectのgitリポジトリURL]

公開用ディレクトリを作成

この設定でsample.htmlなど公開したくないファイルを除外する。Laravelプロジェクトディレクトリと公開用ディレクトリを分けてシンボリックシンクで管理する。

// 公開用ディレクトリ作成
$cd /var/www/html
$mkdir sample_project_public
$cd sample_project_public
// 書き換えるファイルをコピー
$cp ../sample_project/public index.php index.php
$cp ../sample_project/public .htaccess .htaccess

// 必要なファイルのシンボリックリンクを作成
$ln -s ../sample_project/public/css css
$ln -s ../sample_project/public/img img
$ln -s ../sample_project/public/js js
$ln -s ../sample_project/public/robots.txt robots.txt
$ln -s ../sample_project/public/favicon.ico favicon.ico
$ln -s ../sample_project/public/sass sass

index.phpを修正

$vi sample_project/index.php

// パスを修正
######
require __DIR__.'/../sample_project/vendor/autoload.php';

$app = require_once __DIR__.'/../sample_project/bootstrap/app.php';
######

.htaccessを修正

$vi sample_project_public/.htaccess

// これを消す
<IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
</IfModule>

パッケージをインストール

新しいパッケージなどを追加したらデプロイ先でアップデートする

$cd sample_project
$composer install

storageのパーミッションを変更

$sudo chmod -R 777 storage

.envファイルを作成

$cp .env.example .env

encryption keyを設定

php artisan key:generate

# .envに自動で追記される

キャッシュ更新

$php artisan config:cache

Configuration cache cleared!
Configuration cached successfully!