라라벨에서 프로젝트 설정을 위한 초보자 가이드

이 글에서는 Laravel의 기본 구성 요소를 살펴보고 Laravel을 사용하여 작은 프로젝트를 설정하는 방법에 대해 알아볼 것입니다.

Laravel은 간단함, 다양성, 강력한 기능으로 개발자들 사이에서 엄청난 인기를 얻은 강력하고 우아한 PHP 웹 애플리케이션 프레임워크입니다. 몇 년 동안 Laravel은 크고 작은 프로젝트를 위한 기본 PHP 프레임워크가 되었습니다.

사전 준비: Laravel 시작하기

Laravel 개발에 뛰어들기 전에 필요한 모든 도구와 소프트웨어가 설치되어 있는지 확인해야 합니다. 다음은 필요한 것들입니다.

  • PHP. Laravel은 PHP를 기반으로 하므로 가장 먼저 시스템에 PHP가 설치되어 있는지 확인해야 합니다. PHP 설치 여부를 확인하려면 터미널이나 명령 프롬프트를 열고 php -v를 입력하십시오. PHP가 설치되어 있으면 버전 번호가 표시됩니다. 그렇지 않으면 설치해야 합니다.

    시스템에 PHP를 설치하려면 몇 가지 옵션이 있습니다:

    로컬 설치. PHP를 컴퓨터에 직접 설치할 수 있습니다. PHP 다운로드 페이지를 방문하여 운영 체제용 최신 버전을 얻으십시오.

    Laravel Homestead. PHP 개발에 익숙하지 않은 경우 더 간결한 설정을 위해 Laravel Homestead를 고려해 보십시오. Homestead는 Laravel용 완전한 개발 환경을 제공하는 미리 패키징된 Vagrant 박스입니다. 여기에서 설치 지침을 확인할 수 있습니다.

  • Composer. Laravel은 Composer를 사용하여 의존성을 관리합니다. Composer는 기본 PHP 의존성 관리자로, 널리 사용되고 잘 문서화되어 있습니다.

  • 라라벨 설치기. 라라벨은 라라벨 설치기를 사용하여 시스템 전역에 설치할 수 있습니다. 이는 라라벨 프로젝트를 생성하는 과정을 간소화하고 원활하게 만들어주는 편리한 명령줄 도구입니다. 시스템 전역에 설치하려면 다음 단계를 따르세요:

    1. 터미널이나 명령 프롬프트를 엽니다.
    2. 다음 Composer 명령을 실행하세요:
    composer global require laravel/installer
    

    설치가 완료되면 Composer의 전역 bin 디렉토리가 시스템의 “PATH”에 있는지 확인하여 어디서든지 laravel 명령을 실행할 수 있도록 해야 합니다.

    호메스테드보다 가벼운 대안을 선호한다면 라라벨 헐드를 고려해보세요. 헐드는 라라벨 프로젝트에 특화된 Docker 기반의 로컬 개발 환경입니다. 헐드에 대해 자세히 알고 어떻게 설정하는지 여기서 배울 수 있습니다.

PHP, Composer, Laravel Installer로 개발 환경을 설정하거나 Homestead나 Herd와 같은 옵션을 탐색하여 Laravel 여정을 시작할 준비가 잘 되어 있습니다. 다음 섹션에서는 새 Laravel 프로젝트를 생성하는 과정, 디렉토리 구조를 살펴보고, 개발 환경을 구성하는 방법에 대해 살펴볼 것입니다.

새 Laravel 프로젝트 설정

개발 환경이 준비되었으므로 이제 새 Laravel 프로젝트를 생성할 시간입니다. 새로운 “빈” 프로젝트를 생성하려면 다음 터미널 명령어를 사용할 수 있습니다:

composer create-project --prefer-dist laravel/laravel project-name

project-name을 실제 프로젝트 이름으로 대체해야 합니다. 이 명령어는 Laravel의 최신 버전을 다운로드하고 필요한 모든 파일과 의존성이 포함된 새 프로젝트 디렉토리를 설정합니다.

디렉토리 구조: Laravel 프로젝트 탐색

