ServBay에서 Laravel 프로젝트 생성 및 실행하기
개요
ServBay는 macOS를 위해 설계된 강력한 로컬 웹 개발 환경으로, PHP, Node.js, Python, Go, Java, 다양한 데이터베이스(MySQL, PostgreSQL, MongoDB), 캐시 서비스(Redis, Memcached), 그리고 웹 서버(Caddy, Nginx, Apache) 같은 인기 패키지를 통합 제공합니다.
이 문서는 ServBay 환경에서 Laravel 프로젝트를 빠르게 생성, 설정 및 실행하는 방법을 안내합니다. ServBay에 내장된 PHP 환경, Composer 패키지 매니저, 그리고 강력한 사이트 관리 기능을 활용하여 전 과정을 손쉽게 진행할 수 있습니다.
Laravel이란?
Laravel은 Taylor Otwell이 개발한 오픈 소스 PHP 웹 애플리케이션 프레임워크로, 매우 인기 있습니다. Model-View-Controller(MVC) 아키텍처 패턴을 따르며, 사용자 인증, 라우팅, 세션 및 캐시 처리, 데이터베이스 작업 등 웹 개발에서 자주 쓰는 작업을 간단히 처리할 수 있는 다양한 기능을 제공합니다. 세련된 문법, 풍부한 기능, 강력한 커뮤니티 지원으로 현대적이고 유지보수하기 쉬운 웹 앱 구축에 적합합니다.
Laravel의 주요 기능과 장점
- 세련된 문법: 간결하고 표현력 있는 코드로 개발 효율성과 가독성이 높습니다.
- Eloquent ORM: 강력한 ActiveRecord 구현으로 데이터베이스 작업을 간단하게 처리합니다.
- Artisan 콘솔: 데이터베이스 마이그레이션, 코드 생성, 테스트 실행 등 유용한 명령줄 도구가 포함되어 있습니다.
- Blade 템플릿 엔진: 동적 뷰 구성을 위한 직관적인 템플릿 문법을 제공합니다.
- 풍부한 생태계: 공식 및 비공식 패키지가 많고, Composer로 쉽게 통합할 수 있습니다.
- 강력한 커뮤니티: 활성화된 커뮤니티가 다양한 리소스와 튜토리얼, 문제 해결을 지원합니다.
ServBay에서 Laravel 개발의 이점
ServBay는 Laravel 개발자에게 다음과 같은 장점을 제공합니다:
- 통합 환경: 여러 버전의 PHP, Composer, 흔히 쓰는 데이터베이스 및 캐시 서비스가 사전 설치되어 별도 설치 및 설정이 필요 없습니다.
- 쉬운 관리: ServBay의 그래픽 인터페이스로 PHP 버전 전환, 사이트(웹사이트) 설정, 서비스 시작/중지를 손쉽게 할 수 있습니다.
- 미리 설정된 웹 서버: ServBay는 기본적으로 Caddy를 사용하며, Laravel 등 주요 PHP 프레임워크에 맞춰 웹 서버가 최적화되어 있어 추가 설정 없이 바로 사용할 수 있습니다.
- HTTPS 지원:
.local
도메인에 대한 SSL 인증서가 ServBay User CA를 통해 자동 발급 및 적용되어, 실제 운영 환경과 유사한 보안 환경에서 개발할 수 있습니다.
Laravel 프로젝트 생성하기
ServBay에서는 사이트 프로젝트를 /Applications/ServBay/www
디렉터리에 모아두길 권장합니다. 이렇게 하면 파일 구조가 깔끔하게 관리됩니다.
Composer 설치 확인
ServBay에는 Composer가 기본 내장되어 있으므로 별도 설치가 필요 없습니다. 터미널에서 Composer 사용 가능 여부를 확인하세요:
bashcomposer --version
1버전 정보가 정상적으로 표시된다면 Composer 준비가 완료된 것입니다.
새 Laravel 프로젝트 생성
터미널에서 권장 디렉터리로 이동한 후 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
7Composer가 Laravel 및 모든 종속 패키지를 자동으로 설치합니다.
프로젝트 디렉터리로 이동
터미널에서 새로 만든 Laravel 프로젝트의 루트 디렉터리로 이동하세요:
bashcd /Applications/ServBay/www/servbay-laravel-app
1
초기 설정
애플리케이션 키 생성
Laravel은 세션 및 데이터 암호화를 위해 앱 키가 필요합니다. 프로젝트 루트(
/Applications/ServBay/www/servbay-laravel-app
)에서 다음 Artisan 명령어로 키를 생성하세요:bashphp artisan key:generate
1이 명령은
.env
파일에APP_KEY
값을 자동으로 생성 및 설정합니다.환경 변수(
.env
) 설정Laravel은
.env
파일에서 데이터베이스, 애플리케이션 URL 등 주요 환경 설정을 관리합니다. 프로젝트 루트의.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
26TIP: 실제 사용하는 데이터베이스, 캐시 서비스에 맞게
DB_*
,REDIS_*
,MEMCACHED_*
등의 값을 조정해야 합니다. ServBay 기본 데이터베이스 계정과 비밀번호는 ServBay 컨트롤 패널에서 확인 가능합니다.
웹 서버 설정 (ServBay에서 사이트 추가)
ServBay의 사이트 관리 기능을 이용해 도메인을 Laravel 프로젝트의 public
디렉터리에 연결할 수 있습니다.
ServBay 컨트롤 패널 실행
ServBay 프로그램을 실행하고, 컨트롤 패널을 여세요.
신규 사이트 추가
컨트롤 패널의 '사이트' 섹션으로 이동하여, 추가 아이콘(
+
또는 유사 아이콘)을 클릭해 신규 사이트를 만듭니다.사이트 정보 입력
아래 예시를 참고해 사이트 설정을 입력합니다:
- 이름:
My First Laravel Dev Site
(구분하기 위한 이름) - 도메인:
servbay-laravel-test.local
(브라우저에서 접속할 도메인) - 사이트 타입:
PHP
- PHP 버전: 사용 중인 Laravel 버전에 맞는 버전(예:
8.3
) - 사이트 루트 디렉터리:
/Applications/ServBay/www/servbay-laravel-app/public
(중요: Laravel 프로젝트 루트의public
폴더를 지정)
더 자세한 설정 방법은 ServBay 공식 문서의 첫 웹사이트 추가하기 가이드를 참고하세요(영문 링크를 찾으세요).
- 이름:
저장 및 적용
설정을 저장하면 ServBay가 웹 서버 설정(기본 Caddy)을 자동으로 갱신합니다. 웹 서버 재시작 안내가 나온다면 안내에 따라 재시작하세요.
기본 접속 확인
이제 Laravel 프로젝트를 설정한 도메인에서 바로 확인할 수 있습니다.
브라우저 열기
브라우저 주소창에
https://servbay-laravel-test.local
와 같이 입력해 접속합니다.화면 확인
모든 설정이 정상적이라면, Laravel의 환영 페이지가 나오게 됩니다.
간단한 예제 코드 추가
더 직관적인 확인을 위해, routes/web.php
파일에 "Hello ServBay!"를 출력하는 라우트를 추가해 봅니다.
프로젝트 디렉터리 내 routes/web.php
파일에 다음 코드를 추가 또는 수정하세요:
php
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| 여기서 애플리케이션의 웹 라우트를 등록할 수 있습니다.
| 이 라우트들은 "web" 미들웨어 그룹 내의 RouteServiceProvider에 의해 로드됩니다.
| 이제 멋진 것을 만들어 볼 시간입니다!
|
*/
Route::get('/', function () {
return 'Hello ServBay!'; // 이 줄을 추가 또는 수정하세요
});
// ... 다른 라우트
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
파일을 저장한 후 https://servbay-laravel-test.local
을 다시 접속하면, 브라우저에 Hello ServBay!
메시지가 표시됩니다.
데이터베이스 연동 예제
Laravel은 강력한 데이터베이스 추상화 계층과 Eloquent ORM을 제공하여, 다양한 데이터베이스와 쉽게 연동할 수 있습니다. 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의 Cache 파사드를 아래처럼 이용할 수 있습니다:
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 기본 비밀번호 없음 REDIS_PORT=6379 # ServBay의 기본 Redis 포트
1
2
3
4참고: Memcached와 Redis를 동시에 사용하려면,
.env
의CACHE_STORE
값에서 현재 테스트하려는 서비스만 활성화하고 한쪽은 주석 처리하세요.Redis 사용
라우터 또는 컨트롤러에서 Laravel의 Redis 파사드 또는 Cache 파사드로 Redis에 접근할 수 있습니다:
routes/web.php
에 다음 라우트 예시를 추가합니다:phpuse Illuminate\Support\Facades\Redis; // 또는 Cache 파사드 사용(CACHE_STORE=redis일 경우) // 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 등, ServBay 컨트롤 패널에서 접근 가능)나 커맨드라인 클라이언트를 사용해 servbay_laravel_app
데이터베이스를 만드세요.
다음으로, Laravel 마이그레이션을 사용해 테이블 구조를 생성합시다.
마이그레이션 파일 생성
프로젝트 디렉터리에서 Artisan 명령어로 마이그레이션 파일을 생성하세요:
bashphp artisan make:migration create_accounts_table --create=accounts
1이렇게 하면
database/migrations
폴더에 새 마이그레이션 파일이 생성됩니다.마이그레이션 파일 수정
생성된 마이그레이션 파일(예:
YYYY_MM_DD_HHMMSS_create_accounts_table.php
)의up
메서드를 아래처럼 수정하세요: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파일을 저장하세요.
마이그레이션 실행
프로젝트 디렉터리에서 Artisan 명령어로 마이그레이션을 실행하면
accounts
테이블이 생성됩니다:bashphp artisan migrate
1데이터베이스 설정이 올바르고
servbay_laravel_app
데이터베이스가 존재한다면, 이 명령으로accounts
와 Laravel 기본 테이블(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
에accounts
테이블에 데이터를 추가하는 라우트를 만드세요: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 'Account added to MySQL!'; });
1
2
3
4
5
6
7
8
9
10
11https://servbay-laravel-test.local/mysql-add-account
에 접속해 데이터 추가를 확인할 수 있습니다.샘플 데이터 조회
routes/web.php
에accounts
테이블에서 데이터를 읽는 라우트를 추가합니다:phpuse App\Models\Account; // Account 모델 생성 시 사용 // 또는 DB 파사드 직접 사용 Route::get('/mysql-accounts', function () { // DB 파사드 사용 $accounts = DB::table('accounts')->get(); // 또는 Eloquent ORM 사용(Account 모델 있을 경우) // $accounts = Account::all(); return $accounts; });
1
2
3
4
5
6
7
8
9
10
11
12https://servbay-laravel-test.local/mysql-accounts
접속 시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
6TIP: 데이터베이스 연결을 변경한 후에는 마이그레이션을
php artisan migrate:refresh
또는php artisan migrate
명령으로 다시 실행해야 표 구조가 생성됩니다.샘플 데이터 입력(PostgreSQL)
routes/web.php
에 PostgreSQL에 데이터를 추가하는 라우트를 만드세요: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 'Account added to PostgreSQL!'; });
1
2
3
4
5
6
7
8
9
10
11https://servbay-laravel-test.local/pgsql-add-account
에 접속해 데이터 추가를 확인할 수 있습니다.샘플 데이터 조회(PostgreSQL)
routes/web.php
에accounts
테이블에서 데이터를 읽는 라우트를 추가합니다: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
접속 시accounts
테이블 데이터를 확인할 수 있습니다.
마무리
ServBay를 사용하면 macOS에서 손쉽게 Laravel 개발 환경을 빠르게 구축하고 프로젝트를 실행할 수 있습니다. PHP, Composer, Caddy 웹 서버, 각종 데이터베이스 및 캐시 서비스가 미리 통합되어 있어, 복잡한 환경 설정 없이 몇 단계만으로 사이트를 만들고 웹 서버를 구성하며 개발을 즉시 시작할 수 있습니다. 또한 데이터베이스나 캐시 연동 테스트도 간편하게 진행할 수 있습니다. ServBay는 개발자를 위한 효율적이고 편리한 로컬 개발 경험을 지향합니다.
사용 중 문제가 발생하거나 추가 정보가 필요하다면 ServBay 공식 문서나 커뮤니티 지원을 참고하세요.