웹사이트 검색

Ubuntu 14.04에서 Nginx 웹 서버와 함께 Laravel을 설치하는 방법


소개

Laravel은 웹 개발자를 위한 최신 오픈 소스 PHP 프레임워크입니다. 개발자가 완전한 기능을 갖춘 웹 애플리케이션을 신속하게 실행할 수 있는 쉽고 우아한 방법을 제공하는 것을 목표로 합니다.

이 가이드에서는 Ubuntu 14.04에 Laravel을 설치하는 방법에 대해 설명합니다. 우리는 Nginx를 웹 서버로 사용할 것이며 이 글을 쓰는 시점에 Laravel의 최신 버전인 버전 4.2로 작업할 것입니다.

백엔드 구성 요소 설치

Laravel을 시작하기 위해 가장 먼저 해야 할 일은 이를 지원할 스택을 설치하는 것입니다. Ubuntu의 기본 리포지토리를 통해 이 작업을 수행할 수 있습니다.

먼저, 사용 가능한 패키지의 새로운 목록이 있는지 확인하기 위해 로컬 패키지 인덱스를 업데이트해야 합니다. 그런 다음 필요한 구성 요소를 설치할 수 있습니다.

sudo apt-get update
sudo apt-get install nginx php5-fpm php5-cli php5-mcrypt git

이렇게 하면 Laravel 코드를 실제로 실행하는 데 필요한 PHP 도구와 함께 웹 서버로 Nginx가 설치됩니다. Laravel을 설치하는 데 사용할 PHP의 종속성 관리자인 composer 도구가 이를 사용하여 패키지를 풀다운하기 때문에 git도 설치합니다.

PHP 구성 수정

이제 구성 요소가 설치되었으므로 구성을 시작할 수 있습니다. 꽤 간단한 PHP부터 시작하겠습니다.

가장 먼저 해야 할 일은 Nginx가 사용하는 PHP-fpm 프로세서의 기본 PHP 구성 파일을 여는 것입니다. 텍스트 편집기에서 sudo 권한으로 이것을 엽니다.

sudo nano /etc/php5/fpm/php.ini

이 파일에서 하나의 값만 수정하면 됩니다. cgi.fix_pathinfo 매개변수를 검색하십시오. 이것은 주석 처리되고 "1\로 설정됩니다. 주석을 제거하고 "0\으로 설정해야 합니다.

cgi.fix_pathinfo=0

이것은 요청된 파일 이름을 찾을 수 없는 경우 유사한 이름의 스크립트를 실행하지 않도록 PHP에 지시합니다. 이러한 유형의 동작을 허용하면 공격자가 PHP를 속여서는 안 되는 코드를 실행하도록 특수 설계된 요청을 만들 수 있기 때문에 이는 매우 중요합니다.

완료되면 파일을 저장하고 닫습니다.

우리가 해야 할 PHP 관리의 마지막 부분은 Laravel이 의존하는 MCrypt 확장을 명시적으로 활성화하는 것입니다. 선택적 모듈을 쉽게 활성화할 수 있는 php5enmod 명령을 사용하여 이 작업을 수행할 수 있습니다.

sudo php5enmod mcrypt

이제 변경 사항을 구현하기 위해 php5-fpm 서비스를 다시 시작할 수 있습니다.

sudo service php5-fpm restart

이제 PHP가 완전히 구성되었으며 계속 진행할 수 있습니다.

Nginx 및 웹 루트 구성

다음으로 다루어야 할 항목은 웹 서버입니다. 여기에는 실제로 두 가지 단계가 포함됩니다.

첫 번째 단계는 Laravel 파일을 보관하는 데 사용할 문서 루트 및 디렉토리 구조를 구성하는 것입니다. 우리는 파일을 /var/www/laravel라는 디렉토리에 둘 것입니다.

이때 이 경로의 최상위 수준(/var)만 생성됩니다. -p 플래그를 mkdir 명령에 전달하여 전체 경로를 한 번에 생성할 수 있습니다. 이는 지정된 경로를 구성하는 데 필요한 모든 필수 상위 경로 요소를 생성하도록 유틸리티에 지시합니다.

