시작하며
이 튜토리얼에서는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)
프로젝트 셋업
새 프로젝트 생성
터미널에서 다음 명령어를 실행합니다.
my-app 디렉터리가 생성되고, 콘솔 앱의 기본 구조가 셋업됩니다.설치 시에 다음이 자동 실행됩니다..env.example에서.env파일 생성php artisan key:generate에 의한 애플리케이션 키 설정
콘솔 명령어 작성
명령어 생성
make:command Artisan 명령어로 새 명령어를 생성합니다.YourCommandName— 생성할 명령어의 클래스 이름(예:SendDailyReport)your:command— 명령어 호출 이름(예:report:send-daily)
app/Console/Commands/YourCommandName.php가 생성됩니다.명령어 구현
생성된 파일을 편집해 로직을 구현합니다. 다음은 Hello World 명령어의 예시입니다.
$signature에서 명령어 호출 이름을 정의하고, handle() 메서드에 로직을 기술합니다.GitHub Actions에서의 태스크 스케줄링
GitHub Actions를 사용하면 서버 cron 잡 없이 명령어를 정기 실행할 수 있습니다.스케줄 조정
cron 식을 변경하여 실행 주기를 설정합니다.| cron 식 | 실행 타이밍 |
|---|---|
0 0 * * * | 매일 UTC 오전 0시 |
0 */6 * * * | 6시간마다 |
0 0 * * 1 | 매주 월요일 오전 0시 |
알림 기능
명령어의 실행 결과나 에러를 메일·Slack 등으로 알릴 수 있습니다.자세한 내용은 Laravel 알림 문서를 참조하세요.
실전 애플리케이션 예시
예시 1: 웹사이트 헬스 체크와 Slack 알림
웹사이트가 온라인인지 확인하고, 문제가 감지된 경우 Slack에 알림을 전송하는 명령어입니다.예시 2: 암호 자산 포트폴리오 업데이트와 Discord 알림
CoinGecko API에서 암호 자산 가격을 취득하고, Discord 웹훅으로 업데이트를 전송하는 명령어입니다.명령어 구현 및 실행
자세한 구현은 GitHub 저장소의 튜토리얼을 참조하세요.
예시 3: 웹사이트 콘텐츠 스크래핑과 메일 알림
웹사이트에서 콘텐츠를 스크래핑하고, 결과를 메일로 전송하는 명령어입니다.다음 단계
이제revolution/laravel-console-starter를 사용한 Laravel 콘솔 애플리케이션의 기본을 배웠습니다.
더 깊이 배우기 위해서:
- Laravel 문서를 탐색하세요 — Laravel 공식 문서에서 콘솔 앱을 강화할 수 있는 기능을 확인해 봅시다
- 테스트를 구현하세요 — Laravel의 테스트 프레임워크로 명령어 테스트를 작성해 신뢰성을 확보합시다
- 패키지 개발을 검토하세요 — 여러 프로젝트에서 유사한 명령어를 만든다면, 재사용 가능한 Laravel 패키지로 공개하는 것을 검토해 주세요
- 최신 정보를 파악하세요 — Laravel News나 공식 블로그를 팔로우하여 베스트 프랙티스를 항상 파악합시다