[컴][웹][php] lumen 설치 하기





lumen installation


composer 설치

composer 는 여기로 가서 설치하면 된다.


php.ini

  • PHP >= 5.5.9
  • OpenSSL PHP Extension
  • Mbstring PHP Extension
  • Tokenizer PHP Extension : tokenizer 는 windows 버전에서 built-in 으로 되어 있다. 


lumen 설치

blog 라는 이름의 project 를 만들려면 아래처럼 하면 된다.
composer create-project laravel/lumen blog
특정버전으로 설치하고 싶으면 아래처럼 해주면 된다.
composer create-project laravel/lumen blog "5.1.*"


composer.json 을 가지고 있으면, 추후에 dependency 를 다시 설치할 때  composer install 해주면 된다.
c:..\proj\> composer install



Apache 설정

아래처럼 public 을 root 로 설정해 주면 된다. public directory 에는 .htaccess 도 있어서 url 들의 routing 을 새롭게 설정하게 된다.

DocumentRoot "<proj_directory>/public"
<Directory "<proj_directory>/public">

<proj>\public\.htaccess

만약 그냥 <proj_directory> 를 root 로 사용하면 접근을 아래처럼 하면 된다.

  • http://localhost:8082/public/index.php

DocumentRoot "<proj_directory>"
<Directory "<proj_directory>">


public 은 directory 이름을 바꿔도 괜찮다.(?)

AllowOverride

참고로 .htaccess 를 사용하려면 "AllowOverride None" 이 없어야 한다. "AllowOverride All" 이나 / "AllowOverride FileInfo" 로 세팅을 해야 된다.(참고)



lumen 의 directory tree

app/
  + Console/
        + Commands/
  + Events/
  + Exceptions/
  + Http/
        + Controllers/
        + Middleware/
  + Jobs/
  + Listeners/
  + Providers/
bootstrap/
database/
  + factories/
  + migrations/
  + seeds/
public/
resources/
  + views/
routes/
storage/
  + app/
  + framework/
    + cache/
    + views/
  + logs/
tests/



gnuboard 와 같이 사용한다면

우리 나라에서 gnuboard 로 만들어놓은 web page 들이 많이 있다. 개인적으로 좋아하지 않지만, 이미 만들어져 있는 경우 어쩔 수 없다.

이 경우에 gnuboard 부분을 "<proj>/public" 안으로 가져오면 된다.
  • <proj>/public
물론 apache 의 DocumentRoot 은 <proj>/public 으로 해줘야 한다.

.htaccess 예시

이녀석은 사용안하는 편이 좋다고들 한다. apache 의 virtual host 설정을 수정할 수 있다면, virtual host 설정안에 넣자. <Directory "/home/..."> 태그 안에 넣으면 된다.

참고로 아래 htaccess 를 위해서 httpd.conf 에서 module 이 load 되었는지 확인하자. 

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule negotiation_module modules/mod_negotiation.so


http://localhost:8080/api/.... 는 index2.php 로 가고,
http://localhost:8080/api2/... 등은 index.php 로 redirect 하기 위한 설정.

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]


    # Handle Front Controller...
    # For the rest URIs
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !^/api/
    RewriteRule ^(.*)$ index.php [L]

    # Handle Front Controller...
    # For the URIs which starts with /api/
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^api/(.*) index2.php [L]
   

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>


DirecotryIndex

만약 기본으로 lumen 을 호출하고 싶다면, DirecotryIndex 도 변경해줘야 한다.(여기서 index2.php 가 lumen 파일)
<Directory "/home/cocktail/apps/cocktail_lumen/public">
    ...
    DirectoryIndex index.html index2.php
</Directory>


그밖에

  • <proj>/storage 폴더의 permission 은 lumen 이 write 할 수 있어야 한다.
  • <proj>/.env 파일에 APP_KEY 에 32자의 random string 넣기
  • 이 bootstrap/app.php 에서 Dotenv::load() 를 호출하는데, 이녀석이 .env 의 변수를 load 해준다.
  • 자신만의 configuration file 사용하는 법 : Installation - Lumen > Custom Configuration Files
  • environment 값 getter
    • $environment = App::environment();
    • App::environment('local', 'staging')
  • config 값 getter / setter
    • $value = config('app.timezone');
    • config(['app.timezone' => 'America/Chicago']);
  • cache 설정 : https://lumen.laravel.com/docs/5.1/cache#configuration
  • database 설정 : Database - Lumen - PHP Micro-Framework By Laravel
  • phpunit

댓글 없음:

댓글 쓰기