sudo mkdir -p /var/www/laravel

이제 Laravel 구성 요소를 위한 위치를 따로 설정했으므로 Nginx 서버 블록 편집으로 이동할 수 있습니다.

sudo 권한으로 기본 서버 블록 구성 파일을 엽니다.

sudo nano /etc/nginx/sites-available/default

설치 시 이 파일에는 몇 가지 설명이 포함되어 있지만 기본 구조는 다음과 같습니다.

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /usr/share/nginx/html;
        index index.html index.htm;

        server_name localhost;

        location / {
                try_files $uri $uri/ =404;
        }
}

이것은 우리가 만들 변화를 위한 좋은 기초를 제공합니다.

가장 먼저 변경해야 할 것은 문서 루트의 위치입니다. 라라벨은 우리가 생성한 /var/www/laravel 디렉토리에 설치될 것입니다.

그러나 앱을 구동하는 데 사용되는 기본 파일은 public이라는 하위 디렉토리에 보관됩니다. 여기에서 문서 루트를 설정할 것입니다. 또한 디렉토리 위치를 요청할 때 HTML 파일을 찾기 전에 index.php 파일을 제공하도록 Nginx에 지시합니다.

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /var/www/laravel/public;
    index index.php index.html index.htm;

    server_name localhost;

    location / {
            try_files $uri $uri/ =404;
    }
}

다음으로 서버의 실제 도메인 이름을 참조하도록 server_name 지시문을 설정해야 합니다. 도메인 이름이 없으면 서버의 IP 주소를 자유롭게 사용하십시오.

또한 Nginx가 요청을 처리하는 방식을 수정해야 합니다. 이것은 try_files 지시문을 통해 수행됩니다. 먼저 요청을 파일로 제공하려고 합니다. 올바른 이름의 파일을 찾을 수 없으면 요청과 일치하는 디렉터리에 대한 기본 색인 파일을 제공해야 합니다. 이것이 실패하면 요청을 쿼리 매개변수로 index.php 파일에 전달해야 합니다.

위에서 설명한 변경 사항은 다음과 같이 구현할 수 있습니다.

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /var/www/laravel/public;
        index index.php index.html index.htm;

        server_name server_domain_or_IP;

        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }
}

마지막으로 PHP 파일의 실제 실행을 처리하는 블록을 만들어야 합니다. 이것은 .php로 끝나는 모든 파일에 적용됩니다. 파일 자체를 시도한 다음 매개변수로 index.php 파일에 전달하려고 시도합니다.

요청의 경로가 실행을 위해 올바르게 분할되도록 fastcgi_* 지시문을 설정하고 Nginx가 php5-fpm이 통신에 사용하는 소켓을 사용하는지 확인하고 index.php 파일이 이러한 작업의 색인으로 사용됩니다.

그런 다음 PHP가 요청된 파일을 올바르게 찾을 수 있도록 SCRIPT_FILENAME 매개변수를 설정합니다. 완료되면 완성된 파일은 다음과 같아야 합니다.

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /var/www/laravel/public;
    index index.php index.html index.htm;

    server_name server_domain_or_IP;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

완료되면 파일을 저장하고 닫습니다.

이미 활성화된 default 서버 블록 파일을 수정했기 때문에 구성 변경 사항을 적용하려면 Nginx를 다시 시작하기만 하면 됩니다.

sudo service nginx restart

스왑 파일 만들기(선택 사항)

Composer와 Laravel을 설치하기 전에 빌드가 올바르게 완료되도록 서버에서 일부 스왑을 활성화하는 것이 좋습니다. 이것은 일반적으로 메모리가 많지 않은 서버(예: 512mb Droplet)에서 작업하는 경우에만 필요합니다.

스왑 공간을 사용하면 메모리의 정보 양이 사용 가능한 물리적 메모리 공간을 초과할 때 운영 체제가 일시적으로 메모리에서 디스크로 데이터를 이동할 수 있습니다. 이렇게 하면 메모리 집약적인 작업을 수행할 때 메모리 부족(OOM) 예외로 인해 응용 프로그램이나 시스템이 충돌하는 것을 방지할 수 있습니다.

