Laravel勉強のために、Windowsでの環境構築からレンタルサーバへデプロイ(公開)するまでの作業をまとめました。
ざっくりと書いたので、わかりにくい時は後半で紹介している参考書籍やサイトを見てみて下さい。
作業環境については以下の通りです。
ローカル環境 | Windows 10 Home(バージョン22H2) |
Laravelバージョン | Laravel Framework 11.2.0 |
レンタルサーバ | コアサーバー(プランCORE-A) |
レンタルサーバの機能の確認
レンタルサーバ上にLaravelアプリをデプロイするためには、SSHが利用できる必要があります。
Laravelを動かすためのPHPのバージョンを確認します。
データベースの仕様はレンタルサーバによって違うので、開発環境のデータベースの設定をレンタルサーバに合わせる必要があります。
SSHが使えるか確認
コアサーバーはコントロールパネルの「サイト設定」「ツール/セキュリティー」からSHH接続を有効に出来ます。
PHPのバージョンを確認
Laravelはバージョンによって対応するPHPのバージョンも変わります。
利用するLaravelのバージョンは11なので、PHPは8.2か8.3が必要です。
コアサーバはサイト単位で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が動くまでの流れはこちら
- WSL2(Ubuntu)のインストール
- Docker Desktopのインストール
- Ubuntu上でLaravelプロジェクトを作成
- Ubuntu上でLaravel Sailを起動
- ブラウザでLaravelのホーム画面を確認
Laravelが動いたら、開発のための環境を整えます
- VSCodeのインストール
- VSCodeに拡張機能「Remote Development」をインストール
- docker-compose.ymlファイルにphpmyadminの設定を追記
- Laravel Sailを再起動
- phpmyadminでデータベースを作成
- Laravelの設定ファイル(.env)のDB設定を編集
- Laravel Sailを再起動
- マイグレーションを行う
これで、最低限の開発環境は整ったと思います。
後は必要に応じてVSCodeの拡張機能を入れたり、Windows Terminalなどのお気に入りのターミナルソフトをインストールしてください。
環境構築の詳細
WSL2(Ubuntu)のインストール
スタートメニューで「Windowsの機能」を検索して開き、「Linux用Windowsサブシステム」と「仮想マシンプラットフォーム」にチェックが付いていたらインストール済みです。
無ければ、PowerShellで以下のコマンド使ってインストールします。
wsl --install
WSLをインストールすると、Linux(Ubuntu)用のユーザー名とパスワードの作成を求められます。
作ったアカウントは忘れないようにメモしておきましょう。
Docker Desktopのインストール
以下のページからDocker Desktopをダウンロードします。
ビミョーに日本語がおかしいですが、たぶんこのボタンで良いはず。
初回起動時に色々訊かれるけど「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を開きます。
Laravelの画面は表示されましたか?
VSCodeのインストール
VSCodeは、Microsoft storeからインストールできます。
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にアクセスできます。
レンタルサーバのデータベースの内容に合わせて「データベース」と「ユーザアカウント」を作成してください。
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アプリをレンタルサーバにデプロイしていきます。
デプロイの流れ
デプロイの流れは以下の通り
- プロジェクトディレクトリをzipアーカイブする
- データベースの内容をSQLでエクスポートする
- レンタルサーバにLaravel用のフォルダを作る
- zipファイルをアップロードして展開する
- レンタルサーバのデータベースにローカルでエクスポートしたSQLファイルをインポートする
- .envファイルを修正する
- 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で開けます。
レンタルサーバに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の教科書
記事内でも引用させていただきましたが、基本的にはこちらの書籍を参考にさせていただきました。
図やイラストも多くとても読みやすいのでお勧めです。
この記事で書いている環境構築部分はチャプター2の内容を参考にしています。
詳しく知りたい人は本買って読んでね。
Laravelの教科書 バージョン10対応 【Laravel11サポートガイドあり】 単行本(Amazon)
Laravelの教科書 バージョン10対応 Kindle版(Amazon)
LaravelのSailとDockerを使った開発環境構築方法(Windows/MacOS)
WSLからDockerのインストールがとても丁寧に説明されています。
Laravel 10 + Breezeでログイン画面を簡単に作成しよう
上で紹介したLaravelの教科書の内容をベースにLaravel環境構築からログイン機能の実装までとても丁寧に説明してくれている動画です。
まとめ
Laravel初心者の私がWindowsにLaravelの環境を構築してレンタルサーバへデプロイするまでを書いてみましたがどうでしたでしょうか?
特にレンタルサーバへのデプロイの情報が少なくて苦労しました。
結局は単純にコピーするという力業を使いましたが、本来はサーバ側にもLaravelが使える環境を整えるべきだと思います。
とりあえず動くことが確認できたので、Gitの利用やサーバ側のLaravel環境の構築などもやっていきたいと思っています。
もっとこうすると良いよ、とか、こういうやり方もあるよ、などの情報がありましたらコメント欄で教えてもらえると嬉しいです。
この記事が参考になったら下の「参考になった」ボタンをお願いいたします。
では、良いLaravelライフを~
コメント
tq2ipb
13go2w