
PHP 프레임워크 – Symfony – 설치와 구성
안녕하세요 여러분 😊
이번 시간에는 Symfony 프레임워크를 본격적으로 사용하기 위한 설치 방법과 기본 구성에 대해 알아보겠습니다!
Symfony는 구조가 체계적이고 모듈화가 잘 되어 있어서, 처음에는 다소 복잡해 보일 수 있지만
한 번만 익혀두면 다양한 웹 프로젝트에서 안정적으로 활용하실 수 있어요.
Symfony는 **“자동화된 고급 레고 세트”**라고 보시면 딱 맞습니다!
필요한 모듈만 끼워 넣으면 어떤 시스템이든 멋지게 조립할 수 있는 느낌이죠 🧱💡
1. Symfony 설치를 위한 준비사항
Symfony는 PHP 기반 프레임워크이기 때문에, 먼저 PHP 환경이 준비되어 있어야 해요.
✅ 필수 설치 항목
항목 | 설명 |
---|---|
PHP 8.1 이상 | 최신 Symfony는 PHP 8 이상을 권장해요 |
Composer | PHP 패키지 관리자 |
Symfony CLI (선택적이지만 강력 추천) | 개발 편의성과 실행 속도 향상 |
데이터베이스 | MySQL, PostgreSQL, SQLite 등 가능 |
2. Symfony CLI 설치 (강력 추천)
Symfony는 전용 CLI 도구를 제공합니다.
이걸 설치하면 서버 실행, 프로젝트 생성, 번들 관리 등을 아주 쉽게 할 수 있어요!
💻 설치 명령어 (Linux / Mac / WSL 기준)
curl -sS https://get.symfony.com/cli/installer | bash
윈도우 사용자라면 공식 설치 가이드에서 .exe
설치 프로그램을 다운로드하세요!
설치 후에는 아래처럼 버전 확인이 가능합니다:
symfony -v
3. 새로운 Symfony 프로젝트 생성
기본 웹 애플리케이션 템플릿 생성
symfony new my_project_name --webapp
옵션 | 설명 |
---|---|
--webapp |
Twig, Doctrine, Security 등 일반적인 웹 앱 구성요소 포함 |
--full |
전체 기능 포함 (대규모 프로젝트용) |
--api |
API 전용 구성 (Twig 생략, JSON 기반 API에 적합) |
프로젝트 생성 후 디렉터리로 이동:
cd my_project_name
4. Symfony 서버 실행하기
로컬에서 테스트 서버를 즉시 실행하려면:
symfony serve
기본적으로 http://127.0.0.1:8000 주소로 실행됩니다.
브라우저에서 접속하면 Symfony 환영 페이지가 보일 거예요 🎉
5. 프로젝트 디렉터리 구조 이해하기
Symfony는 아래와 같은 구조를 가지고 있어요:
my_project/
├── bin/ # 실행 스크립트 (console 포함)
├── config/ # 설정 파일 (routes, packages, services 등)
├── public/ # 웹 루트 (index.php 존재)
├── src/ # 애플리케이션 코드 (Controller, Entity 등)
├── templates/ # Twig 템플릿 파일
├── tests/ # PHPUnit 테스트
├── translations/ # 다국어 번역
├── var/ # 캐시, 로그 저장
├── vendor/ # Composer 라이브러리
└── .env # 환경변수 설정
6. 환경 설정 (.env
파일)
Symfony는 .env
파일을 통해 환경별 설정을 쉽게 바꿀 수 있어요.
APP_ENV=dev
APP_SECRET=your_app_secret
DATABASE_URL="mysql://user:password@127.0.0.1:3306/mydb"
환경별 설정이 필요한 경우 .env.dev
, .env.test
등을 따로 작성할 수도 있습니다.
7. 라우팅 설정
기본 라우팅은 config/routes.yaml
또는 attributes
방식으로 설정해요.
# config/routes.yaml
home:
path: /
controller: App\Controller\HomeController::index
혹은 컨트롤러에서 바로 어노테이션 방식으로도 가능해요:
use Symfony\Component\Routing\Annotation\Route;
class HomeController extends AbstractController
{
#[Route('/', name: 'home')]
public function index()
{
return $this->render('home/index.html.twig');
}
}
8. Twig 템플릿 설정
Twig는 Laravel의 Blade와 유사한 템플릿 엔진이에요.
templates/
폴더에 .html.twig
파일을 만들면 바로 사용 가능해요.
{# templates/home/index.html.twig #}
<h1>안녕하세요 Symfony!</h1>
<p>{{ message }}</p>
컨트롤러에서 변수 전달도 아래처럼 가능하죠:
return $this->render('home/index.html.twig', [
'message' => '환영합니다!',
]);
9. 데이터베이스 설정과 Doctrine 연동
Symfony는 기본 ORM으로 Doctrine을 사용합니다.
.env
에서 DB 정보를 설정한 뒤:
composer require symfony/orm-pack
composer require --dev symfony/maker-bundle
엔티티 생성:
php bin/console make:entity
마이그레이션 실행:
php bin/console doctrine:migrations:migrate
10. 캐시/로그 관리
- 캐시 삭제:
php bin/console cache:clear
- 로그 확인:
var/log/dev.log
- 설정 확인:
php bin/console debug:config
주의할 점 ✅
항목 | 주의사항 |
---|---|
PHP 버전 | Symfony 최신 버전은 PHP 8.1 이상 필요 |
캐시 초기화 | 설정 변경 후엔 cache:clear 필수 |
파일 권한 | var/ , vendor/ 디렉터리는 웹서버가 읽을 수 있도록 권한 설정 |
번들 설치 | 기능이 빠져 있다면 composer require 로 직접 추가 필요 |
Composer | Symfony는 composer 기반이므로 composer 설치 필수 |
요약 정리 🎯
작업 | 명령어 | |
---|---|---|
Symfony CLI 설치 | `curl -sS https://get.symfony.com/cli/installer | bash` | |
프로젝트 생성 | symfony new my_project --webapp |
|
서버 실행 | symfony serve |
|
엔티티 생성 | php bin/console make:entity |
|
DB 마이그레이션 | php bin/console doctrine:migrations:migrate |
|
캐시 삭제 | php bin/console cache:clear |
마무리하며 😊
Symfony는 처음엔 다소 구조가 복잡해 보일 수 있지만,
한 번 적응하고 나면 확장성과 유지보수성이 정말 뛰어난 프레임워크예요!
오늘 배운 설치 및 기본 구성 방법을 통해
앞으로 Symfony로 멋진 웹 애플리케이션을 만들어 나갈 수 있는 튼튼한 발판이 되셨길 바라요 🙌
다음 시간에는 Symfony의 라우팅과 컨트롤러 구조를 좀 더 깊이 있게 파헤쳐볼게요!
그럼 오늘도 코딩이 즐거운 하루 되세요~ 🐘💻✨