본문 바로가기

소프트웨어-이야기/인프라

(Phusion Passenger) 코드 reload하기

서버에서 접속해서 디버깅용으로 직접 로그를 남겨서 볼 때, 수정된 코드를 반영하기 위해, 패신저를 보통 재시작해줬었다.


그런데 패신저에서 코드를 Reload해주는 명령문이 따로 있었다. 

패신저를 재시작해주는건 명령문을 치고, 몇초간 기다려야한다. 

그런데 코드를 다시 읽어들이는 Reload는 이보다 더 빠르게 변경된 코드를 패신저에 반영할 수 있다. 



단, config/application.rb에 있는 설정정보는 reload되지않는다고 한다.

cd /path-to-your-app
$ bundle exec passenger-config restart-app /Users/phusion/testapp
Restarting /Users/phusion/testapp/public (development)

이 명령문을 치면, 저 경로에 있는 애플리케이션이 Reload된다.

cd /path-to-your-app
$ bundle exec passenger-config restart-app /
Restarting /Users/phusion/testapp/public (development)

이 명령문은 패신저가 떠있는 모든 애플리케이션을 Reload 해준다.
보통 한 서버에서는 한 서비스만 올려놓으니까,
내가 이 명령문을 쓸 때는 이게 더 편할거같다.

그리고 이 명령문을 치지않아도 항상 Reload를 해주는 방법도 있다.

mkdir -p tmp
$ touch tmp/always_restart.txt

애플리케이션 코드가 들어있는 경로에서 tmp폴더를 만들고, always_restart.txt폴더를 만들어주면 된다.

tmp/restart.txt 파일로 패신저를 재시작시키는 개념과 비슷해보인다.


rm tmp/always_restart.txt

이 방법을 사용하다가, reload를 해제하고 싶을 때는 저 파일을 삭제해주면 된다.

관련 문서는 Reloading Code​ 에서 볼 수 있다.