본문으로 바로가기

[yit서버 메모] node.js forever 플러그인 설치와 실행

category 자료창고 2014. 10. 16. 14:03



/*

npm install mysql

npm install express

npm install date-utils 

npm install socket.io@0.9.16 

*/

1. 설치
npm install forever -g

2. 사용

#> sudo forever start yit_server.js
#>sudo forever list

#>sudo forever stop pid
#>sudo forever stopall  (전체 실행중지)


3. forever 이외 내가 설치한 모듈

관련 모듈은  express,socket.io.mysql 이다.

- yit_server.js 코드 일부
var express = require('express')
        , app = express()
        , http = require('http')
        , server = http.createServer(app)
        , io = require('socket.io').listen(server)

        require('date-utils');

        var mysql = require("mysql");
        var dbcon = mysql.createConnection({
                host : "localhost ",
                port : 3306,
                user : "dbid",
                password : "pass",
                database : "dbname"
        });

과같은 형태로 코드에서 require 해서 사용되어지고 있다. 

로드가 많은 채팅 서버가 아니지만 forever 플러그인으로도 가끔씩 죽는 현상이 있었다. 실제 서비스페이지에서 node.js 서버 실행 여부에 따라 서버 상태를 보여주고 싶었는데 아직 구현 하지 못했고 리눅스 서버의 쉘스크립트 하나를 크론에등록해 등록된 실행php가 nodes.js 의 리스닝포트를 검사해서 포트 해당 포트가 열려있지 않을때 관리자에게 메일을 발송하도록 단순 처리 하였다.

/*

@filename:isalive.php

@comment:포트 오픈 여부를 검사

*/

isalive.php

<?
$ip = '127.0.0.1';
$port = 8124;
$timeout = 5; // The connection timeout, in seconds.
$fp = @fsockopen($ip,$port,$errno,$errstr,$timeout);
if ( is_resource($fp) ) {
    echo 'Open';
    fclose($fp);
} else {
    echo 'Close';
    //echo $errno.' : '.$errstr.'<br />'; // 오류 정보 출력
        mail("dev@mydomain.co.kr","[warnning mail]서버상태 warnning mail ","node.js 서버를 확인해주세요.port가 안열려있습니다.");
}
?>