Laravel + Nginx Install

Laravel + Nginx Install

본 문서는 Ubuntu 16.04 기준으로 작성되었습니다.

1. php fpm 설치와 composer install시 필요한 extension 설치

sudo apt-get install -y php-fpm php-zip php-xml php-mbstring

2. composer 설치시 필요한 유틸리티 설치하기

sudo apt-get install -y curl unzip git

3. composer 설치하기

먼저 composert를 다운로드 받고 /user/local/bin으로 composer 란 명령어 이름으로 설치한다.

cd ~ sudo curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

이후 자신의 계정에 .composer 라는 폴더가 생기는데 root:root 의 소유권을 내가 사용할 수 있도록 소유권 변경을 한다.

(composer를 root 계정으로는 사용할 수 없다.)

sudo chown -R [현재 사용자 계정] .composer/

4. Laravel 설치

composer global require "laravel/installer"

laravel을 설치하고 나면 .composer/vendor/bin에 명령어를 사용해야 함으로 .bashrc에 PATH를 추가한다.

echo 'export PATH="$PATH:$HOME/.composer/vendor/bin"' >> ~/.bashrc source .bashrc laravel -v

5. 버전 확인 완료 후 새로운 프로젝트를 만든다.

여기서는 blog 라는 이름의 프로젝트를 만든다고 가정한다.

cd ~ laravel new blog

6. 프로젝트 생성 이후 storage와 bootstrap의 cache에 www-data의 그룹권한을 부여한다.

storage 폴더는 Blade template 과 파일 base 세션, cache 그리고 laravel 프레임워크에서 만들어지는 파일을 저장하는 폴더.

boostrap/cache 폴더는 performance 최적화를 위하여 프레임워크에서 만들어지는 파일을 보관하는 폴더이다.

그러므로 www-data의 사용자가 읽고 쓸 수 있도록 권한이 부여되어야 한다.

cd blog sudo chgrp -R www-data ./storage sudo chgrp -R www-data ./bootstrap/cache

7. PHP-fpm을 시작한다.

unix socket으로 생성하는 것을 권장한다. tcp로 시작할 경우 tcp 프로토콜의 구조상 오버해드가 발생할 수 있다.

우분투 16.04의 경우 기본 설치되는 php의 버전은 7.0 이므로 다음의 명령어로 시작한다.

sudo service php7.0-fpm start

8. Nginx 설치 및 설정

다음 명령어로 Nginx 를 설치한다.

sudo apt-get install nginx

서버 설정은 기본적으로 되어있는 default 를 수정해도 되나 virtualhost를 고려하여 blog 라는 파일을 새로 생성할 것이다.

sites-available 폴더에 있는 default를 blog 로 복사하고 sites-enabled에 링크를 걸어준다.

( 이 작업은 생략 가능하며 그냥 default 파일로 사용해도 상관은 없다. )

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/blog sudo rm /etc/nginx/sites-enabled/default sudo ln -s /etc/nginx/sites-available/blog /etc/nginx/sites-enabled/blog

9. nginx 설정을 다음과 같이 한다.

server { listen 80; listen [::]:80;

root /home/mikelim/blog/public; index index.php index.html index.htm;

server_name localhost;

# REST API 용도로만 사용한다면 다음 설정은 주석처리 location ~* \.(gif|jpg|png|js|css)$ { root /home/mikelim/blog/public; expires 1d; }

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:/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }

from http://mikelim.mintocean.com/49 by ccl(A) rewrite - 2020-03-06 05:20:42

댓글

이 블로그의 인기 게시물

[PHP] 라라벨 루멘 DB문서 자동화

laravel-2 blade layout

laravel-1 라우트 & 뷰