laravel

さくらインターネットレンタルサーバでLaravel5.4を動かすメモ

前置き

以下の単語は適宜自分の環境のものに読み替えてください

  • {accountname}
    • さくらのアカウント名
  • {dbname}
    • DB名
  • {dbpass}
    • DBパスワード
  • {gituser}
    • gitアカウント名
  • {appname}
    • リポジトリ名
    • Laravelプロジェクト名 - {domain}

データベース初期設定

デフォルトPHP設定

  • https://secure.sakura.ad.jp/rscontrol/main/phpver
  • 新しいバージョン を PHP7.1 を選択して変更ボタンを押下
  • ただし、今回は既存のアプリを動作したままにしたいので当面は変更はしないことにする
    • バージョン上げたら既存アプリは全く動かなかったもので。。。

Laravelプロジェクトを初回デプロイ

  • ローカルマシンで開発した前提
  • すでにgit入ってるようなのでcloneすることにする
% cd ~
% git clone https://{gituser}@bitbucket.org/{gituser}/{appname}.git

composerインストール

  • 古いPHPバージョンだとパイプの後ろのPHPに食わせるところが上手く動かなかったのでPHP7を指定してインストール
  • ssh でサーバにログイン後に以下のコマンドを実行していく
% cd ~
% mkdir ~/bin
% curl -sS https://getcomposer.org/installer | /usr/local/php/7.1/bin/php -- --install-dir=bin --filename=composer

# cloneしたリポジトリのディレクトリへ移動

% cd ~/{appname}
% /usr/local/php/7.1/bin/php ~/bin/composer install

Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files
> Illuminate\Foundation\ComposerScripts::postInstall
> php artisan optimize
Script php artisan optimize handling the post-install-cmd event returned with error code 255

# 怒られたので指示通りに以下を叩く

% /usr/local/php/7.1/bin/php artisan optimize

# 再度叩く

% /usr/local/php/7.1/bin/php ~/bin/composer install
% ls -la vendor

# 諸々入ってればOK

PHP7対応

  • デフォルトPHPバージョンはそのままのため www/{appname} だけでPHP7を有効にする
% cd ~/{appname}/public
% vi php71.cgi

#!/bin/sh
exec /usr/local/php/7.1/bin/php-cgi

% chmod 705 php71.cgi
% vi .htaccess
.htaccess
# 追記
Action myphp-script /{appname}/php71.cgi
AddHandler myphp-script .php .html

# コメントアウト
    #<IfModule mod_negotiation.c>
    #    Options -MultiViews
    #</IfModule>

...
# symlink を貼る
% ln -s ~/{appname}/public ~/www/{appname}

初期設定など

% cd ~/{appname}

# .env ファイルを用意
% cp .env-sample .env
% /usr/local/php/7.1/bin/php artisan key:generate

## DBの設定などを更新する
% vi .env
.env
APP_ENV=production
APP_KEY={生成されたキー}
APP_DEBUG=false
APP_LOG_LEVEL=info
APP_URL=http://{domain}/{appname}

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE={accountname}_{dbname}
DB_USERNAME={accountname}
DB_PASSWORD={dbpass}

...
  • http://{domain}/{appname}/ へアクセスして画面が表示されることを確認

DBマイグレーション

% /usr/local/php/7.1/bin/php artisan migrate

デプロイ方法

  • masterをデプロイする場合
% cd ~/{appname}
% git checkout master
% git pull origin master

JSモジュール更新

  • nodejs をインストールしようと思ったが、ソースからインストールする必要があり、makeしてもエラーになるので諦めた
  • やりたいことは本番環境用のjsやcssを生成することだけなのでローカル環境で実施することにする
$ yarn run production

# 完了後に CTRL+C
  • public/ 配下をまとめて scp などでサーバへデプロイ
  • public 配下を git add しちゃえばサーバで git pull するだけなので楽かもしれないがポリシーとご相談を