このサイトのリンクには広告リンクが含まれます。

Laravel初心者がレンタルサーバでデプロイするまで

この記事は約17分で読めます。

Laravel勉強のために、Windowsでの環境構築からレンタルサーバへデプロイ(公開)するまでの作業をまとめました。

ざっくりと書いたので、わかりにくい時は後半で紹介している参考書籍やサイトを見てみて下さい。

作業環境については以下の通りです。

ローカル環境Windows 10 Home(バージョン22H2)
LaravelバージョンLaravel Framework 11.2.0
レンタルサーバコアサーバー(プランCORE-A)
  1. レンタルサーバの機能の確認
    1. SSHが使えるか確認
    2. PHPのバージョンを確認
    3. データベースの仕様を確認
  2. ローカル開発環境の構築
    1. Dockerを使ったLaravel環境のイメージ
    2. 環境構築の流れ
    3. 環境構築の詳細
      1. WSL2(Ubuntu)のインストール
      2. Docker Desktopのインストール
      3. Ubuntu上でLaravelプロジェクトを作成
      4. Ubuntu上でLaravel Sailを起動
      5. ブラウザでLaravelのホーム画面を確認
      6. VSCodeのインストール
      7. VSCodeに拡張機能「Remote Development」をインストール
      8. docker-compose.ymlファイルにphpmyadminの設定を追記
      9. Laravel Sailを再起動
      10. phpmyadminでデータベースを作成
      11. Laravelの設定ファイル(.env)のDB設定を編集
      12. Laravel Sailを再起動
      13. マイグレーションを行う
  3. ログイン機能の実装
  4. レンタルサーバでLaravelアプリを公開(デプロイ)する
    1. デプロイの流れ
    2. デプロイ作業の詳細
      1. プロジェクトディレクトリをzipアーカイブする
      2. データベースの内容をSQLでエクスポートする
      3. レンタルサーバにLaravel用のフォルダを作る
      4. zipファイルをアップロードして展開する
      5. レンタルサーバのデータベースにSQLファイルをインポートする
      6. .envファイルを修正する
      7. 公開用ディレクトりをpublicフォルダのシンボリックリンクに置き換える
  5. 参考にした書籍・サイト・動画
    1. Laravelの教科書
    2. LaravelのSailとDockerを使った開発環境構築方法(Windows/MacOS)
    3. Laravel 10 + Breezeでログイン画面を簡単に作成しよう
  6. まとめ

レンタルサーバの機能の確認

レンタルサーバ上にLaravelアプリをデプロイするためには、SSHが利用できる必要があります。

Laravelを動かすためのPHPのバージョンを確認します。

データベースの仕様はレンタルサーバによって違うので、開発環境のデータベースの設定をレンタルサーバに合わせる必要があります。

SSHが使えるか確認

コアサーバーはコントロールパネルの「サイト設定」「ツール/セキュリティー」からSHH接続を有効に出来ます。

PHPのバージョンを確認

Laravelはバージョンによって対応するPHPのバージョンも変わります。

利用するLaravelのバージョンは11なので、PHPは8.2か8.3が必要です。

引用:Laravel Versions

コアサーバはサイト単位でPHPのバージョンを変更可能です。

2024年4月現在でphp8.2が選べます。

データベースの仕様を確認

コアサーバーのDB名は名前の前にアカウント名が入ります。

開発環境でも同じ名前でデータベースを作成するとデプロイ作業が楽になります。

事前にデータベースを作成し、ユーザー名やパスワード、照合順序なども合わせておくと良いと思います。

ローカル開発環境の構築

レンタルサーバ環境の確認が終わったら、ローカル開発環境の構築に入ります。

Windows上でのLaravel開発環境は、大きく分けて

  • XAMPPを使った環境
  • Dockerを使った環境

の2種類があります。

この記事ではDockerを使った環境構築を行います。

