로컬 개발 환경 구성 및 실행
Laravel 프로젝트를 설치했으니 이제 로컬에서 개발하며 실행하는 방법을 알아보겠습니다. 개발 환경을 제대로 구성하면 효율적으로 Laravel을 개발할 수 있어요!
💡 강의 노트: 로컬 개발 환경은 개발자의 생산성을 좌우하는 중요한 요소입니다. 처음에 잘 설정해두면 나중에 편리해요!
🚀 Laravel 개발 서버 실행하기
기본 개발 서버
Laravel에는 개발용 웹 서버가 내장되어 있어요. 별도의 Apache나 Nginx 설치 없이 바로 시작할 수 있습니다!
# Laravel 개발 서버 실행 (가장 간단한 방법)
php artisan serve
# 실행 결과:
# Starting Laravel development server: http://127.0.0.1:8000
# [Tue Nov 18 15:30:00 2024] PHP 8.4.0 Development Server started
💬 설명:
php artisan serve: Laravel 내장 서버 실행- 기본 주소:
http://127.0.0.1:8000또는http://localhost:8000 - 서버 종료:
Ctrl + C
커스텀 호스트 및 포트
다른 주소나 포트를 사용하고 싶다면:
# 다른 포트로 실행
php artisan serve --port=8080
# 다른 호스트로 실행 (네트워크에서 접근 가능)
php artisan serve --host=0.0.0.0 --port=8000
# 커스텀 호스트와 포트
php artisan serve --host=192.168.1.100 --port=3000
🌐 네트워크 접근: --host=0.0.0.0으로 설정하면 같은 네트워크의 다른 기기에서도 접근할 수 있어요 (모바일 테스트 등에 유용!)
🔍 서버 실행 방법 심화 학습
Laravel의 artisan serve 명령은 PHP 언어에서 제공하는 자체 서버 -S 옵션을 쉽게 대체하는 편리한 도구입니다.
📖 상세 가이드
더 자세한 서버 비교와 고급 사용법이 궁금하다면:
📚 Laravel artisan serve vs PHP 내장 서버 완전 비교
이 가이드에서는 다음을 다룹니다:
- 기본 사용법 3단계 비교
- 설정 및 옵션 상세 분석
- 성능 및 메모리 사용량 실제 측정
- 실무 환경별 권장사항
💡 핵심 요약:
- Laravel 프로젝트라면
php artisan serve사용 권장 - 단순 PHP 테스트라면
php -S사용 가능 - 두 명령 모두 개발용이므로 프로덕션에서는 사용 금지
⚙️ 환경 설정 확인
.env 파일 구성
개발 환경에 맞게 .env 파일을 설정해보겠습니다:
# .env 파일 내용 확인
cat .env
개발 환경용 .env 설정:
# 애플리케이션 설정
APP_NAME="JinyPHP Demo"
APP_ENV=local
APP_DEBUG=true
APP_KEY=base64:generated-key-here
APP_TIMEZONE=Asia/Seoul
APP_URL=http://localhost:8000
# 로그 설정 (개발용)
LOG_CHANNEL=stack
LOG_LEVEL=debug
# 데이터베이스 설정 (로컬 PostgreSQL)
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=jinyphp_demo_01
DB_USERNAME=jinyphp
DB_PASSWORD=your-password
# 캐시 설정 (개발 시 비활성화)
CACHE_STORE=file
SESSION_DRIVER=file
QUEUE_CONNECTION=sync
# 메일 설정 (개발용)
MAIL_MAILER=log
MAIL_HOST=127.0.0.1
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
애플리케이션 키 생성
보안을 위해 고유한 애플리케이션 키를 생성하세요:
# 새로운 애플리케이션 키 생성
php artisan key:generate
# 결과 확인
php artisan env:get APP_KEY
🗄️ 데이터베이스 설정
마이그레이션 실행
Laravel의 기본 테이블들을 생성해보겠습니다:
# 마이그레이션 상태 확인
php artisan migrate:status
# 마이그레이션 실행 (테이블 생성)
php artisan migrate
# 샘플 데이터 생성 (선택사항)
php artisan db:seed
💡 마이그레이션이란? 데이터베이스 테이블을 코드로 관리하는 Laravel의 기능이에요. 버전 관리가 가능하고 팀원들과 스키마를 공유할 수 있습니다.
데이터베이스 연결 테스트
# 데이터베이스 연결 확인
php artisan tinker
# Tinker에서 실행:
>>> DB::connection()->getPdo();
>>> User::count();
>>> exit
🎨 프론트엔드 개발 환경
Node.js 의존성 설치
CSS와 JavaScript 개발을 위해 Node.js 패키지를 설치하세요:
# package.json 확인
cat package.json
# 의존성 설치
npm install
# 개발 의존성까지 모두 설치
npm ci
에셋 빌드 및 감시
CSS, JavaScript 파일 개발:
# 개발용 빌드 (한 번만)
npm run dev
# 파일 변경 감시 (자동 빌드)
npm run watch
# 프로덕션 빌드 (최적화된 파일)
npm run build
✨ Hot Module Replacement (HMR):
# 실시간 새로고침과 HMR
npm run hot
# Vite 개발 서버 실행
npm run dev
🔧 개발 도구 설정
Laravel Debugbar
디버깅을 위한 유용한 도구:
# Laravel Debugbar 설치 (개발용)
composer require barryvdh/laravel-debugbar --dev
# 설정 파일 발행
php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"
Debugbar 활성화 (.env):
APP_DEBUG=true
DEBUGBAR_ENABLED=true
Laravel Telescope (모니터링)
애플리케이션 모니터링 도구:
# Telescope 설치
composer require laravel/telescope --dev
# Telescope 설치
php artisan telescope:install
# 마이그레이션 실행
php artisan migrate
Telescope 접속: http://localhost:8000/telescope
💻 IDE 및 에디터 설정
VS Code 확장 프로그램
Laravel 개발에 유용한 VS Code 확장:
// 추천 확장 프로그램
{
"recommendations": [
"bmewburn.vscode-intelephense-client",
"onecentlin.laravel-extension-pack",
"ryannaddy.laravel-artisan",
"codingyu.laravel-goto-view",
"amiralizadeh9480.laravel-extra-intellisense",
"bradlc.vscode-tailwindcss"
]
}
Workspace 설정
.vscode/settings.json 파일 생성:
{
"php.suggest.basic": false,
"php.validate.executablePath": "/usr/bin/php",
"intelephense.files.exclude": [
"**/node_modules/**",
"**/vendor/**/*.js"
],
"files.associations": {
"*.blade.php": "blade"
},
"emmet.includeLanguages": {
"blade": "html"
},
"blade.format.enable": true
}
🧪 테스팅 환경
PHPUnit 설정
Laravel의 기본 테스팅 프레임워크:
# 테스트 실행
php artisan test
# 특정 테스트 실행
php artisan test --filter=UserTest
# 커버리지 확인 (xdebug 필요)
php artisan test --coverage
테스트 데이터베이스
테스트용 별도 데이터베이스 설정 (.env.testing):
# .env.testing 파일 생성
APP_ENV=testing
DB_CONNECTION=pgsql
DB_DATABASE=jinyphp_demo_01_test
# 테스트 시 메모리 DB 사용
DB_CONNECTION=sqlite
DB_DATABASE=:memory:
🚀 개발 워크플로우
일반적인 개발 순서
효율적인 Laravel 개발 흐름:
# 1. 서버 시작
php artisan serve
# 새 터미널에서
# 2. 프론트엔드 감시
npm run watch
# 새 터미널에서
# 3. 큐 워커 실행 (백그라운드 작업용)
php artisan queue:work
# 새 터미널에서
# 4. 테스트 감시
php artisan test --watch
Git 워크플로우
코드 변경 관리:
# 변경사항 확인
git status
# 스테이징
git add .
# 커밋
git commit -m "Add user authentication feature"
# 원격 저장소 푸시 (배포는 별도 섹션에서)
git push origin develop
🔨 유용한 Artisan 명령어
개발 중 자주 사용하는 명령어
# 캐시 클리어
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
# 모든 캐시 클리어
php artisan optimize:clear
# 라우트 목록 확인
php artisan route:list
# 설정 확인
php artisan config:show
# 큐 작업 확인
php artisan queue:work
php artisan queue:status
코드 생성 명령어
# 컨트롤러 생성
php artisan make:controller UserController
# 모델 생성 (마이그레이션과 함께)
php artisan make:model Post -m
# 미들웨어 생성
php artisan make:middleware CheckAge
# 폼 리퀘스트 생성
php artisan make:request StoreUserRequest
# 시더 생성
php artisan make:seeder UserSeeder
📊 성능 모니터링
쿼리 로그 활성화
데이터베이스 쿼리 모니터링:
// AppServiceProvider.php에 추가
use Illuminate\Support\Facades\DB;
public function boot()
{
if (app()->environment('local')) {
DB::listen(function ($query) {
logger()->info('Query executed', [
'sql' => $query->sql,
'bindings' => $query->bindings,
'time' => $query->time
]);
});
}
}
메모리 사용량 확인
# 현재 메모리 사용량
php -d memory_limit=512M artisan inspire
# 자세한 성능 정보
php artisan about
📂 프로젝트 구조 이해
Laravel 주요 디렉터리
jinyphp_demo_01/
├── app/ # 애플리케이션 코드
│ ├── Http/Controllers/ # 컨트롤러
│ ├── Models/ # Eloquent 모델
│ ├── Providers/ # 서비스 프로바이더
│ └── ...
├── config/ # 설정 파일
├── database/ # 마이그레이션, 시더
├── resources/ # 뷰, 에셋, 언어파일
│ ├── views/ # Blade 템플릿
│ ├── css/ # CSS 파일
│ └── js/ # JavaScript 파일
├── routes/ # 라우트 정의
│ ├── web.php # 웹 라우트
│ └── api.php # API 라우트
├── storage/ # 로그, 세션, 캐시
├── tests/ # 테스트 파일
└── vendor/ # Composer 의존성
🌍 다중 환경 관리
환경별 설정
.env 파일 종류:
.env # 메인 환경 설정
.env.local # 로컬 개발용
.env.testing # 테스트용
.env.staging # 스테이징용
.env.production # 프로덕션용
환경 전환
# 현재 환경 확인
php artisan env:get APP_ENV
# 특정 환경으로 설정
export APP_ENV=testing
php artisan config:cache
❓ 자주 발생하는 문제 해결
Q1: “php artisan serve” 실행 안 됨
A: PHP 경로 확인:
which php
php --version
export PATH="/usr/local/bin:$PATH"
Q2: 데이터베이스 연결 에러
A: 데이터베이스 서비스 상태 확인:
# PostgreSQL 확인
brew services list | grep postgresql
sudo systemctl status postgresql
# MySQL 확인
brew services list | grep mysql
sudo systemctl status mysql
Q3: npm 명령어 실행 안 됨
A: Node.js 버전 확인:
node --version
npm --version
# 필요시 Node.js 재설치
Q4: 권한 에러 (storage/logs)
A: 폴더 권한 설정:
chmod -R 755 storage
chmod -R 755 bootstrap/cache
Q5: Composer 메모리 부족
A: 메모리 제한 늘리기:
php -d memory_limit=2G /usr/local/bin/composer update
🎯 다음 단계
로컬 개발 환경 구성이 완료되었습니다! 이제:
- JinyPHP 패키지 설치 → JinyPHP 설치 가이드
- Laravel 기능 확장하기
- 실제 개발 시작
- 라우팅 학습
- 컨트롤러와 뷰 만들기
- 데이터베이스 모델 작성
- 실서버 배포 준비 → 서버 배포 가이드
- 프로덕션 환경 설정
📚 개발 환경 체크리스트
기본 환경
- Laravel 개발 서버 정상 실행 (
http://localhost:8000) - .env 파일 구성 및 APP_KEY 생성
- 데이터베이스 연결 테스트 완료
프론트엔드
- Node.js 의존성 설치 완료 (
npm install) - 에셋 빌드 테스트 (
npm run dev) - 파일 감시 설정 (
npm run watch)
개발 도구
- VS Code 확장 프로그램 설치
- Laravel Debugbar 설치 및 활성화
- Git 저장소 초기화
테스팅
- PHPUnit 테스트 실행 확인
- 테스트 데이터베이스 구성
네비게이션
- 이전: 데이터베이스 설정
- 다음: JinyPHP 패키지
- 상위: 02.Setup 목차
핵심 요약
로컬 개발 환경 구성으로 효율적인 Laravel 개발이 가능합니다.
php artisan serve: 개발 서버 실행.env파일: 환경별 설정 관리npm run watch: 프론트엔드 파일 감시- Laravel Debugbar: 디버깅 도구
다음 장에서는 JinyPHP 패키지를 설치하여 Laravel을 더욱 강력하게 확장해봅시다!
| 마지막 업데이트: 2025-11-18 | Laravel 12 & PHP 8.4 기준 |