Zenn
🗂

【Laravel】開発環境のセットアップとプロジェクト作成

2025/03/20に公開

はじめに

私は主にモバイルエンジニアとして勤務しています。ですが、本業のプロジェクトのサーバーサイドは Laravel を採用しており、触る機会が増えてきたので入門してみます。

必要な準備

Laravel を始めるには以下のものが必要です:

  • PHP
  • Composer(PHP のパッケージ管理ツール)
  • データベース(MySQL など)
  • Web サーバー(Apache や Nginx)

1. PHP のインストール

macOS の場合

Homebrew を使ってインストールするのが簡単です:

brew install php

インストール確認

ターミナルまたはコマンドプロンプトで以下のコマンドを実行:

php -v

以下のように Version が表示されれば OK

PHP 8.4.4 (cli) (built: Feb 11 2025 15:36:20) (NTS)
Copyright (c) The PHP Group
Built by Homebrew
Zend Engine v4.4.4, Copyright (c) Zend Technologies
with Zend OPcache v8.4.4, Copyright (c), by Zend Technologies

2. Composer のインストール

Composer は、PHP のパッケージ管理ツールで、Laravel プロジェクトの作成や依存パッケージの管理に必須です。

macOS の場合

ターミナルで以下のコマンドを実行:

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer
コマンド内容
  1. curl -sS https://getcomposer.org/installer | php

    • Composer のインストーラーをダウンロードして実行します
    • -sSオプションは「サイレントモード」でエラー時のみ出力を表示します
  2. sudo mv composer.phar /usr/local/bin/composer

    • ダウンロードされたcomposer.pharファイルをシステムの実行パス上に移動します
    • /usr/local/bin/はシステム全体からアクセス可能な実行ファイルの標準的な場所です
    • sudoは管理者権限でこの操作を実行します
  3. chmod +x /usr/local/bin/composer

    • composer ファイルに実行権限を付与します
    • これにより、composerコマンドをどこからでも実行できるようになります

インストール確認

composer --version

以下のように Version が表示されれば OK

Composer version 2.8.6 2025-02-25 13:03:50
PHP version 8.4.4 (/opt/homebrew/Cellar/php/8.4.4/bin/php)
Run the "diagnose" command to get more detailed diagnostics output.

3. PostgreSQL のインストール

macOS の場合

Homebrew を使ってインストールします:

brew install postgresql

インストール確認

psql --version

以下のように Version が表示されれば OK

psql (PostgreSQL) 14.17 (Homebrew)

4. PostgreSQL の設定

データベースの作成

PostgreSQL のコマンドラインツールにログインします:

# macOSの場合
psql postgres

エラー出力

上記のコマンドを実行すると以下のエラーありました。

psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
Is the server running locally and accepting connections on that socket?

PostgreSQL サーバーが実行されていないか、デフォルトのソケットファイルが見つからないエラーを出力しています。

エラー対応

PostgreSQL サービスの状態を確認します。

Name          Status User File
php           none
postgresql@14 none

そもそも起動していなかったため、起動します。

brew services start postgresql
==> Successfully started `postgresql@14` (label: homebrew.mxcl.postgresql@14)

成功しましたが、念の為サービス状態を確認します。

Name          Status  User        File
php           none
postgresql@14 started 〇〇 ~/Library/LaunchAgents/homebrew.mxcl.postgresql@14.plist

起動しました。

再度、以下を実行します。

# macOSの場合
psql postgres

以下の出力であれば OK です。

psql postgres
psql (14.17 (Homebrew))
Type "help" for help.

postgres=#

