phar 패키징

phar는 PHP에서 JAR와 유사한 패키지 파일로, phar를 이용하여 당신의 webman 프로젝트를 단일 phar 파일로 패키징 할 수 있어 배포가 용이합니다.

여기서 fuzqing 의 PR에 깊은 감사를 드립니다.

주의
php.ini의 phar 구성 옵션을 비활성화해야 하며, 즉 phar.readonly = 0으로 설정해야 합니다.

명령줄 도구 설치

composer require webman/console

패키징

webman 프로젝트의 루트 디렉토리에서 php webman build:phar 명령을 실행하면 bulid 디렉토리에 webman.phar 파일이 생성됩니다.

패키징 관련 구성은 config/plugin/webman/console/app.php에 있습니다.

시작 및 중지 관련 명령

시작
php webman.phar start 또는 php webman.phar start -d

중지
php webman.phar stop

상태 확인
php webman.phar status

연결 상태 확인
php webman.phar connections

재시작
php webman.phar restart 또는 php webman.phar restart -d

설명

  • 패키징된 프로젝트는 reload를 지원하지 않으며, 코드를 업데이트하려면 restart로 재시작해야 합니다.

  • 패키지 파일 크기가 너무 커져 메모리를 과다하게 사용하지 않도록 config/plugin/webman/console/app.phpexclude_patternexclude_files 옵션을 설정하여 불필요한 파일을 제외할 수 있습니다.

  • webman.phar를 실행하면 webman.phar가 위치한 디렉토리에 runtime 디렉토리가 생성되어 로그 등의 임시 파일을 저장하는 데 사용됩니다.

  • 프로젝트에 .env 파일을 사용하는 경우, .env 파일을 webman.phar가 위치한 디렉토리에 두어야 합니다.

  • 사용자 업로드 파일을 phar 패키지에 저장하면 안 됩니다. 왜냐하면 phar:// 프로토콜을 사용하여 사용자 업로드 파일을 조작하는 것은 매우 위험하기 때문입니다(phar 역직렬화 취약점). 사용자 업로드 파일은 반드시 phar 패키지 외부의 디스크에 별도로 저장해야 합니다. 아래를 참조하십시오.

  • 비즈니스 요구 사항이 public 디렉토리에 파일을 업로드하는 것을 포함한다면, public 디렉토리를 분리하여 webman.phar가 위치한 디렉토리에 두어야 하며, 이때 config/app.php를 구성해야 합니다.

    'public_path' => base_path(false) . DIRECTORY_SEPARATOR . 'public',

    비즈니스는 헬퍼 함수 public_path($파일 상대 위치)를 사용하여 실제 public 디렉토리 위치를 찾을 수 있습니다.

  • webman.phar는 Windows에서 사용자 정의 프로세스를 시작하는 것을 지원하지 않음을 유의하세요.