본문 바로가기

PHP

[PHP build] PHP 프로젝트 빌드 - phar-composer

반응형

PHP도 이제 빌드가 가능하군요.

충격적이게도 이런 내용을 다룬 한글 웹페이지를 딱히 발견을 못해서...

간단하게나마 남겨봅니다.

 

phar-composer 라는 라이브러리를 사용해 빌드합니다.

설치방법은 repository에 기술되어 있으니 참고하시면 될듯합니다.

https://github.com/clue/phar-composer

 

가장 먼저 해야 할 것은 composer.json에 실행 파일을 지정하는 것 입니다.

최상위 레벨에 "bin"이라는 키로 추가를 합니다.

{
    "require": {
        "react/socket": "^1.11",
        "react/http": "^1.6"
    },
    "require-dev": {
        "clue/phar-composer": "^1.4"
    },
    ....,
    "bin":["bin/main"] <-이부분 입니다.
}

bin/main 에 php스크립트를 생성 해 줍니다.(bin에 넣은 내용과 정확히 동일한 파일명)

이 파일이 node의 index.js, spring boot의 SpringBootApplication 클래스 내 메인함수와 같은 기능을 한다고 보시면 되겠습니다.

 

reactphp의 기본 샘플코드를 사용해보겠습니다.

<?php 
//bin/main
require "../vendor/autoload.php";

use React\Http\HttpServer as HttpServer;
use React\Socket\SocketServer as SocketServer;
use Psr\Http\Message\ServerRequestInterface as Request;
use React\Http\Message\Response as Response;
$http = new HttpServer(function (Request $request) {
    return Response::plainText(
        "Heelo React!\n"
    );
});

$socket = new SocketServer('127.0.0.1:8080');
$http->listen($socket);

echo "server running at http://127.0.0.1:8080".PHP_EOL;

 

 

이제 phar-composer를 통해 빌드합니다.

참고로 build 대신 install을 한다면, 현재 os에 설치를 진행합니다.

$ phar-composer build /path/to/project /path/to/build/filename.phar
// phar-composer build [target] [dist]

 

성공적으로 빌드되었다면, dist로 지정한 패스에 마찬가지로 해당파일명으로 파일이 생성되었을겁니다.

실행권한을 줍니다.( php명령어를 통해 실행한다면, 실행권한도 필요 없습니다.)

 아마 퍼미션 지정도 가능 할 것 같은데, 급하게 빌드해보느라 찾아보진 못했습니다.

$ chmod +x /path/to/dist/filename.phar

 

 

이제 phar파일을 실행시켜주세요.

$ php ./filename.phar
또는
$ ./filename.phar

//istall 을 하셨다면 기본값은 프로젝트 폴더명으로 명령어가 생성됩니다.
$ react-php

 

 

정상적으로 실행되었다면, 서버구동을 알리는 'server running at http://127.0.0.1:8080'이 뜨고,

CURL로 요청날릴 시 정상동작합니다.

 

반응형