Laravelをさくらのレンタルサーバへデプロイ

ローカルで開発したLaravel5のプロジェクトをさくらのレンタルサーバ(スタンダード)で公開する時のメモ

環境

ちなみにローカルではPhpStormで開発している

手順

www.アカウント名.sakura.ne.jp/hogeとアクセスすると表示させる前提の手順
(アカウント名は○○○○.sakura.ne.jpの○○○○部分)

流れとしては、

  1. Gitのexportでアップするファイルを準備
  2. FTPで1をアップロード
  3. composerをインストール
  4. プロジェクトの設定
  5. 公開

今回はGitのリモートサーバは外部に公開していない為、1〜2の手順が必要。 GitHubとかで管理しているならcloneしてくればOK

ファイルの準備

(任意)除外ファイルの設定

※普段はGit管理しているがサーバへアップしたくないファイルがある場合のみ

今回はPhpStormのプロジェクトファイルをアップロード対象外としたい =エクスポートさせたくないので、.gitattributesに設定を追加する

  1. プロジェクトのルートフォルダの.gitattributesを開く
    (無い場合は作成)
  2. 除外対象を.idea/ export-ignoreとして追記する
    (.ideaフォルダ以下をエクスポート時に除外する設定)

エクスポート

ターミナルでエクスポートする。エクスポート先はプロジェクトのフォルダと同じ階層にしている

cd (プロジェクトのルート)
mkdir ../export
git archive master --worktree-attributes | tar -x -C ../export

(回線によってはここで圧縮しておき、サーバ上で展開した方が良いかも)

サーバへアップロード

FTPソフトで一つ前の手順でエクスポートしたフォルダの中身を丸ごとアップロードする
アップロード先は/home/アカウント名/laravelとする
www以下にはアップロードしないこと!

composerをインストール

プロジェクトの設定

DBの準備

Laravelへ設定

公開

公開用フォルダの設定

さくらのレンタルサーバはDocumentRootを変更できないので、

% ln -s ~/laravel/public ~/www/hoge

としてLaravelpublicへのシンボリックリンクをwwwの中へ置く

これでwww.アカウント名.sakura.ne.jp/hogeへのアクセスで、 プロジェクトの公開用フォルダpublicへアクセスできるようになる
(ただしまだこの段階ではエラー)

.htaccessの編集

さくらのレンタルサーバは.htaccessOptionsを使えないので、 laravel/publicの中の.htaccessを開き、

<IfModule mod_negotiation.c>
  Options -MultiViews
</IfModule>

の部分を削除する

これで無事公開が完了!

参考

サーバ上のファイル構成は以下の感じ

/home/アカウント名
  ├─ laravel
  |    ├─ .env
  |    ├─ public
  |    |  ├─ .htaccess
  |    |  └─ ...
  |    └─ ...
  ├─ www
  |    ├─ hoge          # シンボリックリンク
  |    └─ ...
  └─ ...

参考リンク