Laravelをセットアップ

最終更新日:2019年12月09日
レベル:★★★☆☆
Webアプリケーションフレームワーク「Laravel」をLinuxサーバにセットアップする方法を紹介します。

最近話題のPHPフレームワーク「Laravel」をLinuxサーバにセットアップする手順を紹介します。

Composerのインストール

まずはLaravelのセットアップに必須の「Composer」をインストールします。
すでにComposerをインストール済みである場合は次へ進んでください。

Composer公式サイトのガイドに従ってインストールしていきます。
以下の例はVersion 1.9.1のものです。

# mkdir /tmp/php
# cd /tmp/php
# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"    <--- やらなくても良い
# php composer-setup.php
# php -r "unlink('composer-setup.php');"
# mv composer.phar /usr/local/bin/composer
# composer -v

Laravelプロジェクトの生成

以下のようにcomposerコマンドにてLaravelプロジェクトを生成します。
以下の例では、「/var/www/html」ディレクトリの場所に「lara」という名前でLaravelのバージョン「5.8」のプロジェクトを生成します。

# composer create-project laravel/laravel --prefer-dist /var/www/html/lara 5.8
  • rootでcomposerを実行することは推奨されていない旨のメッセージが表示されますが、Enterキーを押下するとそのまま続行します。

必要なパーミッションを設定します。

# cd /var/www/html/lara
# chmod -R 777 storage
# chmod -R 777 bootstrap/cache

RedHat/CentOSサーバなど、SELinuxを有効にしている場合は生成したLaravelプロジェクトディレクトリに書き込み権限を与えておきます。

# semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/lara(/.*)?"
# restorecon -RFv /var/www/html/lara*

Webサーバの設定

LaravelのようなPHPフレームワークはインストールしただけでは動作しないものが多いようです。
特にセキュリティ面を向上させたWebサーバの場合、設定を変更する箇所が発生します。

以下ではWebサーバとしてApache2.4を想定した例を示します。

httpd.conf設定

このままではLaravelプロジェクトにアクセスするためには「http://Webサーバ/lara/public」にアクセスしないと正しく表示されません(http://Webサーバ/laraにアクセスすると「403 Forbidden」になってしまう)。

「http://Webサーバ/lara/」のURLでアクセスできるようにhttpd.confファイルにエイリアスを設定します。
※dockerの場合、「/etc/apache2/sites-available/000-default.conf」に設定するケースもあります。

#-----------------------------------------------------------------
#  for Laravel
#-----------------------------------------------------------------
Alias /lara/ "/var/www/html/lara/public/"

<Directory "/var/www/html/lara/public">
    Options FollowSymLinks <-------------------------------- ①
    AllowOverride All <------------------------------------- ②
    Require all granted
</Directory>
  • ① LaravelでのURI操作を有効にします(これがないと「403 Forbidden」になってしまいます)
  • ②.htaccessを有効にします

public/.htaccess設定

Laravelプロジェクトのディレクトリ下にある「public」ディレクトリにある「.htaccess」を編集します。

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>
    Options +FollowSymLinks  <-------------------- ①

    RewriteEngine On
    RewriteBase /lara  <-------------------------- ②

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
  • ① Webサーバ側で「FollowSymLinks」を設定できない環境の場合、ここで設定します。
  • ②ドキュメントルート以外にLaravelをセットアップする際にはエイリアス名(例では「lara」)を指定します。
     これを指定しないとルーティング時に「500 Internal Server Error」が発生します。

Dockerの場合の注意点

Dockerを利用する際、「php:7.2-apache」イメージを使った場合、初期設定ではApacheのmod_rewriteが有効になっていません。そのままではLaravelのルーティングができません。
したがって次のようにmod_rewriteを有効にする必要があります。

Dockerホスト側からコンテナにログインします。

$ docker container exec -it コンテナID bash

コンテナ側で「/etc/apache2/mods-enabled」に「/etc/apache2/mods-available/rewrite.load」のリンクを作成します。

# cd /etc/apache2/mods-enabled
# ln -s ../mods-available/rewrite.load rewrite.load
# exit

apacheを再起動、またはコンテナを再起動します。

動作確認

動作確認用コードの追記

動作確認用に、Laravelプロジェクト内「routes/web.php」に下記コードを追記します。

 :
Route::get('/', function () {
    //return view('welcome'); <------ コメントアウト
    return "Hello Laravel";
});

Route::get('/change', function () {
    return "Change Rooting";
});

動作確認

ブラウザにて下記にアクセスして正しい表示になることを確認します。

  • 「http://Webサーバ/lara」にアクセスすると「Hello Laravel」が表示されること。
  • 「http://Webサーバ/lara/change」にアクセスすると「Change Rooting」が表示されること。

 

ー 以上 ー

 CMSを使ったホームページ制作
 VPS, AWS等クラウドシステム構築
等々のご依頼承っております