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.php
의exclude_pattern
및exclude_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에서 사용자 정의 프로세스를 시작하는 것을 지원하지 않음을 유의하세요.