michimani.net

さくらレンタルサーバーでLaravel5.1が動くようになるまでにしたこと

2017-05-15

「さくらレンタルサーバー Laravel」で検索すると様々な内容がでてきますが、実際に自分でやった内容についてまとめておきたいと思います。

前提

環境

運用方法

ドメインを追加して、そこで運用
具体的には、さくらのコントロールパネルから hogehoge.hoge というドメインを追加して、指定フォルダを /home/{アカウント名}/www/hoge/public/ にします。

やったこと

Laravelプロジェクトの作成

まずはLaravelプロジェクトの作成についてですが、これについては既に他の方々が書かれている内容の通りに進めれば大丈夫です。(ここは丸投げで)

簡単な流れだけ書いておきます。

  1. さくらレンタルサーバーに composer をインストールする
  2. composer を使用して Laravelプロジェクト を作成する

以上です。(ざっくりと)
僕が参考にさせていただいたのは下記の記事です。ありがとうございました。 さくらのレンタルサーバー Laravel5 インストール

上記記事では /home/{アカウント名}/ 配下にプロジェクトを作成していますが、前提条件で書きました通り、 /home/{アカウント名}/www/ 配下に hoge というプロジェクトを作るという形で話を進めます。

ということで、上記記事で書かれている「publicディレクトリのコピー」は不要です。

.htaccessの内容変更

まず、よく書かれている public/.htaccess の修正内容です。 Laravelプロジェクトをインストールした状態からの差分は以下のとおりです。

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

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

+   RewriteBase /

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

さくらレンタルサーバーでLaravelを動かす記事でよく書かれているのが

Options -MultiViews 部分をコメントアウトする

という内容ですが、今年の3月中旬以降、以下のようにさくらレンタルサーバーにてApacheのシステム設定変更があり、 .htaccess 内で、条件付きではありますが Options の指定が可能になっています。

※1 .htaccess にて Options が設定可能になります。  自動インデックス機能がデフォルトで無効となります。  詳細な情報は後日公開いたします。 2017年02月28日追記  Options では、All,FollowSymLinks 以外の機能が設定可能です。

DB設定

基本的には .env の内容変更となります。

APP_ENV=local
APP_DEBUG=true
APP_KEY=***********************************

DB_CONNECTION=mysql
- DB_HOST=127.0.0.1
+ DB_HOST=mysql***.db.sakura.ne.jp // コントロールパネル > データベースの設定 で確認
- DB_DATABASE=homestead
+ DB_USERNAME=hogehogeid
- DB_PASSWORD=homestead
+ DB_PASSWORD=hogehogepass

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

.env の内容変更で接続自体は可能になりますが、php artisan migrate コマンドを実行した際に作成されるテーブルの照合順序を変更する場合は、config/database.php 内での指定が必要です。

'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'forge'),
            'username'  => env('DB_USERNAME', 'forge'),
            'password'  => env('DB_PASSWORD', ''),
            'charset'   => 'utf8',
-           'collation' => 'utf8_unicode_ci',
+           'collation' => 'utf8_general_ci',
            'prefix'    => '',
            'strict'    => false,
        ],

assetsディレクトリ

cssjs などを格納する assets ディレクトリですが、デフォルトでは resources/assets に設置されています。 が、 blade に用意されている assets() メソッドで参照するのは public ディレクトリ配下ということなので、 resources/assets については使用せず、 public/assets を新たに作成して、そこに cssjs を格納していきます。

まとめ

assets ディレクトリを新たに作成したこと以外は、インストール時のディレクトリ構造を変更する必要はありませんでした。 .htaccess についても、さくらレンタルサーバーのApacheシステム変更によりコメントアウトをする必要がなくなりました。追記は必要ですが。 DB設定についても既に多くの方が書いておられる内容、および公式ドキュメントに書かれている内容ですが、照合順序についてはマイグレーションでテーブルを作ったあとに発覚したので、もし変更される方は注意してください。


comments powered by Disqus