게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
Node.js 파일 forever로 실행 관련 질문 드립니다..ㅠㅠ
게시물ID : programmer_14766짧은주소 복사하기
작성자 : 천이랑
추천 : 0
조회수 : 887회
댓글수 : 2개
등록시간 : 2015/12/03 13:48:02
옵션
  • 베스트금지
  • 본인삭제금지
  • 외부펌금지
현재 AWS실습중이며, ec2 인스턴스 2개를 사용하여 웹서버를 구축하고 있습니다. 사용 환경은 linux AMI입니다.

하나는 웹 서버 실행용, 다른 하나는 이미지 리사이즈 서버 실행용인데요,

이미지 리사이즈 서버의 app.js 파일을 forever를 통해 실행했는데, forever list로 동작을 확인해 보니 ctime이 STOPPED로 서버가 실행되지 않았고, 로그를 살펴보니 다음과 같은 오류가 발생했습니다.


/home/ec2-user/t13ResizeServer/node_modules/aws-sdk/lib/request.js:32
          throw err;
                ^
TypeError: Cannot read property 'Body' of null
    at Response.<anonymous> (/home/ec2-user/ResizeServer/app.js:73:20)
    at Request.<anonymous> (/home/ec2-user/ResizeServer/node_modules/aws-sdk/lib/request.js:350:18)
    at Request.callListeners (/home/ec2-user/ResizeServer/node_modules/aws-sdk/lib/sequential_executor.js:100:18)
    at Request.emit (/home/ec2-user/ResizeServer/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
    at Request.emit (/home/ec2-user/ResizeServer/node_modules/aws-sdk/lib/request.js:604:14)
    at Request.transition (/home/ec2-user/ResizeServer/node_modules/aws-sdk/lib/request.js:21:12)
    at AcceptorStateMachine.runTo (/home/ec2-user/ResizeServer/node_modules/aws-sdk/lib/state_machine.js:14:12)
    at /home/ec2-user/ResizeServer/node_modules/aws-sdk/lib/state_machine.js:26:10
    at Request.<anonymous> (/home/ec2-user/ResizeServer/node_modules/aws-sdk/lib/request.js:22:9)
    at Request.<anonymous> (/home/ec2-user/ResizeServer/node_modules/aws-sdk/lib/request.js:606:12)

각종 구글링을 통해서 app.js코드의 Body부분이 문제라는 것 까지는 파악했는데요.. 도저히 App.js파일에서 무엇을 수정해야 할 지 감이 안옵니다. 책의 예제 소스를 다운받아서 설정한건데.. 코드 자체에 문제가 있는 것인지요..?

App.js의 코드는 다음과 같습니다.

------------------------------------------------------------------
//Reszie app.js
var AWS = require('aws-sdk')
  , Sequelize = require('sequelize')
  , im = require('imagemagick')
  , mime = require('mime')
  , s3 = new AWS.S3({ region: 'ap-southeast-1' })
  , sqs = new AWS.SQS({ region: 'ap-southeast-1' });

var s3Bucket = '*********';
var sqsQueueUrl = '************';
var rdsEndpoint = {
  host: '***********',
  port: 3306
};

// MySQL DB 이름, 계정, 암호
var sequelize = new Sequelize('***', '****', '***', {
  host: rdsEndpoint.host,
  port: rdsEndpoint.port
});

// MySQL DB 테이블 정의
var Photo = sequelize.define('Photo', {
  filename: { type: Sequelize.STRING, allowNull: false, unique: true }
});

// SQS 메시지 삭제
function deleteMessage(ReceiptHandle) {
  sqs.deleteMessage({
    QueueUrl: sqsQueueUrl,
    ReceiptHandle: ReceiptHandle
  }, function (err, data) {
    if (err)
      console.log(err, err.stack);
    else
      console.log(data);
  });
}

// MySQL에 데이터 저장
function insertPhoto(filename) {
  sequelize.sync().success(function () {
    Photo.create({
      filename: filename
    });
  });
}

// SQS 메시지 받기
function receiveMessage() {
  sqs.receiveMessage({
    QueueUrl: sqsQueueUrl,
    MaxNumberOfMessages: 1,
    VisibilityTimeout: 10,
    WaitTimeSeconds: 10
  }, function (err, data) {
    if (!err && data.Messages && data.Messages.length > 0)
      resizeImage(data.Messages[0]);
    else if (err)
      console.log(err, err.stack);
    receiveMessage();
  });
}

// 이미지 해상도 변환
function resizeImage(Message) {
  var filename = Message.Body;
  s3.getObject({
    Bucket: s3Bucket,
    Key: 'original/' + filename
  }, function (err, data) {
    im.resize({
      srcData: data.Body,
      width: 800
    }, function (err, stdout, stderr) {
      s3.putObject({
        Bucket: s3Bucket,
        Key: 'resized/' + filename,
        Body: new Buffer(stdout, 'binary'),
        ACL: 'public-read',
        ContentType: mime.lookup(filename)
      }, function (err, data) {
        console.log('Complete resize ' + filename);
        deleteMessage(Message.ReceiptHandle);
        insertPhoto(filename);
      });
    });
  });
}

receiveMessage();

-----------------------------------------------------

해당 js파일에 쓰인 Body는 resizeImage의 Body뿐인데, 이를 어떻게 수정해야 TypeError를 막을 수 있을까요? 5일째 서버구축에 실패하고 있어서 지푸라기 잡는 심정으로 질문글 올려봅니다ㅠㅠ 고수님들 도와주세요..!
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호