프로덕션 서버에 nodejs/express 어플리케이션이 있다고 가정 해 봅니다. 새 라우터를 추가하려면 재부팅해야합니다. 하지만 node.js 서버를 재부팅하면 사용자에게 오류가 발생할 수 있습니다.node.js 프로덕션 서버를 재부팅
그래서 사용자에게 오류없이 node.js 서버를 재부팅해야합니까?
프로덕션 서버에 nodejs/express 어플리케이션이 있다고 가정 해 봅니다. 새 라우터를 추가하려면 재부팅해야합니다. 하지만 node.js 서버를 재부팅하면 사용자에게 오류가 발생할 수 있습니다.node.js 프로덕션 서버를 재부팅
그래서 사용자에게 오류없이 node.js 서버를 재부팅해야합니까?
Nginx로 Node.js 응용 프로그램에 프록시하면 노드 응용 프로그램이 소켓에서 수신 대기 한 다음 새 서버가 올바르게 시작되면 이전 서버 만 종료하도록 알릴 수 있습니다. 이전 서버가 종료되면 Nginx는 요청을 서버의 새 인스턴스로 라우팅합니다. 이것은 인기있는 Ruby 서버 인 Unicorn이 작동하는 방식입니다.
Nginx에, 당신은 지정합니다 당신과 같은 업스트림 :
upstream node_server {
server unix:/path/to/socket.sock;
}
server {
...
location/{
...
proxy_pass http://node_server;
}
}
그리고 노드, 내가 그 정답이라고 생각
server.listen('/path/to/socket.sock', function() {
console.log("Listening on socket.");
});
답변은 준비 서버 (예 : 기존 프로덕션 코드 바로 옆에 배치하려는 코드의 정확한 복사본)에서 모든 것을 테스트하고 트래픽이 적은 시간을 선택하고 디렉터리를 전환하는 것입니다. 새로운 것에.
문제가있는 경우 다시 연결하십시오.
그러나 실제로 "가동 중지 시간"은 1 초가되며 누군가의 요청이 현재 제공되고 있지 않으면 오류가 발생하지 않습니다.
그렇다고해서 나 자신을 시도한 적이 없으며 가장 좋은 답변이 무엇인지 궁금합니다. 좋은 질문입니다!
와 소켓에서 수신 할 수 있으며 그 방법 대부분의의 사람들은 실제로하고 있습니다. 그러나 유니콘 - 스피릿은 다운 타임을 다시 시작하지 않는 위대한 움직임이라고 생각합니다. "Brandon Tilley"대답은 Unicorn 경로를 따라 답이 될 수있는만큼 좋습니다. – nembleton