새 Laravel 프로젝트를 생성함으로써 잘 구성된 디렉토리 구조 안에 있게 됩니다. 이 구조를 이해하는 것은 효과적인 Laravel 개발에 중요합니다. 다음은 주요 디렉토리들과 그 용도입니다:

  • . 이 디렉토리에는 컨트롤러, 모델, 서비스 제공자를 포함한 애플리케이션의 핵심 로직이 위치합니다.
  • 부트스트랩. Laravel의 부트스트래핑 및 구성 파일이 여기에 있습니다.
  • 구성. 애플리케이션의 다양한 구성 요소에 대한 구성 파일은 여기에서 찾을 수 있으며, 데이터베이스 연결 및 서비스와 같은 설정을 프로젝트의 단일 지점에서 찾아서 사용자 정의할 수 있습니다.
  • 데이터베이스. 이 디렉토리에서는 Laravel의 Eloquent ORM에 사용될 데이터베이스 마이그레이션 및 시드를 정의합니다. Eloquent는 데이터베이스 관리를 간소화합니다.
  • 공개. CSS, JavaScript, 이미지와 같은 공개적으로 접근 가능한 자산은 여기에 속합니다. 이 디렉토리에는 또한 애플리케이션의 진입점인 index.php 파일이 포함되어 있습니다.
  • 자원. 애플리케이션의 원시 및 미컴파일된 자산, 예를 들어 Blade 템플릿, Sass, JavaScript가 여기에 저장됩니다.
  • 경로. Laravel의 라우팅 구성은 이 디렉토리에서 관리됩니다.
  • 저장소. 임시 및 캐시 파일, 로그가 여기에 저장됩니다.
  • 공급업체. Composer는 이 디렉토리에서 프로젝트의 종속성을 관리합니다. 다운로드한 모든 라이브러리는 이 디렉토리에 있습니다.

구성: 데이터베이스 설정 및 환경 변수

데이터베이스 연결을 구성하려면 프로젝트의 루트 디렉토리에서 .env 파일을 열어야 합니다. 여기에서 데이터베이스 유형, 호스트, 사용자 이름, 암호 및 데이터베이스 이름을 지정할 수 있습니다. Eloquent ORM 덕분에 Laravel은 여러 데이터베이스 연결을 지원하므로 다양한 프로젝트 요구사항에 유연하게 대응할 수 있습니다.

.env 파일 이해

.env 파일은 데이터베이스 연결 세부 정보, API 키 및 기타 설정과 같은 환경별 구성 값을 정의하는 곳입니다. .env 파일에서 찾을 수 있는 간단한 예를 살펴보겠습니다.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my_database
DB_USERNAME=my_username
DB_PASSWORD=my_password

이 예시에서:

  • DB_CONNECTION은 우리가 사용하는 데이터베이스 드라이버의 유형(예: MySQL, PostgreSQL, SQLite)을 지정합니다.
  • DB_HOST는 데이터베이스 서버가 위치한 호스트를 지정합니다.
  • DB_PORT는 데이터베이스 서버가 실행 중인 포트를 지정합니다.
  • DB_DATABASE는 연결하려는 데이터베이스의 이름을 지정합니다.
  • DB_USERNAMEDB_PASSWORD는 데이터베이스에 접근하는 데 필요한 사용자 이름과 암호를 지정합니다.

환경 변수 사용

데이터베이스 자격 증명과 같은 민감한 정보를 보안하는 것이 중요합니다. Laravel은 환경 변수를 사용하여 이를 달성하도록 권장합니다. .env 파일에 자격 증명을 하드코딩하는 대신 구성 파일에서 참조할 수 있습니다.

예를 들어, 우리의 Laravel 설정 파일(config/ 디렉토리에 위치)에서 데이터베이스 설정을 참조하는 방법은 다음과 같습니다:

'mysql' => [
    'driver' => env('DB_CONNECTION', 'mysql'),
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    // ...
],

여기서 env() 함수는 .env 파일에서 지정된 환경 변수의 값을 검색합니다. 변수를 찾을 수 없으면 두 번째 인수로 제공된 기본값으로 대체됩니다.

설정 파일을 사용하면 민감한 데이터를 보다 안전한 위치에 저장하고 개발 및 프로덕션과 같은 환경 간에 설정을 쉽게 전환할 수 있습니다.

Laravel 프로젝트를 생성하고 디렉토리를 구성하고 데이터베이스를 구성한 후 웹 애플리케이션 구축을 시작할 준비가 되었습니다. 다음 섹션에서는 라우팅, 컨트롤러 및 프런트엔드 뷰용 Blade 템플릿 작업에 중점을 둘 것입니다.

라우팅, 컨트롤러 및 뷰: Laravel 애플리케이션의 핵심

라라벨에서 라우팅, 컨트롤러 및 뷰는 HTTP 요청을 처리하고 동적 웹 페이지를 렌더링하는 데 함께 작동합니다. 이러한 개념을 이해하는 것은 라라벨로 웹 애플리케이션을 만드는 데 필수적입니다.

간단히 말해서 HTTP 요청은 라우터에 의해 수신되며 라우터는 어떤 컨트롤러가 작업을 처리해야 하는지 알고 있습니다. 컨트롤러는 정보를 처리하고 뷰를 통해 처리된 정보를 표시하는 책임이 있습니다.

라우팅

라라벨에서 라우트는 routes/web.php 파일에서 정의할 수 있습니다. 기본 라우트 정의는 다음과 같습니다:

Route::get('/welcome', function () {
    return view('welcome');
});

