この記事は、「【連載】初めてのWindows用Laravel 5.7開発環境構築入門」の子記事です。環境などの条件は、親記事をご覧ください。
連載最後の今回は、これまでに作成したLaravelアプリケーションをレンタルサーバーで動作させます。
Laravelは特別な設定なく一般的なレンタルサーバーで動作させられるため、サーバーを選ばずに利用することができます。ただし、動作条件がかなり最新バージョンを必要とするので、古いサーバーでは動作させられません。
今回はレンタルサーバーでよく利用されている管理ソフト「cPanel」での操作を前提に説明していきますが、他の管理ソフトや環境でも問題ないはずです。
サーバーの準備
今回準備したテストサーバーは、http://laraveltest.mirai-it.com というドメインを割り当てています。
ブラウザから http://laraveltest.mirai-it.com にアクセスすると、ほぼ空っぽです。
【重要】サーバーのPHPが7.1.3以上であることを、確認します。
データベースの作成
今回は以下のように作成しました。
データベース名:laravelt_test
ユーザー名:laravelt_test
パスワード:
データをローカルPCからコピーする
今回は、いまローカルPCで動作しているアプリをそのままアップすることにしたいので、データをローカルからサーバーにコピーします。
HeidiSQLを開けて、Localhostのlaravelexampleを右クリックし、「データベースをSQLとしてエクスポート」します。
テーブルの作成を選択、データの挿入を選択、ファイル指定を開始。
保存先はデスクトップとして、ファイル名に「laraveltest」を指定し、保存。
laravelt_testデータベースの、インポートタブで、ファイルを選択。
ファイルを指定したら実行します。
正常終了したら、テーブルがインポートされているのが見えます。
ユーザー情報もコピーされています。
ファイルをアップロードする
FTPソフトを使って、サーバーに接続します。(ここはサーバーごとに違うので説明は省きます)
このサーバーの場合、public_htmlが公開用ドキュメントルートです。
ファイルのアップロードは、Laravel本体やコントローラなどのプログラムコードが入った非公開ファイルと、画像、CSS、JavaScriptなどの公開ファイルで2つに分けます。
非公開フォルダのアップロード
Laravelプロジェクトのpublicフォルダ以外がすべて非公開ファイルです。
まずは非公開ファイルを入れるフォルダをサーバーに作ります。ここではlaravelapp
フォルダにします。
公開用ドキュメントルート(ここではpublic_html)と同じ階層に作成します。
作成したフォルダに、ローカルPCの公開フォルダ(public)以外すべてをコピーします。
つぎに、サーバーの公開用ドキュメントルート(public_html)に、ローカルPCのpublicフォルダの中身をすべてコピーします。
エラーの確認
まだ設定は残っていますが、ブラウザを開いて「http://[あなたのドメイン]」にアクセスしてみましょう。(今回の場合 http://laraveltest.mirai-it.com )
当然エラーが出ますが、もし何も出ずに真っ白の場合は、サーバーの設定でPHPのエラー表示がオフになっているので、オンにしましょう。エラー表示を頼りに、サーバーの設定を行っていくことになります。
公開用フォルダからLaravelアプリフォルダに接続する
上に出ているエラーの1つ目は、「index.phpに書かれているvendor/autoload.phpが見つからない」という意味です。
FTPソフトや、サーバーのファイルマネージャーから、ドキュメントルートのindex.phpを編集モードで開きます。
すると上のように「自分のフォルダ/../vendor/autoload.php」を見に行っているので、これを今回設置した条件に合わせます。
今回はドキュメントルートの並びのlaravelappフォルダをアプリフォルダとしたので、
require __DIR__.'/../laravelapp/vendor/autoload.php';
この記述も
$app = require_once __DIR__.'/../laravelapp/bootstrap/app.php';
にします。最後に保存します。
アプリフォルダ接続の動作テスト
ブラウザでリロードすると、Laravelトップページが見えるはずです。
ちなみに、もし↓これが出たら、PHPのバージョンが合ってない可能性が高いので、再確認してください。
データベースとの接続
次に、ブラウザで「http://[あなたのドメイン]/users」にアクセスしてみます。(今回の場合 http://laraveltest.mirai-it.com/users )
データベースへのアクセスが拒否された(Access denied for user)と出ていますね。データベースへの接続設定はしていないので当然です。
FTPソフトや、サーバーのファイルマネージャーから、アプリフォルダ(laravelapp)の.envを編集モードで開きます。
APP_URLと、データベース設定のところをサーバーに合わせて設定し、保存します。
- DB_CONNECTION そのままでOK
- DB_HOST そのままでOKの場合が多いですが、たまに別のIPアドレスやサーバー名を指定されることがあります。
- DB_PORT そのままでOKの場合が多い
- DB_DATABASE 上で作ったデータベースの名前
- DB_USERNAME 上で作ったユーザー名
- DB_PASSWORD 上で作ったユーザーのパスワード
データベース動作テスト
OKですね。
パブリックディスクの設定
今回のサンプルアプリはこれで動作OKですが、もうひとつやるべき設定があります。
多くのアプリではファイルのアップロードがあり、アップロードされたファイルはサーバー上のフォルダに格納されるわけですが、Laravelでは[プロジェクトフォルダ/]storage/app/public
に実態が格納されているため、publicじゃないのでブラウザからアクセスできません。そのため、public/storage
からstorage/app/public
にシンボリックリンクを張る必要があります。詳しくはこちら。
サーバー上の公開用ドキュメントルート(public_html)フォルダにcreatesymlink.php
を作ります。
この中に、シンボリックリンクを作るコードを書き込みます。
<?php
symlink('[storage/app/publicへのフルパス]', '[public_htmlへのフルパス]/storage');
ここで言うフルパスはサーバーによって違いますので、慎重に調べてください。
今回サンプルで使っているサーバーは以下のようになりました。
できたら保存して、ブラウザ上からこのプログラムにアクセスします。
真っ白ですが、エラーも出てないのでOKと思われます。確認しましょう。
できてるっぽいですね。FTPソフトで見るとファイルに見えてます。
見えにくいですが、アイコンも「ショートカット」っぽアイコンですね。
これですべての設定が終わりです。お疲れ様でした。