본문 바로가기
PHP/Laravel

Laravel의 구조 파악하기

by enough 2023. 4. 6.

라라벨 구조

일단 저는 vscode를 사용하고 wsl2 환경에서 작업을 합니다.

개발 환경에 대해서는 다음에 다시 얘기해 보도록 하겠습니다.

 

일단 위에서처럼 라라벨을 설치하고 나면 많은 디렉토리와 루트 파일들이 보입니다.

뭔가 엄청 많아보여서 어질어질 할수 있으나 결론부터 말씀드리자면 우리가 많이 사용할 디렉토리는 app, resources, routes 입니다.

routes에는 라우트 코드가 담겨있는 파일들이구요.

app는 백엔드, resources는 프론트 파일들이 담겨있다고 보시면 됩니다.

쉽게 쉽게 넘어가자구요~

처음부터 어려운 이론을 펼치면 머리가 어지럽잖아요^^

 

app 디렉토리에는 다 class 파일들입니다.

객체지향적으로 설계된 프레임워크라 모든 로직이 다 객체로 구성되어 있습니다.

resources 에는 html코드로 작성된 템플릿 파일과, css, javascript 등 assets 파일들이 들어있죠.

 

그리고 루트 파일들을 살펴보면 가장 중요한 .env 설정파일이 있습니다.

여기에 라라벨 애플리케이션의 기초설정들이 들어있습니다.

 

.env 파일

 

뭐가 엄청 많긴 한데 우리가 우선 여겨봐야 할 건 가운데 DB_로 시작 된 설정들입니다.

우리는 여기서 편하게 데이터베이스 커넥션 정보를 설정할 수 있죠.

 

그리고 한가지 더 중요한 건 바로 위에 보시면 APP_KEY라고 있는데 처음에는 값이 비여있고 콘솔에서 아래와 같은 커멘드로 생성할 수 있습니다.

 

php artisan key:generate

 

해당 키는 각종 암호화작업에 사용됩니다.

예를 들면 비밀번호를 암호화할 때 사용되기에 지금 쓰고 있는 라라벨에서 가입한 회원은 다른 키를 사용하고 있는 라라벨에서 로그인이 안됩니다.그래서 보안을 위해서라도 복사하지 말고 프로젝트마다 새로 생성해서 사용하는게 좋겠죠.

 

그리고 또 하나의 중요한 파일이 있는데요.

라라벨의 CLI 인 artisan(아티즌) 입니다.

역시 어떤 프레임워크든 다 자신만의 커멘드 라인 툴을 보유하고 있네요.

위에도 한번 사용했었지만 php로 바로 실행할 수 있는 php코드로 이루어져있습니다.

 

라라벨의 CLI, artisan

 

파일을 열어보시면 맨 윗줄에 실행주체가 명시되어 있기에 php를 안붙히고 바로 실행할 수도 있습니다.

./artisan ***

다만 그럴려면 아래와 같이 실행권한을 부여해 줘야합니다.(처음부터 부여되어 있을 수도 있음)

chmod +x artisan

 

artisan은 앞으로 개발작업에 많이 사용됩니다.

클래스파일, 템플릿파일 생성, 마이그레이션, 개발서버 실행, 라우트정보 확인 등등 우리가 작업할 때 필요한 많은 기능들을 편하게 수행할 수 있는 도구로 사용법을 꼭 익혀두시면 좋습니다.

 

 

그리고 마지막으로 우리가 작업을 하지는 않지만 아주 중요한 디렉토리가 하나 있는데요

바로 public 입니다.

 

public 디렉토리

 

이 디렉토리는 라라벨 프로젝트에서 유일하게 외부로 오픈하는 배포 디렉토리입니다.

즉 유저들이 우리의 사이트에 접속할 때 public 디렉토리가 루트경로로 되고 그 상위에 있는 모든 작업파일들은 닿을 수가 없기 때문에 더욱 안전하게 되는거죠.

디렉토리안에 보시면 index.php가 라라벨 애플리케이션의 진입점이 되겠구요.

웹서버에서 모든 php요청에 대해 해당 파일로 rewrite 하면 됩니다.

 

그리고 assets 정적파일 즉 css, js 파일들도 이 디렉토리에 들어오게 됩니다.

엥? 아까 resources 안에 있는 게 아니냐구요?

물론 맞습니다만 resources 안에는 우리가 작업한 파일들이구요.

실제로 배포되는 건 public 이랍니다.

상세한 건 assets 편에서 다시 설명하도록 하겠습니다.

 

그럼 라라벨 구조에 대해서는 여기까지입니다.

감사합니다~

'PHP > Laravel' 카테고리의 다른 글

Laravel의 프론트 스택 - Livewire  (0) 2023.04.07
Laravel 의 프론트 스택 - Blade (1)  (0) 2023.04.07
Laravel 서론  (0) 2023.04.06