ServBayでLaravelプロジェクトを作成・実行する
概要
ServBayはmacOS向けに設計された強力なローカルWeb開発環境であり、PHP、Node.js、Python、Go、Java、数種類のデータベース(MySQL、PostgreSQL、MongoDB)、キャッシュサービス(Redis、Memcached)、Webサーバー(Caddy、Nginx、Apache)など、多くの人気ソフトウェアを統合しています。
本ドキュメントでは、ServBay環境でLaravelプロジェクトを素早く作成・設定・実行する手順を案内します。ServBayに内蔵されたPHP環境、Composerパッケージマネージャ、そして便利なWebサイト(旧称「ホスト」)管理機能を最大限活用し、プロセスを簡素化します。
Laravelとは?
Laravelは、Taylor Otwell氏によって開発された人気のオープンソースPHP Webフレームワークです。MVC(Model-View-Controller)アーキテクチャを採用し、認証・ルーティング・セッション管理・キャッシュ・データベース操作など、Web開発によくあるタスクを簡単にする数々の機能を備えています。エレガントな構文や充実した機能、活発なコミュニティを特徴とし、モダンで保守性の高いWebアプリケーションの構築に最適な選択肢です。
Laravelの主な特徴・メリット
- エレガントな構文: コードが簡潔で表現力豊か、開発効率と可読性が向上します。
- Eloquent ORM: 強力なActiveRecord実装により、直感的なデータベース操作が可能です。
- Artisanコンソール: マイグレーション、コード生成、テスト実行など多数のCLIツールが内蔵されています。
- Bladeテンプレートエンジン: シンプルなテンプレート構文で動的なビューを構築できます。
- 豊富なエコシステム: 公式・サードパーティの多数パッケージがあり、Composerで簡単に統合できます。
- 強力なコミュニティサポート: 多くの情報、チュートリアル、問題解決例がコミュニティから提供されています。
ServBayでLaravel開発を行うメリット
ServBayはLaravel開発者に多くの利便性を提供します:
- 統合環境: 複数バージョンのPHPやComposer、さらに主要なデータベース・キャッシュサービスを事前インストール。面倒な個別インストールや設定は不要です。
- 簡単な管理: ServBayのGUIからPHPバージョンの切り替えやWebサイト設定、サービスの起動/停止が直感的に行えます。
- プリセットWebサーバー: 標準でCaddyサーバーを搭載し、Laravelなどの主要PHPフレームワーク向けに最適化済み設定が用意されているため、Webサーバー周りの手続きが簡単です。
- HTTPSサポート:
.local
ドメインに自動でServBay User CAによるSSL証明書が発行され、HTTPSが標準で有効に。ローカル開発でも本番環境に近い安全性を得られます。
Laravelプロジェクトの作成
ServBayでは、すべてのWebサイトプロジェクトを /Applications/ServBay/www
ディレクトリ配下にまとめて管理することを推奨しています。これにより、ファイル構造が整理され管理が容易になります。
Composerのインストール確認
ServBayにはComposerが初めから含まれているため、別途インストールの必要はありません。ターミナルで下記コマンドを実行すると、Composerが利用可能か確認できます。
bashcomposer --version
1コマンド実行結果としてバージョン番号が表示されれば、準備OKです。
新規Laravelプロジェクトの作成
ターミナルでおすすめのWebサイトディレクトリに移動し、Composerで新しいLaravelプロジェクトを作成します。ここでは、プロジェクトディレクトリ名を
servbay-laravel-app
とします。bashcd /Applications/ServBay/www # プロジェクトディレクトリの作成 mkdir servbay-laravel-app # プロジェクトディレクトリに移動 cd servbay-laravel-app # ComposerでLaravelを現ディレクトリにインストール composer create-project --prefer-dist laravel/laravel .
1
2
3
4
5
6
7これでLaravel本体と依存パッケージのインストールが始まります。
プロジェクトディレクトリに移動
ターミナルでLaravelプロジェクトのルートディレクトリに移動していることを確認してください。
bashcd /Applications/ServBay/www/servbay-laravel-app
1
初期設定
アプリケーションキーの生成
Laravelはアプリケーションキーを用いてセッションや暗号化データの保護を行います。プロジェクトのルート(
/Applications/ServBay/www/servbay-laravel-app
)で以下を実行してキーを生成してください。bashphp artisan key:generate
1このコマンドにより、
.env
ファイルのAPP_KEY
に値がセットされます。環境変数(.env)の設定
.env
ファイルは、データベース接続、アプリURLなどLaravelプロジェクトの各種環境変数を管理します。ルートディレクトリの.env
を開き、必要に応じて編集しましょう。基本的な例は下記の通りです。dotenvAPP_NAME=ServBay Laravel Demo APP_ENV=local APP_KEY=base64:... # この値は "php artisan key:generate" で生成されます APP_DEBUG=true APP_URL=https://servbay-laravel-test.local LOG_CHANNEL=stack # データベース設定例(MySQL) DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=servbay_laravel_app # 使用したいデータベース名 DB_USERNAME=root # ServBay既定のDBユーザー DB_PASSWORD=password # ServBay既定のDBパスワード # キャッシュ/キュー設定例(Redis) CACHE_STORE=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null # ServBayではRedisパスワード不要 REDIS_PORT=6379 # キャッシュ/キュー設定例(Memcached) # CACHE_STORE=memcached # MEMCACHED_HOST=127.0.0.1 # MEMCACHED_PORT=11211
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26注意: 実際に使用するデータベースやサービスに応じて、
DB_*
、REDIS_*
、MEMCACHED_*
などを正しく設定してください。ServBayでのデフォルトユーザー名・パスワードはコントロールパネルで確認できます。
Webサーバーの設定(ServBayでWebサイトを追加)
ServBayのWebサイト管理機能を使い、独自ドメインをLaravelプロジェクトの public
ディレクトリに紐付けて設定します。
ServBayコントロールパネルを開く
ServBayアプリを起動し、コントロールパネルを表示します。
新しいWebサイトを追加
『Webサイト』セクションに進み、追加ボタン(通常は「+」など)から新しいWebサイトを作成します。
サイト情報の入力
下記例を参考に設定を入力してください。
- 名前:
My First Laravel Dev Site
(任意のわかりやすい名称) - ドメイン:
servbay-laravel-test.local
(ブラウザでアクセスするドメイン) - サイトタイプ:
PHP
- PHPバージョン: Laravelに合ったバージョン例:
8.3
- サイトルート:
/Applications/ServBay/www/servbay-laravel-app/public
(重要: Laravelプロジェクトのpublic
ディレクトリを必ず指定)
詳細な手順やオプションは、ServBay公式ドキュメントの最初のWebサイトを追加する方法(英語版推奨)をご参照ください。
- 名前:
保存して適用
設定を保存しましょう。これでServBayがWebサーバー(標準はCaddy)の設定を自動更新します。必要に応じてWebサーバー再起動の指示が表示されたら従ってください。
基本動作の確認
用意したドメインからLaravelサイトにアクセスできるか確かめます。
ブラウザを開く
設定したドメイン、例:
https://servbay-laravel-test.local
をブラウザに入力します。動作結果を確認
設定が正しければ、Laravelのウェルカムページが表示されるはずです。
サンプルコードの追加
動作を直感的に確認するため、routes/web.php
に "Hello ServBay!" を表示するシンプルなルートを追加しましょう。
プロジェクト配下の routes/web.php
を編集し、下記内容を追加または修正してください:
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| ここではアプリケーション用のWebルートを登録できます。
| これらのルートは、"web" ミドルウェアグループ内で
| RouteServiceProvider によって読み込まれます。
| さあ、すばらしいものを作りましょう!
|
*/
Route::get('/', function () {
return 'Hello ServBay!'; // この行を追加または修正
});
// ... その他のルート
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
保存後、https://servbay-laravel-test.local
に再アクセスすると、ブラウザ上に Hello ServBay!
と表示されます。
データベース統合例
Laravelは強力なデータベース抽象層とORM(Eloquent)を提供しており、さまざまなデータベースと簡単に連携できます。ServBayにはMySQL、PostgreSQL、MongoDB、Redis、Memcachedなどがプリインストールされており、ローカル開発が快適です。
NoSQLデータベース例
ServBayにはRedisとMemcachedが標準搭載、またPHP拡張もインストール済みです。
Memcached使用例
.env
の設定.env
にMemcached接続情報を追記(もしくは確認)します。dotenvCACHE_STORE=memcached MEMCACHED_HOST=127.0.0.1 MEMCACHED_PORT=11211 # ServBay標準のMemcachedポート
1
2
3Memcachedの利用
ルートやコントローラでLaravelのキャッシュファサードを使い、Memcachedと連携します。
routes/web.php
を以下のように編集します。phpuse Illuminate\Support\Facades\Cache; Route::get('/memcached-test', function () { // キャッシュにデータを保存(有効期限10分・600秒) Cache::put('servbay_memcached_key', 'Hello from Memcached on ServBay!', 600); // キャッシュからデータを取得 $value = Cache::get('servbay_memcached_key'); if ($value) { return "Memcachedのデータ: " . $value; } else { return "Memcachedデータが存在しないか期限切れです。"; } });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15https://servbay-laravel-test.local/memcached-test
にアクセスして動作を確認できます。
Redis使用例
.env
の設定.env
ファイルでRedis接続設定を行います。dotenvCACHE_STORE=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null # ServBayはデフォルトでパスワードなし REDIS_PORT=6379 # ServBay標準のRedisポート
1
2
3
4注意: MemcachedとRedisを同時に設定した場合、
.env
のCACHE_STORE
で使いたい方を有効にし、他方はコメントアウトしてください。Redisの利用
ルートやコントローラでLaravelのRedisファサードまたはCacheファサードを使えます。
routes/web.php
に次の例を追加します。phpuse Illuminate\Support\Facades\Redis; // あるいは、CACHE_STORE=redis時はCacheファサードも利用可 // use Illuminate\Support\Facades\Cache; Route::get('/redis-test', function () { // Redisファサードを利用 Redis::set('servbay_redis_key', 'Hello from Redis on ServBay!'); $value_redis = Redis::get('servbay_redis_key'); // またはCacheファサードを利用(CACHE_STORE=redis時) // Cache::put('servbay_redis_key', 'Hello from Redis on ServBay!', 600); // $value_cache = Cache::get('servbay_redis_key'); return "Redisのデータ: " . $value_redis; });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15https://servbay-laravel-test.local/redis-test
で動作確認できます。
リレーショナルデータベース例(MySQL & PostgreSQL)
ServBayにはMySQLとPostgreSQLサーバーも搭載されています。LaravelのEloquent ORMなら接続・操作も簡単です。
まず最初に、プロジェクト用データベースを用意します。ServBay付属のデータベース管理ツール(phpMyAdmin、Adminer、pgAdminなど/コントロールパネルから利用可能)やCLIで、servbay_laravel_app
データベースを作成してください。
次に、Laravelのマイグレーション機能でテーブル構造を準備します。
マイグレーションファイルの作成
プロジェクトのルートで下記Artisanコマンドを実行し、マイグレーションを作成します。
bashphp artisan make:migration create_accounts_table --create=accounts
1database/migrations
ディレクトリにマイグレーションファイルが生成されます。マイグレーションファイルの編集
生成されたマイグレーションファイル(例:
YYYY_MM_DD_HHMMSS_create_accounts_table.php
)を開き、up
メソッドでaccounts
テーブル構造を記述します。php<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * マイグレーションの実行 */ public function up(): void { Schema::create('accounts', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->timestamps(); // created_atとupdated_atを自動追加 }); } /** * マイグレーションのロールバック */ public function down(): void { Schema::dropIfExists('accounts'); } };
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29保存してください。
マイグレーションの実行
プロジェクトルートで次のコマンドを実行して、
accounts
テーブルをデータベースに作成します。bashphp artisan migrate
1データベース設定が正しく、
servbay_laravel_app
が存在すれば、accounts
のほかusers
、password_reset_tokens
、failed_jobs
、cache
、cache_locks
、jobs
、job_batches
などのテーブルも生成されます。
MySQL利用例
MySQL用
.env
の設定.env
でMySQLを利用する設定にしておきます。dotenvDB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 # ServBay標準MySQLポート DB_DATABASE=servbay_laravel_app DB_USERNAME=root DB_PASSWORD=password # ServBay標準MySQLパスワード
1
2
3
4
5
6サンプルデータの書き込み
routes/web.php
にアカウント情報を挿入するルートを追加します。phpuse Illuminate\Support\Facades\DB; Route::get('/mysql-add-account', function () { DB::table('accounts')->insert([ 'name' => 'ServBay Demo User', 'email' => '[email protected]', 'created_at' => now(), 'updated_at' => now(), ]); return 'MySQLにアカウントを追加しました!'; });
1
2
3
4
5
6
7
8
9
10
11https://servbay-laravel-test.local/mysql-add-account
で登録できます。データの読み取り
routes/web.php
にアカウント一覧を表示するルートを追加します。phpuse App\Models\Account; // Accountモデルがある場合 // もしくはDBファサードを直接利用 Route::get('/mysql-accounts', function () { // DBファサードを利用 $accounts = DB::table('accounts')->get(); // Accountモデル(Eloquent)を利用する場合 // $accounts = Account::all(); return $accounts; });
1
2
3
4
5
6
7
8
9
10
11
12https://servbay-laravel-test.local/mysql-accounts
で確認できます。
PostgreSQL利用例
PostgreSQL用
.env
の設定PostgreSQLを使用する場合は、
.env
を以下のように編集してください。dotenvDB_CONNECTION=pgsql DB_HOST=127.0.0.1 DB_PORT=5432 # ServBay標準PostgreSQLポート DB_DATABASE=servbay_laravel_app DB_USERNAME=root # ServBay標準PostgreSQLユーザー DB_PASSWORD=password # ServBay標準PostgreSQLパスワード
1
2
3
4
5
6注意: データベース接続を切り替えた場合、
php artisan migrate:refresh
またはphp artisan migrate
を再実行し、テーブルをPostgreSQL側に作成してください。サンプルデータの書き込み(PostgreSQL)
routes/web.php
にアカウント情報登録用ルートを追加します。phpuse Illuminate\Support\Facades\DB; Route::get('/pgsql-add-account', function () { DB::table('accounts')->insert([ 'name' => 'ServBay PG Demo User', 'email' => '[email protected]', 'created_at' => now(), 'updated_at' => now(), ]); return 'PostgreSQLにアカウントを追加しました!'; });
1
2
3
4
5
6
7
8
9
10
11https://servbay-laravel-test.local/pgsql-add-account
で登録できます。データの読み取り(PostgreSQL)
routes/web.php
に下記のルートを追加します。phpuse Illuminate\Support\Facades\DB; Route::get('/pgsql-accounts', function () { $accounts = DB::table('accounts')->get(); return $accounts; });
1
2
3
4
5
6https://servbay-laravel-test.local/pgsql-accounts
で確認できます。
まとめ
ServBayを利用することで、macOS上に簡単にローカル開発環境を構築し、Laravelプロジェクトの作成・実行ができます。PHP、Composer、Caddy Webサーバー、各種データベースやキャッシュサービスがあらかじめ統合されており、環境構築がとてもスムーズです。数ステップでLaravel新規プロジェクトが作れ、Webサーバー設定やデータベース・キャッシュとの連携・テストも効率的に進められます。ServBayは、開発者に効率的で快適なローカル開発体験を提供します。
万一トラブルや疑問があれば、ServBay公式ドキュメントやコミュニティサポートもぜひご活用ください。