Node.js + Express 웹 애플리케이션을 패키징하고 배포하는 방법은 무엇입니까?
저는 Node.js 프로그래밍을 처음 접하고 최근에 (mongoDB와 함께 익스프레스, 백본 및 기타 무료보기 기술)을 사용하여 작업 웹 애플리케이션을 만들었습니다. 이제 스테이징 환경에 동일하게 배포하고 싶은 시점 에이 애플리케이션을 패키징하고 배포하는 방법을 잘 모르겠습니다. [mongoDb 관리 및 별도 설정 가능]
저는 Java 세계에서 왔으며 거기에서 서블릿 컨테이너에 배포되는 웹 응용 프로그램을위한 추가 가능한 라이브러리 및 전쟁 / 귀 패키지를위한 jar를 만듭니다. 이제이 경우 node.js 자체가 웹 컨테이너 역할도 웹앱을 어떻게 패키징하고 있습니까?
- Express를 사용하여 빌드 된 패키징 노드 웹앱의 표준 형식 / 서열이 있습니까? (노드를위한위한 jar / war 패키징 시스템이 앱?)
- 패키지화는 어떻게 배포합니까? 자체 컨테이너이기 때문에 exe가 될까요?
추신 : 지금은 필요한 모든 소스 파일을 이징 환경에 수동으로 복사하고 npm 명령을 실행하여 해당 컴퓨터의 모든 스테를 다운로드 한 다음 '영구'또는 다른 사용자를 사용하고 있습니다. (또한 앱이 충돌하고 영원히 실패하는 경우를 대비하여 방지하는 것을 추가하십시오) 이것이 올바른 방법인지 확실하지 않습니까? 이 문제를 해결하는 표준화 된 방법이 확신합니다.
표준화 된 방법은 없지만 올바른 길을 가고 있습니다. 귀하는 귀하의 경우 package.json
단지 제외하고, 생산 시스템 / 우편 / 복제 디렉토리 최신 상태를 복사 할 수 있습니다 node_modules
.
시스템에서 프로덕션 테스트가있는 경우 실행 npm install
하여 종속성을 설치 npm test
하고 마지막으로NODE_ENV=production node server.js
forever와 같은 래퍼 주제를 포함하는 꽤 도움이된다고 생각한 최근 슬라이드는 여기 에서 수 있습니다 .
Node.js
애플리케이션 배포 는 매우 쉬운 일입니다. Maven에는 pom.xml
. 의 관련 개념은 Node.js
입니다 package.json
. 에 대한 대사를 이용할 수 있습니다 package.json
. 에서 환경 설정을 수행 할 수도 있습니다 package.json
. 예를 들어 개발 환경에서는 다음과 같이 말할 수 있습니다.
단위 테스트를 실행하고 싶습니다.
그러나 생산 중;
단위 테스트를 건너 뛰고 싶습니다.
.m2
폴더 아래 에 maven에 대한 로컬 저장소가 있습니다. Node.js에는 node_modules
Node.js 프로젝트 아래 에 폴더가 있습니다. 이름으로 모듈 폴더를 볼 수 있습니다.
grunt
이 답변 의 일부로 갑시다 . Grunt
프론트 엔드 자산, html, javascript, css에 대한 작업 관리자입니다. 예를 들어, 배포하기 전에 html, css, javascript 이미지를 축소 할 수 있습니다. 또한 grunt
에서 작업 실행 기능을 사용할 수 있습니다 package.json
.
샘플 애플리케이션을 보려면 여기 에서 애플리케이션을 애플리케이션을 사용할 수 있습니다 . 폴더 구조 및 package.json
참조를 확인하십시오 .
배포의 경우 시작 응용 프로그램을위한 heroku 배포를 제안합니다. 여기에서 방법을 사용할 수 있습니다 . 이것은 간단한 git 기반 배포입니다.
프로젝트 실행 부분에서 환경을 설정 NODE_ENV=development
하고 node app.js
. 여기
app.js
당신의 프로젝트에 있습니다.
다음은 java 및 nodejs에 대한 최윤 개념입니다.
maven clean install
=>npm install
.m2
폴더 =>node_modules
(프로젝트 폴더 아래)mvn test
=>npm test
(의 테스트 섹션package.json
)junit
,,powermock
... => mocha , node-unit , ...Spring MVC
=> Express.JSpom.xml
=>package.json
import package
=>require('module_name')
- Express를 사용하여 빌드 된 패키징 노드 웹앱의 표준 형식 / 서열이 있습니까? (노드를위한위한 jar / war 패키징 시스템이 앱?)
예, CommonJS 패키지 사양 :
이 사양은 CommonJS 프로그램 및 라이브러리 배포를위한 CommonJS 패키지 형식을 설명합니다. CommonJS 패키지는 모듈, 코드 및 기타 자산 모음을 단일 형식으로 일관되게 래핑 한 것입니다. CommonJS 구성 요소의 편리한 전달, 설치 및 관리를위한 기반을 제공합니다.
다음 질문 :
2. 패키징 된 후 어떻게 배포 배포합니까? 자체 컨테이너이기 때문에 exe가 될까요?
나는 생산을 위해 Heroku 에 배포 할 Hüseyin의 제안을 두 번째로 합니다. 개발 및 스테이징을 위해 추가 VirtualBox 및 Amazon EC2와 Node-Appliance 를 함께 사용합니다 .
이 프로그램은 build-debian-cloud 또는 Debian-VirtualBox-Appliance에 의해 구축 된 Debian 머신을 가져 와서 git을 통해 배포 된 Node 애플리케이션을 수있는 Node.js "appliance"로 변환합니다.
웹앱은 exe
.
이에 접근하는 몇 가지 방법 :
코드가 아닌 모든 것을 제외하고 (
node_modules/**
) 힘내에 코드를 리포지토리 푸시 한 다음 스테이징 Environmental &에서 가져와 실행npm install
하여 모든 종속성을 복원합니다.그것으로부터 NPM 패키지를 생성하고,
npm
당신의 스테이징 환경에서 그것을 통해 설치하십시오 (이것은 또한 모든 의존성을 처리해야합니다).Grunt
를 통해 사용하여 복원하는 것 보다 스테이징 환경에 수동 복사 / ssh 파일 (을 사용하여 자동화 할 수 있음 )npm
이것이 확실한 것을 찾는 누군가에게 도움이 될 수 있기 때문입니다. Node js 앱의 패키징은 "npm pack"명령을 사용하여 수행 할 수 있습니다. zip 파일을 생성합니다.
zeit의 pkg 모듈을 사용했습니다. linux / win / macos를위한 크로스 플랫폼 결과물을 생성 할 수 있습니다. 실제로 작동합니다.
모든 js 펼쳐보기를 가져와 단일 파일로 패키징합니다.
내가 사용한 이유는 소스 코드 보안에 도움이되기 때문입니다. 이렇게하면 고객 환경에서 프로덕션 환경에서 애플리케이션에 액세스 할 수 있지만 소스 코드에는 액세스 할 수 없습니다.
또한 장점 중 하나는 프로덕션 환경에서 노드 바이너리도 빌드 내부에 패키징되므로 실제로 고객이 node.js를 설치할 필요가 없다는 것입니다.
https://www.npmjs.com/package/pkg
참고 URL : https://stackoverflow.com/questions/21259181/how-to-package-deploy-node-js-express-web-application
'ProgramingTip' 카테고리의 다른 글
std :: set을 반복하는 방법? (0) | 2020.10.14 |
---|---|
Android의 Google 클라우드 메시징에서 등록 ID 변경 처리 (0) | 2020.10.14 |
마지막 수정 날짜 (0) | 2020.10.14 |
위도 및 경도 지점에서 도시 이름을 얻으려면 어떻게해야합니까? (0) | 2020.10.14 |
프롬프트없이 PECL 모듈 설치 (0) | 2020.10.14 |