この状態は、「postgres」データベースに接続し、データベース管理者として操作できる状態であることを示しています(#記号は管理者権限を表します)。

psql での SQL 操作方法

この状態では SQL コマンドを入力でき、データベースの操作(テーブルの作成、データの挿入、クエリの実行など)を行うことができます。例えば以下のようなコマンドが使えます:

\l - データベース一覧の表示
\dt - テーブル一覧の表示
\d テーブル名 - テーブル構造の表示
\q - psql の終了

データベースを作成します:

CREATE DATABASE todo_app;
CREATE USER todo_user WITH ENCRYPTED PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE todo_app TO todo_user;
\q
上記の SQL 文の詳細について
CREATE DATABASE todo_app;

新しいデータベース「todo_app」を作成しています
このデータベースが、TODO アプリケーションのすべてのデータを格納する場所となります


CREATE USER todo_user WITH ENCRYPTED PASSWORD 'your_password';

「todo_user」という名前の新しいデータベースユーザーを作成しています
このユーザーにはパスワード「your_password」が設定されます(実際の使用時には強力なパスワードに変更すべきです)
ENCRYPTED 指定により、パスワードはデータベース内に安全に暗号化された形式で保存されます


GRANT ALL PRIVILEGES ON DATABASE todo_app TO todo_user;

作成したユーザー「todo_user」に、「todo_app」データベースに対するすべての権限を付与しています
これにより、このユーザーはデータベース内でテーブルの作成・変更・削除、データの挿入・更新・削除などすべての操作が可能になります

5. Laravel プロジェクトの作成

新しい Laravel プロジェクトの作成

ターミナルまたはコマンドプロンプトで、プロジェクトを作成したいディレクトリに移動し、以下のコマンドを実行します:

composer create-project laravel/laravel todo-app

todo-appは作成するプロジェクト名です。任意の名前に変更可能です。

プロジェクトディレクトリへの移動

cd todo-app

VSCode を開く

code .

すると以下のような構成の Laravel プロジェクトが作成されています。

7. 基本設定ファイルの確認と編集

環境設定ファイル(.env)

Laravel プロジェクトのルートディレクトリには、.envファイルが作成されています。PostgreSQL 用に設定を変更します:

APP_NAME=TodoApp
APP_ENV=local
APP_KEY=base64:ランダムな文字列
APP_DEBUG=true
APP_URL=http://localhost

DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=todo_app
DB_USERNAME=todo_user
DB_PASSWORD=your_password

8. データベース設定の確認

config/database.phpファイルを開き、PostgreSQL の設定を確認します:

config/database.php
// PostgreSQL設定部分
'pgsql' => [
        'driver' => 'pgsql',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '5432'),
        'database' => env('DB_DATABASE', 'todo_app'),
        'username' => env('DB_USERNAME', 'todo_user'),
        'password' => env('DB_PASSWORD', 'your_password'),
        'charset' => 'utf8',
        'prefix' => '',
        'prefix_indexes' => true,
        'search_path' => 'public',
        'sslmode' => 'prefer',
],

設定後にサーバーを立ち上げます。

php artisan serve

エラー出力

ですが、ここでエラーが出力されます。

Database file at path [todo_app] does not exist. Ensure this is an absolute path to the database. (Connection: sqlite, SQL: select * from "sessions" where "id" = y9hiW5fhn9s5LmpoUOyNIVtdaMM6U82JjFn9GjDp limit 1)

データベースファイルが存在しないとエラーが出力されます。

エラー対応

config/database.php ファイルを開いて、デフォルト接続が正しく設定されているか確認します。

'default' => env('DB_CONNECTION', 'mysql'),

この行が DB_CONNECTION 環境変数の値を使用していることを確認します。もし直接'default' => 'sqlite'などと設定されていたら、'default' => env('DB_CONNECTION', 'pgsql')に変更します。

エラー出力

再度、立ち上げるもエラーが出力されます。

SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "sessions" does not exist LINE 1: select *** from "sessions" where "id" = $1 limit 1 ^ (Connection: pgsql, SQL: select * from "sessions" where "id" = gtZtQVHcfVhOtZSiBJKkvHDVFXw2H1sa0SBZ8FwE limit 1)**

PostgreSQL に「sessions」テーブルが存在しないというエラーです。

デフォルトでセッションデータを保存するために「database」ドライバーを使用するよう設定されているからです。

なぜセッションテーブルが必要なのか?

セッション管理の仕組み:

Web アプリケーションはステートレス(状態を保持しない)な HTTP プロトコル上で動作しています
ユーザーの状態(ログイン情報など)を維持するためにセッションを使用します
セッションデータは一時的な情報で、どこかに保存する必要があります


Laravel のセッション保存方法は他にもあります。

ドライバー名 保存先 特徴
file サーバーのファイルシステム デフォルト設定、シンプルで導入しやすい
database データベースのテーブル SQL データベースにセッション情報を保存
redis Redis キャッシュ 高速なキー・バリュー型ストアを利用
memcached Memcached 分散メモリキャッシュシステム
cookie 暗号化されたクッキー クライアント側で保存
array PHP の配列 テスト用、リクエスト後に消える

エラー対応

セッションテーブルを作成します。

php artisan session:table

ですが、

Migration already exists.

と出力されます。

マイグレーションの実行

マイグレーションの実行を忘れていました。

php artisan migrate

マイグレーションを実行します。

Preparing database.

  Creating migration table .............. 23.70ms DONE

   INFO  Running migrations.

  0001_01_01_000000_create_users_table ............. 13.44ms DONE
  0001_01_01_000001_create_cache_table ........ 3.65ms DONE
  0001_01_01_000002_create_jobs_table ......... 9.34ms DONE

と出力されれば OK

9. 開発サーバーの起動

Laravel には開発用の簡易サーバーが内蔵されています。以下のコマンドで起動できます:

php artisan serve

コマンドを実行すると、通常はhttp://127.0.0.1:8000でアプリケーションにアクセスできます。


Laravel 初期画面

初期の立ち上げ画面が表示されたので、環境構築としては OK です。

参考資料

https://readouble.com/laravel/12.x/ja/installation.html

Discussion

ログインするとコメントできます