2016-10-19 3 views
-1

Azure 플랫폼이나 Visual Studio에 내재 된 뭔가를 놓쳤다는 것이 밝혀진 것보다 훨씬 쉬워졌습니다.간단한 웹 사이트 프론트 엔드와 노드 백엔드를 Azure Web App으로 옮기기

Visual Studio에서 두 개의 별도 프로젝트가 있습니다 (link과 유사) 일반 HTML/JS/CSS 웹 사이트 프론트 엔드 및 정보를 파이프하는 node.js 서버 백엔드. 모든 기능은 VS 내에서 로컬 (노드 백엔드가 Azure의 다른 리소스에 요청을 보내고 결과를 다시 얻음)을 테스트 할 때 예상대로 작동하지만 나에게있어이 작업을 게시하는 간단한 방법이없는 것 같습니다. 프론트, 백엔드를 하나의 Azure Web App에 추가 할 수 있습니다. 왜냐하면 앱 서비스는 서버를 부팅 할 때 서버에 자체 포트를 할당 할 것이기 때문입니다. (효과적으로 백엔드에서 노크 할 수없는 고정 포트없이).

분명히 분명하지 않은 부분이 있습니까? 아니면 웹 응용 프로그램 서비스를 너무 많이 사용하고 있으며 백엔드를 VM이나 다른 서비스로 나눌 필요가 있습니까? 링크에서 위와 같이 코드를 분류 할 수 있었지만 루트 웹 사이트에서 설정 한 기본 방문 페이지 이외의 다른 곳에서는 핑 (ping)하거나 게시 할 수 없습니다.

편집 : 지금 어딘가에서 잘못 돌았는지 궁금합니다. 기본 노드 응용 프로그램 :

var http = require('http'); 
var port = process.env.port || 1337; 
http.createServer(function (req, res) { 
    res.writeHead(200, { 'Content-Type': 'text/plain' }); 
    res.end('Hello World on port:' + port); 
}).listen(port); 

반환

Hello World on port:\\.\pipe\a1f43073-e979-4a8b-b4ec-ec226b4760f8 

편집 2 : 일부 파고가 유익 https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#network-endpoint-listening하게되었다. 그러나, 아직도 제안 : 로컬 주소에

연결 시도 (예를 들어, 로컬 호스트, 127.0.0.1) 및 시스템이 자신의 IP가 실패합니다 제외하고는 동일한 샌드 박스에있는 다른 프로세스가 청취 소켓을 만든 경우 대상 포트에.

그렇다면 노드 서버에서 시작하는 프로세스가 청취 소켓을 만들어야합니다. 로컬 호스트 어쩌면? 나는 이것으로 전복을 할 경우 업데이트를 게시 할 것이지만 조언과 제안은 여전히 ​​환영합니다.

편집 3 : 프런트 엔드를 백엔드 작업을 트리거하는 익스프레스 프레임 워크 프로젝트에 래핑하여 당분간 문제를 해결했지만 이것이 이상적인 방법은 아닙니다. nodejs의 소켓에서 수신 대기하는 서버를 성공적으로 시작할 수 없었습니다 (다양한 오류 코드가 발생 함). 누구든지 동일한 가상 디렉터리 또는 별도의 가상 디렉터리에있는 응용 프로그램간에 작동하는 내부 샌드 박스 통신의 예가 있으면 내 환경이 아니라는 것을 확인하기 위해 구축 할 수 있습니다. 나는 시간이 허락 할 때 내 코드를 게시 할 것이다.

+0

포트 할당에 대해 무슨 뜻인지 모르시겠습니까? 웹 응용 프로그램은 포트 80 및 443의 인바운드 트래픽 만 지원합니다. –

+0

Azure 웹 응용 프로그램은 일부 포트에서 '전통적'웹 사이트를 실행하는 것과 같습니다. 서버는 웹 사이트의 호출에 대해 다른 포트에서 수신하는 데이터를 요청할 수 있습니다. 이는 연결된 예제의 설정과 유사합니다. – 4xle

+0

@ 4xle node.js 서버 백엔드의 기본 포트 80을 다른 포트로 변경 하시겠습니까? –

답변

0

는이 같은 코드를 찾고 있습니다 :

app.set('port', process.env.PORT || 3000); 

var server = app.listen(app.get('port'), function() { 
    debug('Express server listening on port ' + server.address().port); 
}); 

나는 빈 노드 응용 프로그램을 작성하고 푸른 웹 앱에 배포 권하고 싶습니다. 그런 다음 포트를 연결하려는 포트와 비교하여 차이점을 확인하십시오.

+0

가능한 경우 그 기회를 제공 할 것입니다. – 4xle

+0

이것은 질문에 대답하지 않습니다. 포트를 변경하거나 여러 포트에서 수신 대기를 허용하지 않습니다. 이것은 단순히 노드 앱이 App Service가 앱을 매핑 한 포트에서 수신 대기하도록 허용합니다 (필요한 단계이지만 OP의 문제를 해결하지 못함). –

+0

내 질문에 결과가 업데이트되었습니다. – 4xle

0

localhost : 8001을 azutanga.com으로 리디렉션하려면 nginx를 사용하여 가상 호스트를 만드십시오. 웹 응용 프로그램의 많은 포트를 사용하려면 Express를 사용하여 많은 응용 프로그램 객체를 사용하려는 포트로 만들 수 있습니다. 또는 클러스터 (https://nodejs.org/api/cluster.html)를 사용하여 java 소켓과 같은 TCP 연결을 공유하십시오.

관련 문제