필요할 때 운영 체제가 이 중 일부를 디스크로 섞을 수 있도록 약간의 스왑 공간을 매우 쉽게 설정할 수 있습니다. 위에서 언급했듯이 사용 가능한 RAM이 1GB 미만인 경우에만 필요할 수 있습니다.

먼저 다음을 입력하여 빈 1GB 파일을 만들 수 있습니다.

sudo fallocate -l 1G /swapfile

다음을 입력하여 스왑 공간으로 포맷할 수 있습니다.

sudo mkswap /swapfile

마지막으로 커널이 다음을 입력하여 이 공간을 사용할 수 있도록 이 공간을 활성화할 수 있습니다.

sudo swapon /swapfile

시스템은 다음에 재부팅할 때까지만 이 공간을 사용하지만 서버가 사용 가능한 메모리를 초과할 가능성이 있는 유일한 시간은 빌드 프로세스 동안이므로 문제가 되지 않습니다.

Composer 및 Laravel 설치

이제 드디어 Composer와 Laravel을 설치할 준비가 되었습니다. 먼저 Composer를 설정합니다. 그런 다음 이 도구를 사용하여 Laravel 설치를 처리합니다.

쓰기 권한이 있는 디렉토리(예: 홈 디렉토리)로 이동한 다음 Composer 프로젝트에서 설치 프로그램 스크립트를 다운로드하고 실행합니다.

cd ~
curl -sS https://getcomposer.org/installer | php

이렇게 하면 홈 디렉토리에 composer.phar라는 파일이 생성됩니다. 이것은 PHP 아카이브이며 명령줄에서 실행할 수 있습니다.

하지만 전역적으로 액세스할 수 있는 위치에 설치하려고 합니다. 또한 이름을 composer(파일 확장자 제외)로 변경하려고 합니다. 다음을 입력하여 한 번에 이 작업을 수행할 수 있습니다.

sudo mv composer.phar /usr/local/bin/composer

이제 Composer가 설치되었으므로 이를 사용하여 Laravel을 설치할 수 있습니다.

Laravel을 /var/www/laravel 디렉토리에 설치하려고 합니다. 최신 버전의 Laravel을 설치하려면 다음을 입력하십시오.

sudo composer create-project laravel/laravel /var/www/laravel

이 글을 쓰는 시점에서 최신 버전은 4.2입니다. 향후 프로젝트 변경으로 인해 이 설치 절차가 올바르게 완료되지 않는 경우 다음을 입력하여 이 가이드에서 사용 중인 버전을 강제 실행할 수 있습니다.

sudo composer create-project laravel/laravel /var/www/laravel 4.2

이제 파일은 모두 /var/www/laravel 디렉토리에 설치되지만 전적으로 root 계정이 소유합니다. 웹 사용자는 콘텐츠를 올바르게 제공하기 위해 부분 소유권 및 권한이 필요합니다.

다음을 입력하여 Laravel 디렉토리 구조의 그룹 소유권을 웹 그룹에 부여할 수 있습니다.

sudo chown -R :www-data /var/www/laravel

다음으로 웹 그룹 쓰기 권한을 허용하도록 /var/www/laravel/app/storage 디렉토리의 권한을 변경할 수 있습니다. 애플리케이션이 올바르게 작동하려면 다음이 필요합니다.

sudo chmod -R 775 /var/www/laravel/app/storage

이제 Laravel이 완전히 설치되었고 사용할 준비가 되었습니다. 웹 브라우저에서 서버의 도메인 또는 IP 주소를 방문하여 기본 랜딩 페이지를 볼 수 있습니다.

http://server_domain_or_IP

이제 Laravel 프레임워크로 애플리케이션 구축을 시작하는 데 필요한 모든 것이 있습니다.

결론

이제 서버에서 Laravel을 실행해야 합니다. Laravel은 매우 유연한 프레임워크이며 구조화된 방식으로 애플리케이션을 구축하는 데 도움이 되는 많은 도구를 포함합니다.

Laravel을 사용하여 애플리케이션을 빌드하는 방법을 배우려면 Laravel 설명서를 확인하십시오.