ServBay에서 Laravel 프로젝트 생성 및 실행하기
개요
ServBay는 macOS와 Windows를 지원하는 강력한 로컬 웹 개발 환경으로, PHP, Node.js, Python, Go, Java, 다양한 데이터베이스(MySQL, PostgreSQL, MongoDB 등), 캐시 서비스(Redis, Memcached), 웹 서버(Caddy, Nginx, Apache) 등을 한 번에 제공합니다.
이 문서에서는 ServBay 환경에서 Laravel 프로젝트를 빠르게 생성, 설정, 실행하는 방법을 안내합니다. ServBay 내장 PHP 환경, Composer 패키지 관리 도구, 강력한 웹사이트(이전 명칭 : 호스트) 관리 기능을 활용하여 개발 과정을 크게 단순화할 수 있습니다.
Laravel이란?
Laravel은 Taylor Otwell이 만든 오픈 소스 PHP 웹 애플리케이션 프레임워크로, MVC(Model-View-Controller) 아키텍처를 따릅니다. 사용자 인증, 라우팅, 세션 관리, 캐싱, 데이터베이스 작업 등 웹 개발에서 흔히 필요한 기능을 쉽게 구현할 수 있습니다. 우아한 문법, 풍부한 기능, 활발한 커뮤니티 등으로 현대적이고 유지관리하기 쉬운 웹 애플리케이션에 적합합니다.
Laravel의 주요 특징 및 장점
- 우아한 문법: 코드가 간결하고 표현력이 높아 개발 효율과 가독성이 향상됩니다.
- Eloquent ORM: 강력한 ActiveRecord 구현으로 데이터베이스 작업을 쉽고 직관적으로 처리할 수 있습니다.
- Artisan 콘솔: 데이터베이스 마이그레이션, 코드 생성, 테스트 등 다양한 작업을 위한 CLI 툴을 제공합니다.
- Blade 템플릿 엔진: 간편한 템플릿 문법으로 동적 뷰를 쉽게 작성할 수 있습니다.
- 풍부한 생태계: 공식 및 서드파티 패키지가 많아 Composer로 쉽게 통합할 수 있습니다.
- 강력한 커뮤니티: 활발한 커뮤니티가 다양한 리소스, 튜토리얼, 해결 방법을 제공합니다.
ServBay에서 Laravel 개발의 장점
ServBay는 Laravel 개발자를 위해 아래와 같은 혜택을 제공합니다.
- 통합 환경: 여러 PHP 버전, Composer, 자주 쓰는 데이터베이스와 캐시 서비스가 미리 설치되어 별도 셋업이 필요 없습니다.
- 쉬운 관리: GUI로 PHP 버전 전환, 웹사이트(사이트) 구성 관리, 서비스 시작/중지 등을 간편하게 수행할 수 있습니다.
- 최적화된 웹 서버 설정: 기본적으로 Caddy를 사용하며, Laravel 등 PHP 프레임워크에 맞게 설정이 최적화되어 있어 웹 서버 셋업이 단순화됩니다.
- HTTPS 지원:
.local도메인에 ServBay에서 발급한 SSL 인증서가 자동 설정되어, 안전하고 실환경과 유사한 개발이 가능합니다.
Laravel 프로젝트 생성하기
ServBay 권장 웹사이트 디렉토리에 프로젝트를 저장하면 파일 구조 및 관리를 효율적으로 할 수 있습니다:
- macOS:
/Applications/ServBay/www - Windows:
C:\ServBay\www
Composer 설치 확인
ServBay를 설치하면 Composer가 자동으로 포함됩니다. 터미널에서 Composer 유효성을 확인해보세요:
bashcomposer --version1버전 정보가 정상 출력되면 Composer가 잘 준비된 것입니다.
새 Laravel 프로젝트 생성
터미널을 열고 권장 디렉토리로 이동한 뒤, Composer로 새 Laravel 프로젝트를 생성합니다. 프로젝트 폴더명은
servbay-laravel-app으로 합니다.macOS:
bashcd /Applications/ServBay/www # 프로젝트 폴더 생성 mkdir servbay-laravel-app # 폴더로 이동 cd servbay-laravel-app # 현재 폴더에 Laravel 프로젝트 생성 composer create-project --prefer-dist laravel/laravel .1
2
3
4
5
6
7Windows:
cmdcd C:\ServBay\www # 프로젝트 폴더 생성 mkdir servbay-laravel-app # 폴더로 이동 cd servbay-laravel-app # 현재 폴더에 Laravel 프로젝트 생성 composer create-project --prefer-dist laravel/laravel .1
2
3
4
5
6
7이 과정에서 Composer가 Laravel 및 필요한 의존성을 다운로드해 설치합니다.
프로젝트 디렉토리 이동
터미널 위치가 새로 생성한 Laravel 프로젝트 루트 디렉토리인지 확인하세요:
macOS:
bashcd /Applications/ServBay/www/servbay-laravel-app1Windows:
cmdcd C:\ServBay\www\servbay-laravel-app1
초기 설정
애플리케이션 키 생성
Laravel은 세션 및 암호화를 위해 앱 키를 사용합니다. 프로젝트 루트에서 Artisan 명령어로 키를 생성하세요:
루트 경로:
- macOS:
/Applications/ServBay/www/servbay-laravel-app - Windows:
C:\ServBay\www\servbay-laravel-app
bashphp artisan key:generate1위 명령어는
.env파일의APP_KEY값을 자동으로 생성 및 설정해줍니다.- macOS:
환경 변수(
.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=112111
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 또는 서비스에 따라
DB_*,REDIS_*,MEMCACHED_*값을 맞춰주세요. ServBay 기본 DB 계정 정보는 ServBay 제어판에서 확인할 수 있습니다.
웹 서버 설정(ServBay에서 사이트 추가)
ServBay의 사이트 관리 기능으로 웹 서버를 구성하고, Laravel 프로젝트의 public 폴더를 도메인과 연결합니다.
ServBay 제어판 실행
ServBay 앱을 실행하고 제어판을 엽니다.
새 사이트 추가
제어판 내 '사이트' 섹션에 진입한 뒤, 새 사이트 추가 버튼(
+또는 유사 아이콘)을 클릭합니다.사이트 정보 입력
예시 설정:
이름:
My First Laravel Dev Site(직접 구분하기 쉬운 명칭)도메인:
servbay-laravel-test.local(브라우저에서 접근할 도메인)사이트 유형:
PHPPHP 버전: Laravel 버전에 맞게
8.3등 선택사이트 루트:
- macOS:
/Applications/ServBay/www/servbay-laravel-app/public - Windows:
C:\ServBay\www\servbay-laravel-app\public
(중요: 반드시
public하위 폴더를 지정해야 합니다.)- macOS:
더 자세한 설정법은 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
21
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은 추상 데이터베이스 레이어와 Eloquent ORM을 제공해 MySQL, PostgreSQL, MongoDB, Redis, Memcached 등과 쉽게 연동됩니다. ServBay에는 이들 서비스가 모두 기본 설치되어 있어 개발 및 테스트에 매우 편리합니다.
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는 비밀번호 없음 REDIS_PORT=6379 # ServBay 기본 Redis 포트1
2
3
4참고: Memcached와 Redis를 동시에 테스트할 땐,
.env파일내CACHE_STORE항목을 한 서비스만 활성화하세요(나머지는 주석 처리).Redis 사용하기
Laravel의 Redis 파사드 또는 캐시 파사드를 이용해서 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 등의 도구로 DB(servbay_laravel_app)를 만들거나, 커맨드라인 클라이언트를 사용합니다.
이제 Laravel 마이그레이션으로 DB 테이블을 만들어봅니다.
마이그레이션 파일 생성
루트에서 Artisan 명령어로 새 마이그레이션 파일을 생성하세요:
bashphp artisan make:migration create_accounts_table --create=accounts1database/migrations폴더에 새 마이그레이션 파일이 생깁니다.마이그레이션 파일 편집
생성된 마이그레이션 파일(YEAR_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파일 저장 후 다음 단계로 이동합니다.
마이그레이션 실행
프로젝트 루트에서 아래 명령어로 실제 DB에 테이블을 생성합니다:
bashphp artisan migrate1데이터베이스 설정 및 DB(
servbay_laravel_app)가 제대로 준비됐다면,accounts테이블 및 기본 테이블(users, password_reset_tokens, failed_jobs, cache, cache_locks, jobs, job_batches 등)이 생성됩니다.
MySQL 예제
MySQL용
.env설정.env파일 내 DB접속 정보가 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 기본 패스워드1
2
3
4
5
6예시 데이터 쓰기
routes/web.php파일에 아래와 같이 라우트 하나를 추가해 DB에 데이터 한 건을 삽입하세요:phpuse Illuminate\Support\Facades\DB; Route::get('/mysql-add-account', function () { DB::table('accounts')->insert([ 'name' => 'ServBay Demo User', 'email' => 'demo-user@servbay.test', '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로 데이터 삽입을 테스트합니다.예시 데이터 읽기
계정 테이블에서 데이터를 조회하려면 아래처럼 라우트를 추가합니다:
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로 접근해 테이블 데이터 확인이 가능합니다.
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)
아래 라우트를
routes/web.php에 추가해 데이터 삽입을 테스트합니다:phpuse Illuminate\Support\Facades\DB; Route::get('/pgsql-add-account', function () { DB::table('accounts')->insert([ 'name' => 'ServBay PG Demo User', 'email' => 'pg-demo-user@servbay.test', '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)
아래 라우트 추가 후, 계정 데이터를 조회해볼 수 있습니다:
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를 이용하면 Laravel 프로젝트의 로컬 개발 환경 구축, 실행이 매우 간단합니다. PHP, Composer, Caddy 웹 서버, 다양한 데이터베이스와 캐시 서비스가 미리 통합되어 있어 환경 구성에 드는 시간을 크게 줄일 수 있습니다. 새로운 Laravel 프로젝트 생성, 웹서버 설정, 개발 및 데이터베이스·캐시 연동 테스트까지 몇 가지 단계만으로 모두 진행할 수 있습니다.
개발 중 어려움이 있을 경우 ServBay 공식 문서나 커뮤니티 지원을 참고하세요.
