Help us understand the problem. What is going on with this article?

Laravelアプリケーションをレンタルサーバーで動作させる

More than 1 year has passed since last update.

この記事は、「【連載】初めてのWindows用Laravel 5.7開発環境構築入門」の子記事です。環境などの条件は、親記事をご覧ください。


 連載最後の今回は、これまでに作成したLaravelアプリケーションをレンタルサーバーで動作させます。

 Laravelは特別な設定なく一般的なレンタルサーバーで動作させられるため、サーバーを選ばずに利用することができます。ただし、動作条件がかなり最新バージョンを必要とするので、古いサーバーでは動作させられません。

 今回はレンタルサーバーでよく利用されている管理ソフト「cPanel」での操作を前提に説明していきますが、他の管理ソフトや環境でも問題ないはずです。

サーバーの準備

 今回準備したテストサーバーは、http://laraveltest.mirai-it.com というドメインを割り当てています。
image.png

ブラウザから http://laraveltest.mirai-it.com にアクセスすると、ほぼ空っぽです。

image.png

初期状態のファイル構成は:
image.png

【重要】サーバーのPHPが7.1.3以上であることを、確認します。

データベースの作成

MySQLデータベースを作成します。
image.png

今回は以下のように作成しました。
データベース名:laravelt_test
ユーザー名:laravelt_test
パスワード:

忘れずに、作成したユーザーに権限を割り当てます。
image.png

image.png

データをローカルPCからコピーする

今回は、いまローカルPCで動作しているアプリをそのままアップすることにしたいので、データをローカルからサーバーにコピーします。

HeidiSQLを開けて、Localhostのlaravelexampleを右クリックし、「データベースをSQLとしてエクスポート」します。
image.png

テーブルの作成を選択、データの挿入を選択、ファイル指定を開始。
image.png

保存先はデスクトップとして、ファイル名に「laraveltest」を指定し、保存。
image.png

ファイルが設定されていることを確認して、エクスポート。
image.png

デスクトップにダンプファイルができます。
image.png

サーバー上のphpMyAdminを開いて
image.png

laravelt_testデータベースの、インポートタブで、ファイルを選択。
image.png

image.png

ファイルを指定したら実行します。

image.png

正常終了したら、テーブルがインポートされているのが見えます。

image.png

ユーザー情報もコピーされています。

image.png

ファイルをアップロードする

FTPソフトを使って、サーバーに接続します。(ここはサーバーごとに違うので説明は省きます)

image.png

このサーバーの場合、public_htmlが公開用ドキュメントルートです。

ファイルのアップロードは、Laravel本体やコントローラなどのプログラムコードが入った非公開ファイルと、画像、CSS、JavaScriptなどの公開ファイルで2つに分けます。

非公開フォルダのアップロード

Laravelプロジェクトのpublicフォルダ以外がすべて非公開ファイルです。

まずは非公開ファイルを入れるフォルダをサーバーに作ります。ここではlaravelappフォルダにします。
公開用ドキュメントルート(ここではpublic_html)と同じ階層に作成します。

image.png

作成したフォルダに、ローカルPCの公開フォルダ(public)以外すべてをコピーします。

image.png

つぎに、サーバーの公開用ドキュメントルート(public_html)に、ローカルPCのpublicフォルダの中身をすべてコピーします。

image.png

エラーの確認

まだ設定は残っていますが、ブラウザを開いて「http://[あなたのドメイン]」にアクセスしてみましょう。(今回の場合 http://laraveltest.mirai-it.com

image.png

当然エラーが出ますが、もし何も出ずに真っ白の場合は、サーバーの設定でPHPのエラー表示がオフになっているので、オンにしましょう。エラー表示を頼りに、サーバーの設定を行っていくことになります。

公開用フォルダからLaravelアプリフォルダに接続する

上に出ているエラーの1つ目は、「index.phpに書かれているvendor/autoload.phpが見つからない」という意味です。

FTPソフトや、サーバーのファイルマネージャーから、ドキュメントルートのindex.phpを編集モードで開きます。
image.png

image.png

すると上のように「自分のフォルダ/../vendor/autoload.php」を見に行っているので、これを今回設置した条件に合わせます。
今回はドキュメントルートの並びのlaravelappフォルダをアプリフォルダとしたので、

require __DIR__.'/../laravelapp/vendor/autoload.php';

と記述を変更します。
同様に、
image.png

この記述も

$app = require_once __DIR__.'/../laravelapp/bootstrap/app.php';

にします。最後に保存します。

アプリフォルダ接続の動作テスト

ブラウザでリロードすると、Laravelトップページが見えるはずです。
image.png

ちなみに、もし↓これが出たら、PHPのバージョンが合ってない可能性が高いので、再確認してください。
image.png

データベースとの接続

次に、ブラウザで「http://[あなたのドメイン]/users」にアクセスしてみます。(今回の場合 http://laraveltest.mirai-it.com/users

image.png

データベースへのアクセスが拒否された(Access denied for user)と出ていますね。データベースへの接続設定はしていないので当然です。

FTPソフトや、サーバーのファイルマネージャーから、アプリフォルダ(laravelapp)の.envを編集モードで開きます。
image.png

image.png

APP_URLと、データベース設定のところをサーバーに合わせて設定し、保存します。

  • DB_CONNECTION そのままでOK
  • DB_HOST そのままでOKの場合が多いですが、たまに別のIPアドレスやサーバー名を指定されることがあります。
  • DB_PORT そのままでOKの場合が多い
  • DB_DATABASE 上で作ったデータベースの名前
  • DB_USERNAME 上で作ったユーザー名
  • DB_PASSWORD 上で作ったユーザーのパスワード

データベース動作テスト

image.png
image.png

OKですね。

パブリックディスクの設定

 今回のサンプルアプリはこれで動作OKですが、もうひとつやるべき設定があります。
 多くのアプリではファイルのアップロードがあり、アップロードされたファイルはサーバー上のフォルダに格納されるわけですが、Laravelでは[プロジェクトフォルダ/]storage/app/publicに実態が格納されているため、publicじゃないのでブラウザからアクセスできません。そのため、public/storageからstorage/app/publicにシンボリックリンクを張る必要があります。詳しくはこちら

サーバー上の公開用ドキュメントルート(public_html)フォルダにcreatesymlink.phpを作ります。
image.png
image.png

 この中に、シンボリックリンクを作るコードを書き込みます。

createsymlink.php
<?php
symlink('[storage/app/publicへのフルパス]', '[public_htmlへのフルパス]/storage');

ここで言うフルパスはサーバーによって違いますので、慎重に調べてください。
今回サンプルで使っているサーバーは以下のようになりました。

image.png

できたら保存して、ブラウザ上からこのプログラムにアクセスします。

image.png

真っ白ですが、エラーも出てないのでOKと思われます。確認しましょう。

image.png

できてるっぽいですね。FTPソフトで見るとファイルに見えてます。
image.png

見えにくいですが、アイコンも「ショートカット」っぽアイコンですね。

これですべての設定が終わりです。お疲れ様でした。

hitotch
お仕事や協力開発、越境相談など大歓迎。 松下電器産業株式会社(現パナソニック)でレッツノートを設計、ホイールパッドなどを発明。2007年ニューヨークにて独立し、主に在米日系企業のシステム開発を請け負うかたわら、暇を見つけては新技術に触れてニタニタしています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした