시작하며
이 튜토리얼에서는revolution/laravel-console-starter를 사용해 커스텀 artisan 명령어를 갖춘 Laravel 애플리케이션을 구축합니다.
이 스타터 키트를 사용하는 이점:
- 빠른 셋업 — 복잡한 설정 없이 콘솔 앱 개발을 바로 시작할 수 있습니다
- Laravel 에코시스템 — 태스크 스케줄링·데이터베이스·알림 등 Laravel의 풍부한 기능을 이용할 수 있습니다
- Artisan 명령어 — Laravel의 강력한 Artisan 시스템으로 자체 명령어를 손쉽게 만들고 관리할 수 있습니다
- 테스트 용이성 — Laravel의 테스트 프레임워크로 명령어 테스트를 작성할 수 있습니다
전제 조건
다음 소프트웨어를 설치하세요.- PHP
^8.3 - Composer(https://getcomposer.org/)
- Laravel Installer(
composer global require laravel/installer)
프로젝트 셋업
1
새 프로젝트 생성
터미널에서 다음 명령어를 실행합니다.
my-app 디렉터리가 생성되고, 콘솔 앱의 기본 구조가 셋업됩니다.설치 시에 다음이 자동 실행됩니다..env.example에서.env파일 생성php artisan key:generate에 의한 애플리케이션 키 설정
2
환경 설정 확인
기본적으로 메일 전송은 로그 출력으로 설정되어 있습니다(
MAIL_MAILER=log).실제로 메일 전송이 필요한 경우에는 .env 파일에서 Mailgun이나 Postmark, SES 등의 서비스를 설정하세요.콘솔 명령어 작성
1
명령어 생성
make:command Artisan 명령어로 새 명령어를 생성합니다.YourCommandName— 생성할 명령어의 클래스 이름(예:SendDailyReport)your:command— 명령어 호출 이름(예:report:send-daily)
app/Console/Commands/YourCommandName.php가 생성됩니다.2
명령어 구현
생성된 파일을 편집해 로직을 구현합니다. 다음은 Hello World 명령어의 예시입니다.
$signature에서 명령어 호출 이름을 정의하고, handle() 메서드에 로직을 기술합니다.3
명령어 실행
storage/logs/laravel.log와 콘솔에 메시지가 출력됩니다.GitHub Actions에서의 태스크 스케줄링
GitHub Actions를 사용하면 서버 cron 잡 없이 명령어를 정기 실행할 수 있습니다.1
워크플로 파일 확인
스타터 키트에는
.github/workflows/cron.yml이 사전 설정되어 포함되어 있습니다.2
명령어 변경
php artisan inspire를 자신의 명령어로 대체합니다.3
스케줄 조정
cron 식을 변경하여 실행 주기를 설정합니다.4
기밀 정보를 시크릿으로 관리
API 키나 패스워드 등의 기밀 정보는 GitHub 저장소 시크릿을 사용합니다.GitHub 저장소의 Settings > Secrets and variables > Actions에서 시크릿을 추가하고, 워크플로에서 참조합니다.
알림 기능
명령어의 실행 결과나 에러를 메일·Slack 등으로 알릴 수 있습니다.1
알림 클래스 생성
app/Notifications/TaskCompleted.php가 생성됩니다.2
알림 채널 설정
필요에 따라 설정 파일을 공개합니다.
3
명령어에서 알림 전송
자세한 내용은 Laravel 알림 문서를 참조하세요.
실전 애플리케이션 예시
예시 1: 웹사이트 헬스 체크와 Slack 알림
웹사이트가 온라인인지 확인하고, 문제가 감지된 경우 Slack에 알림을 전송하는 명령어입니다.1
Slack 알림 채널 설치
2
명령어와 알림 생성
3
Slack 설정
.env에 Slack webhook URL을 추가합니다.config/services.php를 업데이트합니다.4
알림 구현
app/Notifications/WebsiteDown.php를 편집합니다.5
명령어 구현
app/Console/Commands/MonitorWebsites.php를 편집합니다.6
GitHub Actions에서 스케줄 설정
.github/workflows/cron.yml을 업데이트합니다.예시 2: 암호 자산 포트폴리오 업데이트와 Discord 알림
CoinGecko API에서 암호 자산 가격을 취득하고, Discord 웹훅으로 업데이트를 전송하는 명령어입니다.1
Discord 알림 채널 설치
2
명령어와 알림 생성
3
Discord 설정
.env에 Discord webhook URL을 추가합니다.config/services.php를 업데이트합니다.4
명령어 구현 및 실행
자세한 구현은 GitHub 저장소의 튜토리얼을 참조하세요.
예시 3: 웹사이트 콘텐츠 스크래핑과 메일 알림
웹사이트에서 콘텐츠를 스크래핑하고, 결과를 메일로 전송하는 명령어입니다.1
명령어와 알림 생성
2
메일 설정
.env 파일에 메일 설정을 추가합니다.3
명령어 구현 및 실행
다음 단계
이제revolution/laravel-console-starter를 사용한 Laravel 콘솔 애플리케이션의 기본을 배웠습니다.
더 깊이 배우기 위해서:
- Laravel 문서를 탐색하세요 — Laravel 공식 문서에서 콘솔 앱을 강화할 수 있는 기능을 확인해 봅시다
- 테스트를 구현하세요 — Laravel의 테스트 프레임워크로 명령어 테스트를 작성해 신뢰성을 확보합시다
- 패키지 개발을 검토하세요 — 여러 프로젝트에서 유사한 명령어를 만든다면, 재사용 가능한 Laravel 패키지로 공개하는 것을 검토해 주세요
- 최신 정보를 파악하세요 — Laravel News나 공식 블로그를 팔로우하여 베스트 프랙티스를 항상 파악합시다