2016-06-18 4 views
1

는 타임 스탬프 또는 이름에 어떤 임의의 문자가 새로운 디렉토리에 새 버전을 업로드합니다. 내 모든 릴리스를 내 서버에 보관하므로 어떤 특정 릴리스에 대한 링크 만 변경하고 가동 중지 시간을 전혀 지키지 않아도 쉽게 롤백 할 수 있습니다.flighplan으로 pm2를 다시로드하거나 다시 시작하는 방법과 심볼릭 링크 디렉토리를 알고 있습니까? 내가 <code>Node.js</code></p> <p>내 배포 스크립트에 의해 만들어 내 웹 서비스를 배포 할 <a href="https://github.com/pstadler/flightplan" rel="nofollow noreferrer">flighplan</a>을 사용하고

서비스 이름으로 이름 지어지고 업로드 한 후 새로운 릴리스의 디렉토리로 변경되는 심볼릭 링크 일뿐입니다.

ln -snf ~/tmpDir ~/appName 

enter image description here

내 문제는 pm2 내 서버는 이전 버전의 원래 경로를 사용 restars 때, 그것은 상징적 인 링크와 결합하여 새 디렉토리 링크에 대한 링크를 따르지 않는 것입니다 가리키고있다.

pm2을 다시 시작하거나 다시로드하고 심볼릭 링크를 인식하도록 할 방법이 있습니까?

+0

PM2에 해당 API가 있다고 생각하지 않습니다. – MhmdAljobairi

+0

심볼릭 링크를 변경 한 후 어떻게 서비스를 다시 시작 하시겠습니까? –

답변

0

짧은 대답 - 변경되는 심볼릭 링크에서 pm2를 실행하면 안됩니다. pm2는 pm2 kill 명령을 사용하지 않는 한 항상 심볼릭 링크가 가리키는 이전 경로를 선택합니다.

해결책 - 새 디렉토리를 만들고 smylink의 상위 디렉토리와 코드 디렉토리 (mohmal-144 등)로 만듭니다. 이해를 돕기 위해 이것을 배치라고 부릅니다.

이제 /home/ /home/deploy/mohmal -> home/deploy/mohmal-144 구조를 구축해야합니다.

pm2를 사용하는 경우 ecosystem.json (시작 앱의 pm2 config) 파일을 사용해야합니다. 이 파일의 이름을 원하는대로 지정할 수는 있지만 이해를 돕기 위해이 파일을 ecosystem.json 파일이라고 부릅니다.

이 ecossystem.json 파일의 apps 섹션에서 cwd 디렉토리를 추가하면 cwd가 심볼릭 링크 경로 (가리키는 심볼릭 링크 경로가 아님)를 가리켜 야합니다. 아래 예제를 참조하십시오.

{ 
    "apps": [ 
    { 
     "name": "mohmal", 
     "script": "src/bin/server.js", 
     "exec_mode": "cluster", 
     "instances" : "0", 
     "cwd": "/home/deploy/mohmal", 
     "error_file": "/var/log/mohmal/error.log", 
     "out_file" : "/var/log/mohmal/out.log", 
     "merge_logs": true 
    } 
    ] 
} 

이 파일을이 예제에서 deploy라는 상위 디렉토리에 배치하십시오.

이제이 디렉토리에서만 pm2 start, pm2 restart 명령을 실행하거나 사용하십시오. 이미 시스템에서 pm2를 실행중인 경우 pm2 kill을 실행하여 이전 프로세스를 지우십시오.

그런 다음 제안 된 변경 사항을 사용하면 pm2 프로세스를 중지 할 필요가 없습니다. 또한 symlink에 대한 변경 사항이 반영됩니다.