이 예시는 접속 시 welcome 뷰를 반환하는 라우트를 설정합니다. 위에서 언급한 것처럼 라우트는 컨트롤러 액션을 호출하는 데에도 사용되어 코드를 보다 효율적으로 구성할 수 있습니다.

컨트롤러 생성

Controllers는 우리의 라우트와 애플리케이션 로직 사이의 다리 역할을 합니다. 컨트롤러를 생성하려면 make:controller 명령어를 사용할 수 있습니다.

php artisan make:controller YourControllerName

새로운 컨트롤러는 애플리케이션의 다양한 액션에 해당하는 메서드를 포함하고 있습니다. 이는 페이지 표시나 폼 데이터 처리 등을 포함합니다.

뷰와 Blade 템플릿

라라벨의 뷰는 사용자에게 애플리케이션의 데이터를 표시하는 역할을 합니다. 기본적으로 라라벨은 Blade라는 템플릿 엔진을 사용하며, 이는 동적이고 재사용 가능한 뷰를 생성하는 데 간단합니다. 컨트롤러 메서드 내에서 뷰를 렌더링하는 예시는 다음과 같습니다:

public function index()
{
    $data = ['name' => 'John'];
    return view('welcome', $data);
}

이 예시에서는 welcome 뷰가 데이터와 함께 렌더링되며, 이 경우 'name'이 전달됩니다.

Blade는 조건문, 반복문 등을 통해 동적 콘텐츠를 생성할 수 있는 강력한 템플릿 엔진입니다.

데이터베이스 마이그레이션 및 시드

Laravel의 데이터베이스 마이그레이션 및 시드 시스템을 사용하면 데이터베이스 스키마를 정의하고 초기 데이터로 채울 수 있습니다. 마이그레이션을 버전 제어된 데이터베이스 변경사항으로 볼 수 있으며, 시드를 샘플 데이터를 추가하는 과정으로 볼 수 있습니다.

마이그레이션과 시드는 환경 간 데이터베이스 일관성을 허용하는 매우 강력한 개념입니다.

마이그레이션을 생성하려면 make:migration 명령어를 사용할 수 있습니다:

php artisan make:migration create_table_name

생성된 마이그레이션 파일을 편집하여 테이블 구조를 정의한 다음 Artisan을 사용하여 마이그레이션을 실행할 수 있습니다:

php artisan migrate

시드는 종종 테스팅 및 개발을 위해 테이블을 초기 데이터로 채우는 데 사용됩니다. 시드를 생성하려면 make:seeder 명령어를 사용하고 다음과 같이 실행할 수 있습니다:

php artisan db:seed

데이터베이스 상호 작용을 위한 모델 생성

Laravel의 Eloquent ORM은 데이터베이스를 객체처럼 다루어 데이터베이스 상호 작용을 단순화합니다. 모델을 생성하려면 make:model 명령어를 사용합니다:

php artisan make:model YourModelName

모델에서 테이블과 관계를 정의하여 데이터 검색 및 조작을 쉽게 할 수 있습니다. 예를 들어 users 테이블에서 모든 레코드를 검색하려면:

$users = YourModelName::all();

이 모든 지식을 활용하여 라우팅, 컨트롤러, 뷰, 데이터베이스 마이그레이션, 시드 및 모델을 통합하여 Laravel로 동적 웹 애플리케이션을 구축할 수 있습니다. 다음 섹션에서는 간단한 CRUD 애플리케이션을 생성하고 더 고급 라라벨 기능을 탐색하겠습니다.

라라벨에서 간단한 CRUD 애플리케이션 생성

라라벨 여행을 다음 단계로 끌어올리기 위해 CRUD 애플리케이션을 만들어 보겠습니다. 이 경우, 책 등록 애플리케이션으로, 책을 생성, 읽기, 업데이트 및 삭제할 수 있습니다. 이 실습을 통해 라라벨에서 CRUD 작업을 구현하는 방법을 이해하게 될 것입니다.

이 글의 크기를 고려하여 초기 페이지만 생성하는 데 초점을 맞출 것이므로, 이 애플리케이션을 완성하는 것은 여러분에게 달려있습니다!

1 단계: 책 테이블에 대한 마이그레이션 생성

책 테이블에 대한 마이그레이션을 생성하려면 다음 명령어를 사용하세요:

php artisan make:migration create_books_table

