Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

Life Travel Story

Slim Framework를 해보자! 본문

Study/Framework

Slim Framework를 해보자!

Algo 2017. 6. 7. 03:43

Slim Framework를 해보자! 


Slim Framework ? 



Slim은 간단하면서도 강력한 웹 응용 프로그램 및 API를 빠르게 작성할 수 있는 PHP 마이크로 프레임워크 입니다.

Slim은 HTTP 요청을 받아 적절한 콜백 루틴을 호출하고 HTTP 응답을 반환하는 디스패처입니다. 

출처 : Slim Framework Get Started


저같은 경우에는 Slim을 모바일 어플리케이션이나 웹 어플리케이션에서 서버의 데이터를 가져오는 작업을 

깔끔하게 하고 싶은 생각에 해보게 되었습니다.


제가 작업하는 서버는 AWS를 사용하고 있습니다.

기본적인 APM 설치를 하고 난 후 부터 과정을 저장해보도록 하겠습니다.

 

해보기만 하면 잊어버릴거 같아서.. 저장을! 



1. Composer Installation



Slim에서는 Slim Framework 설치를 Composer를 이용하여 설치하는 것을 권장한다고 합니다. 


Composer는 php를 개발하는데 있어서 패키지간의 의존성을 관리하는 의존성 관리자입니다. 

php를 개발하는데 있어서 다양한 패키지들을 설치하고 의존성을 관리하며

Autoload를 사용하는데 Composer가 꼭 필요하다고 할 수 있습니다.

출처 : Composer Korean Docs


Composer에 대한 설명은 Korean Docs에서 얻을 수 있습니다. 


먼저 처음으로 Composer를 설치해야 합니다. 

제가 사용하는 Ubuntu에서는 apt install composer 를 이용하면 되고,


Linux / Unix / OSX  에서는


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


이것이 안되면


php -r "readfile('https://getcomposer.org/installer');" | php

를 이용하면 됩니다.


자세한 설치 과정은 

여기에



2. Slim Installation


Slim 설치는


composer require slim/slim "^3.0" 을 하시면 됩니다.


저같은 경우에는 /var/www/project_name 에서 설치를 하였습니다.

설치를 하게 되면, project_name 폴더에 


composer.json, composer.lock, vendor 가 생기게 됩니다. 

library, framework 들은 vendor에 저장이 되고, composer.json은 패키지 정의 내용이 있습니다.


composer.json 파일에는


composer.json


{

"require": {

"slim/slim": "^3.8",

"monolog/monolog": "1.0.*"

},

"autoload": {

"psr-4": {" ": "src/"}

}

}


이렇게 설정합니다. monolog는 php용 로깅 프레임워크 입니다.



3. Slim Sample Application 작성



프로젝트 디렉토리 ( /var/www/project_name/src )에

index.php 파일을 하나 만들어봅니다.



index.php



<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

require '../vendor/autoload.php';

$app = new \Slim\App;
$app->get('/', function($request, $response, $args) {
return $response->withStatus(200)->write('Hello world!');
});
$app->get('/test', function($request, $response, $args) {
return $response->withStatus(200)->write('Hello world!');
});
$app->get('/hello/{name}', function(Request $request, Response $response) {
$name = $request->getAttribute('name');
$response->getBody()->write("Hello, $name");
return $response;
});
$app->run();



require '../vendor/autoload.php' 저 부분은 현재 디렉토리에 맞춰서 설정해주셔야 합니다.


Sample index.php를 작성하고 

서버의 설정을 바꿔주셔야합니다.



4. Apache Virtual Host 설정



저는 먼저 Apache Virtual Host를 설정하였습니다. 

Apache Virtual Host에 대해서는 여기


새로운 8080 포트를 만들어서 작업을 하였습니다.


먼저 Apache에서 제공하는 conf 파일을 복사해서 project만의 conf를 만듭니다.


cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/project.conf


그리고 그 파일을 열어서 수정합니다. ( vi /etc/apache2/sites-available/project.conf )


그리고 project.conf에는


project.conf


<VirtualHost *:8080>


ServerAdmin sampleEmail@email.com

DocumentRoot /var/www/project_name/src


<Directory "/var/www/project_name/src">

AllowOverride All

Order allow,deny

Allow from all

</Directory>


ErrorLog /var/www/project_name/logs/error.log

CustomLog /var/www/project_name/logs/access.log combined


</VirtualHost>



이렇게 설정해줍니다.

설정한 Virtual Host를 적용하기 위해서는 a2ensite project.conf 를 하고

service apache2 reload 혹은 service apache2 restart를 합니다.


여기서 apache2를 다시 시작할 수 없다 오류가 난다면, conf 파일에서 문법 오류가 있을 수 있습니다.


그리고 새로운 8080 포트를 /etc/apache2/ports.conf 에서

Listen 80 아래 Listen 8080을 추가해줍니다.

service apache2 restart를 하고


http://서버주소:8080/ 을 웹 페이지에서 입력하였을 때 

우리가 index.php 에서 설정한 Hello World!가 나오는 지 확인해봅니다.


이제 프로젝트 폴더로 이동하여 ( /var/www/project_name/src )

지시어를 설정할 수 있는 .htaccess 파일을 만들어봅니다.


.htaccess에 대해서는 여기


vi .htaccess로



.htaccess


RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^ index.php [QSA, L]




이렇게 설정합니다. 

그리고 Rewrite 모듈을 사용하기 위해


a2enmod rewrite 를 하고


service apache2 restart로 apache2를 재시작합니다.


그리고 이제 http://서버주소/hello/hi 를 웹페이지에서 주소창에 입력해주시면


페이지에 Hello, hi가 입력되는 것을 보실 수 있습니다.



5. 마무리



Slim Framework를 직접 해보고, 기록해두지 않으면 잊어버릴거 같아서

급하게 블로그를 만들고 기록하였습니다.


사진 자료들이 없어서 따라하기에 굉장히 불편하지만... 


다음 게시글 부터는 사진 파일들을 저장하고 

글을 더 읽기 쉽게 작성하도록 노력하겠습니다~~ 


Slim Framework를 해보자! -끝-