Laravelを別環境にデプロイする時のメモ
Mar 2, 2020 15:59 · 219 words · 2 minute read
概要
ローカル環境(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!