이 명령어는 데이터베이스의 책 테이블을 생성하는 마이그레이션 파일을 생성합니다. 다음으로, 방금 생성한 마이그레이션 파일(database/migrations/YYYY_MM_DD_create_books_table.php)을 편집하여 테이블 구조를 정의하세요:

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateBooksTable extends Migration
{
    public function up()
    {
        Schema::create('books', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->string('author');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('books');
    }
}

이 마이그레이션 파일에서 책 테이블의 구조를 정의하고, 열(id, title, author, timestamps)을 포함합니다. 그런 다음 테이블을 생성하기 위해 마이그레이션을 실행하고 싶습니다:

php artisan migrate

이 명령어는 마이그레이션 파일을 실행하고 데이터베이스에 책 테이블을 생성합니다.

2 단계: 책 테이블에 대한 시더 생성

다음으로, 초기 데이터로 책 테이블을 채우기 위한 시더를 생성하고 싶습니다:

php artisan make:seeder BooksTableSeeder

이 명령어는 초기 데이터로 책 테이블을 채우는 시더 파일을 생성합니다.

시더 파일(database/seeders/BooksTableSeeder.php)을 편집하여 샘플 책 데이터를 정의하세요:

use Illuminate\Database\Seeder;

class BooksTableSeeder extends Seeder
{
    public function run()
    {
        DB::table('books')->insert([
            ['title' => 'Book 1', 'author' => 'Author A'],
            ['title' => 'Book 2', 'author' => 'Author B'],
            ['title' => 'Book 3', 'author' => 'Author C'],
        ]);
    }
}

이 시디 파일에서는 books 테이블에 삽입될 샘플 도서 데이터를 정의합니다. 이 경우에는 1부터 3까지의 책과 A부터 C까지의 저자를 생성합니다.

시디를 실행하여 books 테이블을 채우십시오:

php artisan db:seed --class=BooksTableSeeder

이 명령어는 시디 파일을 실행하고 정의된 샘플 데이터로 books 테이블을 채웁니다.

3단계: 컨트롤러 생성

도서 관리를 위한 컨트롤러를 생성하십시오:

php artisan make:controller BookController

이 명령어는 CRUD 작업과 관련된 메서드를 포함하는 컨트롤러 파일(BookController.php)을 생성합니다. 컨트롤러가 생성되었으므로 BookController에서 CRUD 메서드를 구현하는 것에 집중하겠습니다. 이 파일은 app/Http/Controllers/BookController.php에 위치합니다:

use App\Book; // Book 모델 임포트

public function index()
{
    $books = Book::all();
    return view('books.index', compact('books'));
}

public function create()
{
    return view('books.create');
}

public function store(Request $request)
{
    $book = new Book;
    $book->title = $request->input('title');
    $book->author = $request->input('author');
    $book->save();

    return redirect()->route('books.index');
}

// 유사하게 edit, update, show, delete 메서드 구현

이 컨트롤러 파일에서는 도서와 관련된 CRUD 작업을 처리하는 메서드를 정의합니다. 예를 들어, index 메서드는 데이터베이스에서 모든 책을 검색하고 index 뷰에 전달하는 반면, store 메서드는 폼을 통해 제출된 데이터를 기반으로 새 도서 레코드를 생성합니다. create() 메서드는 새 도서 레코드를 생성하기 위한 폼을 표시하는 데 책임이 있습니다. 사용자가 이 메서드와 연결된 라우트로 이동하면 Laravel은 이 함수를 실행하고 books.create라는 뷰를 반환합니다.

4단계: 뷰 생성

리소스/뷰 폴더에서 책을 나열, 생성 및 편집하기 위한 뷰를 생성하세요.

예시 뷰 (create.blade.php):

@extends('layout')

@section('content')
  <h1>Create a New Book</h1>
  <form method="POST" action="{{ route('books.store') }}">
    @csrf
    <div class="form-group">
      <label for="title">Title</label>
      <input type="text" name="title" class="form-control" id="title" placeholder="Enter book title">
    </div>
    <div class="form-group">
      <label for="author">Author</label>
      <input type="text" name="author" class="form-control" id="author" placeholder="Enter author name">
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
  </form>
  <a href="{{ route('books.index') }}">Back to the list</a>
@endsection

이 예시에서 create 뷰는 새 책을 추가하기 위한 양식을 포함합니다. 이 양식은 BookControllerstore 메서드로 데이터를 제출합니다. @csrf 지시자는 교차 사이트 요청 위조로부터 보호하기 위한 CSRF 토큰을 생성합니다.

이 예시를 통해 나머지 CRUD 작업에 대한 컨트롤러 메서드와 뷰를 구현할 수 있을 것입니다. 그러니 작업을 시작하세요!

결론

이 글에서는 Laravel 애플리케이션의 기본을 살펴보았습니다: 명령 줄을 사용하여 애플리케이션을 구축하는 방법, Laravel 애플리케이션의 구조, 그리고 Laravel에서 CRUD 애플리케이션을 생성하는 방법을 알아보았습니다.

I hope this article was useful and that you’re now capable of using Laravel to create your applications and expand the information here with more advanced topics. More information on Laravel can be found at the official Laravel website.

Source:
https://www.sitepoint.com/laravel-project-setup-beginners-guide/