2016-06-30 2 views
0

서문으로 저는 웹 개발을 처음 접했고 전에는 사이트를 게시하지 않았습니다.Azure에서 Node.js 서버 및 데이터베이스 실행

로컬로 잘 돌아가는 웹 사이트를 구축했으며 Azure를 사용하여 웹에 게시하려고합니다.

이 사이트는 sqlite3 노드 모듈을 사용하여 SQLite3 데이터베이스에 연결된 자기 자신을 작성한 node.js 서버 (명시 적)를 사용합니다.

내가 원하는 것은이 사이트를 게시하는 것입니다. Azure를 사용하여 Azure 명령 줄 도구를 사용하여 사이트에 대한 Git repo에서 웹 응용 프로그램을 만들었습니다.

The Azure set up I have

나는 그것도 나는 또한이 sqlite3를 데이터베이스에서 데이터를 반환하는 사이트의 package.json의 사이트에 대한 백엔드 인 server.js 파일을 가리키는 파일뿐만 아니라 게재 파일이 사이트 폴더에 있습니다. 나 또한이 web.config 파일을 가지고 : https://github.com/projectkudu/kudu/wiki/Using-a-custom-web.config-for-Node-apps 내 서버에 대한 경로가 광산과 일치하도록 변경되었습니다. Error: SQLITE_CANTOPEN: unable to open database file at Error (native)

그래서 내가 추측하고있어이이 사이트에에 내장 된 DB를 갖는 문제가 의미 : 내가 얻을 수있는 모든 빈 화면입니다 사이트를 방문하려고 할 때

는 응용 프로그램 로그이 오류를 제공합니다 이런 식으로, 데이터베이스 항목을 주석 처리하면 데이터베이스 내용을 빼고 사이트를로드합니다. 하늘색 콘솔에서 서버를 실행하려고하면 "잘못된 요청"오류가 발생하고 내 컴퓨터에서 실행하면 문제가 없습니다.

내 질문은 기본적으로 내가 가진 도전 과제를 감안할 때 사이트를 만드는이 목표에 대해 어떻게해야합니까? 통합 된 db 파일을 완전히 잘못된 방법으로 사용하고 있습니까, 아니면 제대로 작동시킬 수 있습니까? 하늘색 DB를 만들었지 만 DB 파일에서 데이터를 가져 오는 방법을 찾지 못했습니다. 하늘빛 가상 머신이 갈 길입니까, 내가 읽었던 충고는 더 많은 계산 집약적 인 프로젝트를위한 것이라는 것입니다. 사이트 만 호스팅하고 있습니까?

답변

0

내 문제를 재현하고 Azure Web Apps에 sqlite3 모듈이있는 간단한 nodejs 서버를 만들려고합니다. 그러나 그것은 내 측면에서 잘 작동합니다. 여기에 내 테스트 단계가 있습니다. 문제를 해결하기 위해 제 조치를 취할 수 있습니다. 로

  1. sqlite3이 푸른 웹 앱에 배포 작업을 통해 지원되지 Native Modules의 종류가 node-pre-gyp을 필요로 설치합니다. 따라서 로컬에 sqlite3 모듈을 설치하고 응용 프로그램과 함께 node_modules 폴더를 Azure에 배포하십시오.
  2. Azure의 nodejs 런타임은 ia32 플랫폼 버전입니다. 따라서 로컬에 npm install sqlite3 --target_arch=ia32 명령을 사용하여 설치해야합니다.

    var http = require("http"); 
    var server = http.createServer(function(request, response) { 
    response.writeHead(200, {"Content-Type": "text/html"}); 
    response.write("<!DOCTYPE html>"); 
    response.write("<html>"); 
    response.write("<head>"); 
    response.write("<title>Hello World Page</title>"); 
    response.write("</head>"); 
    response.write("<body>"); 
    var sqlite3 = require('sqlite3').verbose(); 
    var db = new sqlite3.Database('test.db'); 
    var data = []; 
    db.serialize(function() { 
        db.run("CREATE TABLE IF NOT EXISTS lorem (info TEXT)"); 
        var stmt = db.prepare("INSERT INTO lorem VALUES (?)"); 
        for (var i = 0; i < 10; i++) { 
         stmt.run("Ipsum " + i); 
        } 
        stmt.finalize(); 
        db.each("SELECT * FROM lorem", function(err, row) { 
         data.push(row); 
        }, function() { 
         response.write(JSON.stringify(data)); 
         response.write("</body>"); 
         response.write("</html>"); 
         response.end(); 
        }); 
    }); 
    db.close(); 
    }); 
    server.listen(process.env.PORT || 1337); 
    

더 이상의 관심은 알려 주시기 바랍니다 : 여기에

  • 내 테스트에 대한 코드입니다.

    +0

    감사합니다. 나는 이제 오류가 발생합니다. 오류 : 모듈 'D : \ home \ site \ wwwroot \ node_modules \ sqlite3 \ lib \ binding \ node-v46-win32-ia32 \ node_sqlite3을 찾을 수 없습니다. .node '실제로 존재하는 폴더가 node-v47-win32-ia32 일 때, 내가 찾거나 찾은 버전을 어떻게 바꿀 수 있습니까? – DomAyre

    +0

    Azure의 Nodej 버전을 로컬 Nodej 버전과 동일하게 변경할 수 있습니다.사이트 관리 포털의 '응용 프로그램 설정'섹션에서 변경할 수 있습니다. 또는'package.json' 파일에서 Node.js 버전을 수정하십시오. 자세한 내용은 https://azure.microsoft.com/en-us/documentation/articles/nodejs-specify-node-version-azure-apps/를 참조하십시오. –