Windows上でDockerを使ってLaravelの環境を構築するためには、WindowsがWSL2(Windows Subsystem for Linux)に対応している必要があります。
WSL 2 は、Windows 11または Windows 10 (バージョン 1903、ビルド 18362 以降) でのみ使用できます。(引用:WSL バージョンの比較
ちなみに、Windows10のバージョン表記は途中で数字4桁から〇〇H〇という表記に代わっています。.
また、WSL2はPCのハードウェアがHyper-Vに対応していないと使えません。
比較的新しいPCであれば心配ないと思いますが、古いPCを使い続けている場合は注意が必要です。

Dockerを使ったLaravel環境のイメージ

Dockerを使った環境のイメージが掴みにくかったので図にしました。

ざっくりと3つのOSが動いているイメージです。

  • ホストOSのWindows10
  • WSL上で動くUbuntu
  • Ubuntu上のDocker上で動くコンテナ(で動く各種サーバ)

複雑に見えますが、基本的には

  • UbuntuのコンソールからsailコマンドでDocker上のLaravelアプリをいじる
  • VSCodeでUbuntu上のLaravelプロジェクトファイルを編集する
  • ブラウザからDocker上のWebサーバにアクセスして結果を見る

という感じで開発を進めます。

Ubuntu上のLaravelプロジェクトのフォルダは、ネットワーク上の共有フォルダとしてアクセスできます。「\\wsl.localhost\Ubuntu\プロジェクトフォルダのパス」

Docker上で動くWebサーバには「localhost」でアクセスできます。

環境構築の流れ

まずは、最低限Laravelが動くまでの流れはこちら

  1. WSL2(Ubuntu)のインストール
  2. Docker Desktopのインストール
  3. Ubuntu上でLaravelプロジェクトを作成
  4. Ubuntu上でLaravel Sailを起動
  5. ブラウザでLaravelのホーム画面を確認

Laravelが動いたら、開発のための環境を整えます

  1. VSCodeのインストール
  2. VSCodeに拡張機能「Remote Development」をインストール
  3. docker-compose.ymlファイルにphpmyadminの設定を追記
  4. Laravel Sailを再起動
  5. phpmyadminでデータベースを作成
  6. Laravelの設定ファイル(.env)のDB設定を編集
  7. Laravel Sailを再起動
  8. マイグレーションを行う

これで、最低限の開発環境は整ったと思います。

後は必要に応じてVSCodeの拡張機能を入れたり、Windows Terminalなどのお気に入りのターミナルソフトをインストールしてください。

環境構築の詳細

WSL2(Ubuntu)のインストール

スタートメニューで「Windowsの機能」を検索して開き、「Linux用Windowsサブシステム」と「仮想マシンプラットフォーム」にチェックが付いていたらインストール済みです。

無ければ、PowerShellで以下のコマンド使ってインストールします。

wsl --install

WSLをインストールすると、Linux(Ubuntu)用のユーザー名とパスワードの作成を求められます。

作ったアカウントは忘れないようにメモしておきましょう。

Docker Desktopのインストール

以下のページからDocker Desktopをダウンロードします。

Docker Desktop
Dockerデスクトップは、開発者向けの共同コンテナ化ソフトウェアです。 今すぐ Docker Desktop を Mac、Windows、または Linux でダウンロードしましょう。

ビミョーに日本語がおかしいですが、たぶんこのボタンで良いはず。

初回起動時に色々訊かれるけど「Skip」でOKです。

設定画面の「Resources」「WSL integration」の設定を以下のようにします。

  • 「Enable integration with my default WSL distro」にチェック
  • 「Ubuntu」をON

DockerとWSL上のUbuntuを統合するよ、という設定です。

Laravel開発では、DockerはUbuntu上のLaravel sailから使います。

Docker DesktopのUIは使いません。

Ubuntu上でLaravelプロジェクトを作成

Ubuntuのコンソール上でLaravelをインストールしたいディレクトリへ移動します。

私はユーザーホームにlaravelというディレクトリを作りました。

$ cd ~/laravel/

以下のコマンドを実行します。

curl -s https://laravel.build/プロジェクト名 | bash

curl -s https://laravel.build/test-project | bash

むちゃくちゃ時間かかります。

お茶でも飲んでゆっくり待ちましょう。

最後にパーミッション設定のためにパスワードを聞いてきます。

WSLをインストールした時に設定したパスワードを入力してください。

Ubuntu上でLaravel Sailを起動

Ubuntuのコンソール上でプロジェクトのフォルダに移動します。

cd test-project/

その後、以下のコマンドを実行します。

./vendor/bin/sail up

実行するとコンソールに処理は戻りません。

Ctrl+cで停止すると仮想環境も止まります。

複数のコンソールを開いて作業しましょう。

正常に起動するとDocker Desktop上からプロジェクト名のコンテナが動いていることが確認できます。

./vendor/bin/sail upは-dオプションを使う事でバックグラウンドで実行されます。

止める場合は./vendor/bin/sail stopを使います。

./vendor/bin/sail up -d
./vendor/bin/sail stop

ブラウザでLaravelのホーム画面を確認

下記のURLを開きます。

DOMAIN ERROR

Laravelの画面は表示されましたか?

VSCodeのインストール

VSCodeは、Microsoft storeからインストールできます。

Visual Studio Code - Windows に無料でダウンロードしてインストールする | Microsoft Store
Visual Studio Code is a free, lightweight, and extensible code editor for building web, desktop, and mobile applications...

Ubuntu上のLaravelプロジェクトフォルダに入った状態で、以下のコマンドを打つとLaravelのプロジェクトフォルダをワークディレクトリした状態でVSCodeが立ち上がってくれます。とっても便利。

code .

VSCodeに拡張機能「Remote Development」をインストール

Remote Developmentを入れることで、VSCodeからWSL上のUbuntuを直接扱えるようになります。

docker-compose.ymlファイルにphpmyadminの設定を追記

以下の内容をプロジェクトフォルダ内のdocker-compose.ymlファイルに追記します。

参考書籍「Laravelの教科書」(P82)より引用(PR)

    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        links:
            - mysql:mysql
        ports:
            - 8080:80
        environment:
            MYSQL_USERNAME: '${DB_USERNAME}'
            MYSQL_ROOT_PASSWORD: '{DB_PASSWORD}'
            PMA_HOST: mysql
        networks:
            - sail

Laravel Sailを再起動

Ctrl+cで止めて、再度コマンドで立ち上げます。

./vendor/bin/sail up

phpmyadminでデータベースを作成

以下のアドレスでphpmyadminにアクセスできます。

http://localhost:8080/

レンタルサーバのデータベースの内容に合わせて「データベース」と「ユーザアカウント」を作成してください。

sail上のMySQLのrootパスワードは、最初にSailを立ち上げた時の設定ファイル(.env)に設定されたDB_PASSWORDになります。

デフォルトでは「password」です。

Laravelの設定ファイル(.env)のDB設定を編集

Laravelのプロジェクトフォルダ内にある「.env」ファイルのDB設定ヵ所を編集します。

レンタルサーバのデータベースの内容に合わせます。

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=test_project < ここを編集
DB_USERNAME=sail < ここを編集
DB_PASSWORD=password < ここを編集

Laravel Sailを再起動

Ctrl+cで止めて、再度コマンドで立ち上げます。

./vendor/bin/sail up

マイグレーションを行う

マイグレーションを行って、データベース内に自動でテーブルを作成します。

./vendor/bin/sail artisan migrate

migrateはLaravelプロジェクト内にあるマイグレーションファイルの内容を基に自動的にデータベーステーブルを作成してくれる便利なコマンドです。

Laravelは、マイグレーションファイルにテーブル構成を記述しておくことで、デプロイや共同開発のための環境構築時に個別にデータベースをいじらなくても、自動でテーブルを作ることが可能になります。

ログイン機能の実装

サンプルとしてログイン機能を実装します。

と言ってもコードは書きません。

Ubuntu上でコマンドを打つだけです。

./vendor/bin/sail composer require laravel/breeze --dev

./vendor/bin/sail は、sailを使ってDocker上でコマンドを実行します。

composer は、PHPのパッケージ管理です。

require laravel/breeze –dev で、Laravelのbreezeパッケージを読み込みます。

./vendor/bin/sail artisan breeze:install

artisan は、Laravel用のコマンドです。

LaravelはPHPで動くので、サーバ上で直接実行する場合は「php artisan breeze:install」と入力しますが、sailコマンドを使う場合はphpの記述は要りません。

artisan breeze:install で、breezeをLaravelにインストールします。

インストール時に選択肢がでます。私は下の様に選択しました。

breezeをLaravelにインストールすると、ユーザー管理用のテーブル情報を持ったマイグレーションファイルが自動で作成されます。

migrate コマンドでマイグレーションを行います。

./vendor/bin/sail artisan migrate

これらの作業でLaravelアプリにログイン機能が実装されます。

レンタルサーバでLaravelアプリを公開(デプロイ)する

では、ローカル(の仮想環境)で作ったLaravelアプリをレンタルサーバにデプロイしていきます。

デプロイの流れ

デプロイの流れは以下の通り

  1. プロジェクトディレクトリをzipアーカイブする
  2. データベースの内容をSQLでエクスポートする
  3. レンタルサーバにLaravel用のフォルダを作る
  4. zipファイルをアップロードして展開する
  5. レンタルサーバのデータベースにローカルでエクスポートしたSQLファイルをインポートする
  6. .envファイルを修正する
  7. SSHで接続して公開用ディレクトりをLaravelのpublicフォルダのシンボリックリンクに置き換える

レンタルサーバへのファイルの転送には、

  • FTPで直接転送する
  • Gitを利用する
  • zipで圧縮して転送する

などの方法がありますが、今回はzipで転送します。

FTPで直接転送はむちゃくちゃ時間がかかるのでお勧めしません。

更新作業などを行う場合はGitを使うのが良いと思います。

今回はphpmyadminを利用して直接データベースの情報を書き換えています。

本来、Laravelではデータベースを直接いじらずマイグレーションなどLaravelの機能を利用するのが理想的です。

SSHが使えるのであれば、サーバ側にもcomposerやLaravelをインストールして、サーバ側でもマイグレーションが行える環境を作るのが良いと思います。

デプロイ作業の詳細

以下の作業はローカルの仮想環境(sail)が動いている状態で行います。

プロジェクトディレクトリをzipアーカイブする

Windows10ならば、右クリックの送るでzip圧縮が出来ます。

Ubuntu上のプロジェクトディレクトリをWindowsから見るには、

\\wsl.localhost\Ubuntu\プロジェクトディレクトリのパス

で表示できます。

データベースの内容をSQLでエクスポートする

ローカルのphpmyadminでデータベースを開き、エクスポートを利用してSQLファイルでデータベースをエクスポートします。

phpmyadminは以下のURLで開けます。

http://localhost:8080/

レンタルサーバにLaravel用のフォルダを作る

FTPでもサーバの管理画面のファイル管理機能でも良いので、レンタルサーバ上にLaravel用のフォルダを作ります。

Laravel用のフォルダの場所は、public_htmlの中ではなく、public_htmlと同じ階層に作ってください。

私は「laravel」という名前のフォルダを作りました。

zipファイルをアップロードして展開する

私が使っているレンタルサーバ(コアサーバー)には、zipでアップロードすると自動で展開してくれる機能があります。

ローカルで作ったzipファイルを指定してレンタルサーバにアップロードします。

アップロード先はさきほど作ったLaravel用のフォルダです。

ちょっと時間がかかるのでお茶でも飲みながら待ちましょう。

レンタルサーバのデータベースにSQLファイルをインポートする

ローカル側でエクスポートしたSQLファイルをレンタルサーバ側にインポートします。

データベース自体はレンタルサーバの管理画面で作成しておいてください。

テーブルが何もない状態でインポートを行います。

.envファイルを修正する

サーバにアップロードしたプロジェクトフォルダ内の.envファイルを編集します。

環境構築の段階で「データベース名」「ユーザー名」「パスワード」はレンタルサーバと同じにしてあると思います。

ホスト名は変えていなかったので、この段階でレンタルサーバのホスト名に変更します。

DB_CONNECTION=mysql
DB_HOST=localhost < ここを変える(変更済み)
DB_PORT=3306
DB_DATABASE=データベース名
DB_USERNAME=ユーザー名
DB_PASSWORD=パスワード

公開用ディレクトりをpublicフォルダのシンボリックリンクに置き換える

レンタルサーバで複数のサイトを公開している場合は、public_htmlフォルダ内に公開用のフォルダが入っていると思います。

Laravelでは、公開用のファイルがプロジェクトフォルダ内のpublicフォルダに入っています。

Laravelアプリを公開するためには、公開用のフォルダをLaravelプロジェクトフォルダ内のpublicフォルダのシンボリックリンクに差し替えます。

シンボリックリンクの作成にはSSHでの接続が必要です。

SSH接続方法はレンタルサーバによって違います。

コアサーバでは、管理画面のSSH接続IP許可を行うと、UbuntuのSSHコマンドで接続できます。

ssh ユーザー名@サーバ名

SSH接続の詳細はレンタルサーバのマニュアルを参照してください。

サーバに接続出来たらpublic_htmlフォルダに移動して、公開用フォルダを削除します。

cd public_html/
rmdir laravel.ikaken.com/

私の場合は「/public_html/laravel.ikaken.com」となっていたので「laravel.ikaken.com」を削除しました。

そして、以下のコマンドでシンボリックリンクを作成します。

ln -s /virtual/ユーザー名/laravel/test-project/public ./laravel.ikaken.com

lsコマンドでちゃんと作成されたか確認してみましょう。

ls -al

これでデプロイ作業は完了です。

公開サーバのURLを開いてみて下さい。

Laravel

参考にした書籍・サイト・動画

この記事を書くにあたり参考にした書籍やサイト・動画を紹介します。

Laravelの教科書

記事内でも引用させていただきましたが、基本的にはこちらの書籍を参考にさせていただきました。

図やイラストも多くとても読みやすいのでお勧めです。

この記事で書いている環境構築部分はチャプター2の内容を参考にしています。

詳しく知りたい人は本買って読んでね。

Laravelの教科書 バージョン10対応 【Laravel11サポートガイドあり】 単行本(Amazon)

Laravelの教科書 バージョン10対応 Kindle版(Amazon)

LaravelのSailとDockerを使った開発環境構築方法(Windows/MacOS)

WSLからDockerのインストールがとても丁寧に説明されています。

LaravelのSailとDockerを使った開発環境構築方法(Windows/MacOS)
人気PHPフレームワーク“Laravel”の開発環境構築を解説します。環境構築やターミナル操作自体あまりしたことが無い、という初心者の方向けに、コピペ可能なコマンド、図解やスクリーンショットもたっぷりでお送りします。

Laravel 10 + Breezeでログイン画面を簡単に作成しよう

上で紹介したLaravelの教科書の内容をベースにLaravel環境構築からログイン機能の実装までとても丁寧に説明してくれている動画です。

まとめ

Laravel初心者の私がWindowsにLaravelの環境を構築してレンタルサーバへデプロイするまでを書いてみましたがどうでしたでしょうか?

特にレンタルサーバへのデプロイの情報が少なくて苦労しました。

結局は単純にコピーするという力業を使いましたが、本来はサーバ側にもLaravelが使える環境を整えるべきだと思います。

とりあえず動くことが確認できたので、Gitの利用やサーバ側のLaravel環境の構築などもやっていきたいと思っています。

もっとこうすると良いよ、とか、こういうやり方もあるよ、などの情報がありましたらコメント欄で教えてもらえると嬉しいです。

この記事が参考になったら下の「参考になった」ボタンをお願いいたします。

では、良いLaravelライフを~

コメント

  1. tq2ipb

  2. 13go2w

タイトルとURLをコピーしました