Laravel Homestead
はじめに
Laravelは、PHP開発全体のエクスペリエンスを楽しいものにすることを目指しており、ローカル開発環境も含まれます。Laravel Homestead は、PHPやWebサーバー、その他のサーバーソフトウェアをローカルマシンにインストールする必要がなく、素晴らしい開発環境を提供する公式の事前パッケージ化されたVagrantボックスです。
Vagrantは、仮想マシンを管理およびプロビジョニングするためのシンプルでエレガントな方法を提供します。Vagrantボックスは完全に使い捨て可能です。何か問題が発生した場合、ボックスを破棄して数分で再作成できます!
Homesteadは、Windows、macOS、またはLinuxシステムで実行され、Nginx、PHP、MySQL、PostgreSQL、Redis、Memcached、Nodeなど、素晴らしいLaravelアプリケーションを開発するために必要なすべてのソフトウェアが含まれています。
Windowsを使用している 場合、ハードウェア仮想化(VT-x)を有効にする必要がある場合があります。通常、BIOSから有効にできます。UEFIシステムでHyper-Vを使用している場合、VT-xにアクセスするためにHyper-Vを無効にする必要がある場合があります。
含まれるソフトウェア
- Ubuntu 22.04
- Git
- PHP 8.3
- PHP 8.2
- PHP 8.1
- PHP 8.0
- PHP 7.4
- PHP 7.3
- PHP 7.2
- PHP 7.1
- PHP 7.0
- PHP 5.6
- Nginx
- MySQL 8.0
- lmm
- Sqlite3
- PostgreSQL 15
- Composer
- Docker
- Node(Yarn、Bower、Grunt、Gulpを含む)
- Redis
- Memcached
- Beanstalkd
- Mailpit
- avahi
- ngrok
- Xdebug
- XHProf / Tideways / XHGui
- wp-cli
オプションのソフトウェア
- Apache
- Blackfire
- Cassandra
- Chronograf
- CouchDB
- Crystal & Lucky Framework
- Elasticsearch
- EventStoreDB
- Flyway
- Gearman
- Go
- Grafana
- InfluxDB
- Logstash
- MariaDB
- Meilisearch
- MinIO
- MongoDB
- Neo4j
- Oh My Zsh
- Open Resty
- PM2
- Python
- R
- RabbitMQ
- Rust
- RVM(Ruby Version Manager)
- Solr
- TimescaleDB
- Trader (PHP拡張機能)
- Webdriver & Laravel Dusk Utilities
インストールとセットアップ
最初のステップ
Homestead環境を起動する前に、Vagrantをインストールし、以下のサポートされているプロバイダーの1つをインストールする必要があります:
これらのソフトウェアパッケージは、すべての人気のあるオペレーティングシステムに対して使いやすいビジュアルインストーラを提供しています。
Parallels プロバイダを使用するには、Parallels Vagrant プラグインをインストールする必要があり ます。これは無料です。
Homestead のインストール
Homestead を使用するには、Homestead リポジトリをホストマシンにクローンしてインストールすることができます。Homestead 仮想マシンは、すべての Laravel アプリケーションのホストとして機能しますので、リポジトリを "ホーム" ディレクトリ内の Homestead
フォルダにクローンすることをお勧めします。このドキュメントでは、このディレクトリを "Homestead ディレクトリ" と呼びます:
git clone https://github.com/laravel/homestead.git ~/Homestead
Laravel Homestead リポジトリをクローンした後は、release
ブランチをチェックアウトする必要があります。このブランチには常に最新の安定版の Homestead が含まれています:
cd ~/Homestead
git checkout release
次に、Homestead ディレクトリから bash init.sh
コマンドを実行して、Homestead.yaml
構成ファイルを作成します。Homestead.yaml
ファイルは、Homestead インストールのすべての設定を構成する場所です。このファイルは Homestead ディレクトリに配置されます:
# macOS / Linux...
bash init.sh
# Windows...
init.bat
Homestead の設定
プロバイダの設定
Homestead.yaml
ファイルの provider
キーは、使用する Vagrant プロバイダを示します:virtualbox
または parallels
:
provider: virtualbox
Apple Silicon を使用している場合は、Parallels プロバイダが必要です。
共有フォルダの設定
Homestead.yaml
ファイルの folders
プロパティには、Homestead 環境と共有したいすべてのフォルダがリストされています。これらのフォルダ内のファイルが変更されると、ローカルマシンとHomestead 仮想環境の間で同期されます。必要なだけ多くの共有フォルダを構成できます:
folders:
- map: ~/code/project1
to: /home/vagrant/project1
Windowsユーザーは~/
パス構文を使用せず、代わりにC:\Users\user\Code\project1
などのプロジェクトのフルパスを使用する必要があります。
すべてのアプリケーションを1つの大きなディレクトリにマッピングするのではなく、個々のアプリケーションをそれぞれのフォルダマッピングにマッピングする必要があります。フォルダをマッピングすると、仮想マシンはフォルダ内のすべてのファイルのディスクIOを追跡する必要があります。フォルダ内に多数のファイルがある場合、パフォーマンスが低下する可能性があります:
folders:
- map: ~/code/project1
to: /home/vagrant/project1
- map: ~/code/project2
to: /home/vagrant/project2
Homesteadを使用する際に.
(現在のディレクトリ)をマウントしないでください。これにより、Vagrantが現在のフォルダを/vagrant
にマップしなくなり、オプションの機能が壊れたり、プロビジョニング中に予期しない結果が発生する可能性があります。
NFSを有効にするには、フォルダマッピングにtype
オプションを追加できます:
folders:
- map: ~/code/project1
to: /home/vagrant/project1
type: "nfs"
WindowsでNFSを使用する場合は、vagrant-winnfsdプラグインをインストールすることを検討してください。このプラグインは、Homestead仮想マシン内のファイルとディレクトリの正しいユーザー/グループ権限を維持します。
VagrantのSynced Foldersでサポートされているオプションをoptions
キーの下にリストアップすることで、任意のオプションを渡すこともできます:
folders:
- map: ~/code/project1
to: /home/vagrant/project1
type: "rsync"
options:
rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
rsync__exclude: ["node_modules"]
Nginxサイトの設定
Nginxに慣れていなくても問題ありません。Homestead.yaml
ファイルのsites
プロパティを使用すると、Homestead環境のフォルダを"ドメイン"に簡単にマッピングできます。Homestead.yaml
ファイルにはサンプルサイト構成が含まれています。必要に応じて、Homestead環境に複数のサイトを追加できます。Homesteadは、作業中のすべてのLaravelアプリケーションに便利な仮想化環境として機能する可能性があります:
sites:
- map: homestead.test
to: /home/vagrant/project1/public
Homestead仮想マシンをプロビジョニングした後にsites
プロパティを変更した場合は、ターミナルでvagrant reload --provision
コマンドを実行して、仮想マシン上のNginx構成を更新する必要があります。
ホームステッドスクリプトはできるだけ冪等性を持つように構築されています。ただし、プロビジョニング中に問題が発生した場合は、vagrant destroy && vagrant up
コマンドを実行してマシンを破棄して再構築する必要があります。
ホスト名の解決
Homestead は、mDNS
を使用してホスト名を自動的に解決するために公開します。Homestead.yaml
ファイルで hostname: homestead
を設定すると、ホストは homestead.local
で利用可能になります。macOS、iOS、および Linux デスクトップディストリビューションには、デフォルトで mDNS
サポートが含まれています。Windows を使用している場合は、Bonjour Print Services for Windows をインストールする必要があります。
自動ホスト名を使用すると、Homestead のプロジェクトごとのインストールに最適です。1つの Homestead インスタンスで複数のサイトをホストする場合は、Web サイトの "domains" をマシンの hosts
ファイルに追加することができます。hosts
ファイルは、Homestead サイトへのリクエストを Homestead 仮想マシンにリダイレクトします。macOS と Linux では、このファイルは /etc/hosts
にあります。Windows では、C:\Windows\System32\drivers\etc\hosts
にあります。このファイルに追加する行は次のようになります:
192.168.56.56 homestead.test
Homestead.yaml
ファイルで設定された IP アドレスがリストされていることを確認してください。ドメインを hosts
ファイルに追加し、Vagrant ボックスを起動したら、ウェブブラウザを使用してサイトにアクセスできるようになります:
http://homestead.test
サービスの設定
Homestead はデフォルトでいくつかのサービスを起動しますが、プロビジョニング中に有効または無効にするサービスをカスタマイズすることができます。たとえば、Homestead.yaml
ファイル内の services
オプションを変更して、PostgreSQL を有効にし、MySQL を無効にすることができます:
services:
- enabled:
- "postgresql"
- disabled:
- "mysql"
指定されたサービスは、enabled
および disabled
ディレクティブ内の順序に基づいて開始または停止されます。
Vagrant ボックスの起動
Homestead.yaml
を編集したら、Homesteadディレクトリからvagrant up
コマンドを実行してください。Vagrantは仮想マシンを起動し、自動的に共有フォルダとNginxサイトを構成します。
マシンを破棄するには、vagrant destroy
コマンドを使用できます。
プロジェクトごとのインストール
Homesteadをグローバルにインストールしてすべてのプロジェクトで同じHomestead仮想マシンを共有する代わりに、管理する各プロジェクトに対してHomesteadインスタンスを構成することができます。プロジェクトごとにHomesteadをインストールすると、プロジェクトのリポジトリをクローンした後すぐに他のプロジェクトメンバーがvagrant up
できるようにするため、Vagrantfile
をプロジェクトに同梱することができます。
Composerパッケージマネージャを使用して プロジェクトにHomesteadをインストールできます:
composer require laravel/homestead --dev
Homesteadをインストールしたら、Homesteadのmake
コマンドを呼び出してプロジェクト用のVagrantfile
とHomestead.yaml
ファイルを生成してください。これらのファイルはプロジェクトのルートに配置されます。make
コマンドはHomestead.yaml
ファイル内のsites
およびfolders
ディレクティブを自動的に構成します:
# macOS / Linux...
php vendor/bin/homestead make
# Windows...
vendor\\bin\\homestead make
次に、ターミナルでvagrant up
コマンドを実行し、ブラウザでhttp://homestead.test
でプロジェクトにアクセスしてください。注意:homestead.test
のようなドメインを使用していない場合は、homestead.test
または選択したドメインの/etc/hosts
ファイルエントリを追加する必要があります。自動的なホスト名の解決を使用していない場合。
オプション機能のインストール
Homestead.yaml
ファイル内のfeatures
オプションを使用してオプションのソフトウェアをインストールできます。ほとんどの機能は真偽値で有効または無効にできますが、一部の機能は複数の構成オプションを許可します:
features:
- blackfire:
server_id: "server_id"
server_token: "server_value"
client_id: "client_id"
client_token: "client_value"
- cassandra: true
- chronograf: true
- couchdb: true
- crystal: true
- dragonflydb: true
- elasticsearch:
version: 7.9.0
- eventstore: true
version: 21.2.0
- flyway: true
- gearman: true
- golang: true
- grafana: true
- influxdb: true
- logstash: true
- mariadb: true
- meilisearch: true
- minio: true
- mongodb: true
- neo4j: true
- ohmyzsh: true
- openresty: true
- pm2: true
- python: true
- r-base: true
- rabbitmq: true
- rustc: true
- rvm: true
- solr: true
- timescaledb: true
- trader: true
- webdriver: true
Elasticsearch
Elasticsearchのサポートされているバージョンを指定できます。これは正確なバージョン番号(major.minor.patch)である必要があります。デフォルトのインストールでは、'homestead'という名前のクラスタが作成されます。Elasticsearchにはオペレーティングシステムのメモリの半分以上を与えてはいけないので、Homestead仮想マシンにはElasticsearchの割り当て量の2倍以上があることを確認してください。
Elasticsearchのドキュメントを参照して、構成をカスタマイズする方法を学んでください。
MariaDB
MariaDBを有効にすると、MySQLが削除され、MariaDBがインストールされます。通常、MariaDBはMySQLの代替として機能するため、アプリケーションのデータベース構成で引き続き mysql
データベースドライバを使用する必要があります。
MongoDB
デフォルトのMongoDBインストールでは、データベースのユーザー名が homestead
に、対応するパスワードが secret
に設定されます。
Neo4j
デフォルトのNeo4jインストールでは、データベースのユーザー名が homestead
に、対応するパスワードが secret
に設定されます。Neo4jブラウザにアクセスするには、Webブラウザを使用して http://homestead.test:7474
を訪れてください。ポート 7687
(Bolt)、7474
(HTTP)、7473
(HTTPS)は、Neo4jクライアントからのリクエストを受け付ける準備が整っています。
エイリアス
Homestead仮想マシンにBashエイリアスを追加するには、Homesteadディレクトリ内の aliases
ファイルを変更してください:
alias c='clear'
alias ..='cd ..'
aliases
ファイルを更新した後は、vagrant reload --provision
コマンドを使用してHomestead仮想マシンを再プロビジョニングする必要があります。これにより、新しいエイリアスがマシンで利用可能になります。
Homesteadの更新
Homesteadを更新する前に、Homesteadディレクトリで次のコマンドを実行して現在の仮想マシンを削除していることを確認してください:
vagrant destroy
次に、Homesteadのソースコードを更新する必要があります。リポジトリをクローンした場合は、リポジトリを最初にクローンした場所で次のコマンドを実行できます:
git fetch
git pull origin release
これらのコマンドは、GitHubリポジトリから最新のHomesteadコードを取得し、最新のタグを取得し、最新のタグ付きリリースをチェックアウトします。Homesteadの最新の安定リリースバージョンは、HomesteadのGitHubリリースページで確認できます。
Homesteadをプロジェクトのcomposer.json
ファイル経由でインストールした場合は、composer.json
ファイルに"laravel/homestead": "^12"
が含まれていることを確認し、依存関係を更新してください:
composer update
次に、vagrant box update
コマンドを使用してVagrantボックスを更新してください:
vagrant box update
Vagrantボックスを更新した後は、Homesteadディレクトリからbash init.sh
コマンドを実行してHomesteadの追加構成ファイルを更新する必要があります。既存のHomestead.yaml
、after.sh
、aliases
ファイルを上書きするかどうかを尋ねられます:
# macOS / Linux...
bash init.sh
# Windows...
init.bat
最後に、最新のVagrantインストールを利用するためにHomestead仮想マシンを再生成する必要があります:
vagrant up