이 기사에서는 cPanel을 사용하여 Namecheap의 공유 호스팅 서버에서 Node.js 앱을 호스팅하는 방법을 다룰 것입니다. 이 기사에서는 웹 앱을 위한 데이터베이스 서버 또는 React 프런트 엔드 설정에 대해 논의하지 않겠습니다. 대신 공유 호스팅 환경에서 Node 앱을 실행할 때 직면할 수 있는 문제에 집중하고 싶습니다. == 지체하지 말고 오늘 호스트하세요! == 웹 앱을 개발하는 과정에서 너무 멀리 떨어지기 전에 안정적인 버전을 온라인에 올리는 것이 좋습니다. 이는 프로덕션 환경 또는 프로덕션 환경과 유사한 스테이징 환경에 있을 수 있습니다. 대부분의 사람들은 온라인에서 호스팅하기 전에 앱이 거의 완성될 때까지 기다릴 것입니다. 이것이 제가 첫 번째 React 및 Node 웹 앱을 개발할 때 한 일입니다. 그러나 그 시점에서 Node API 서버를 실행하는 데 많은 어려움이 있었고 React 앱도 많이 변경해야 했습니다. 너무 많은 코드를 작성하기 전에 조정할 수 있도록 조기에 버전을 온라인에 게시하는 것이 좋습니다. == 공유 호스팅 서비스 사용 == NamecheapâÃÂÃÂ의 공유 호스팅 서버는 cPanel을 제어판 인터페이스로 사용하여 Apache 서버를 관리합니다. 이 지침은 또한 A2 Hosting 및 GoDaddy와 같은 cPanel과 함께 공유 호스팅 서비스를 사용하는 모든 사람에게 도움이 될 것입니다. 또한 SSL 인증서로 Namecheap 서버를 설정했으며 cPanel은 기본적으로 모든 HTTP 트래픽을 HTTPS로 리디렉션합니다. 따라서 내 서버로의 모든 트래픽은 안전합니다. DigitalOcean과 같은 VPS(Virtual Private Server) 호스팅 서비스에서 노드 앱을 호스팅하는 방법을 안내하는 많은 가이드를 찾을 수 있습니다. 처음부터 시작하는 경우 이와 같은 서비스를 사용하여 호스팅하면 더 많은 제어가 가능합니다. 그러나 일반적으로 공유 호스팅보다 비쌉니다. 제 경우에는 이미 Namecheap 공유 호스팅 서비스 비용을 지불했습니다. cPanel 및 공유 호스팅 사용의 몇 가지 이점: - 간단한 웹 관리 콘솔로 관리 - 구성하기 쉬운 - 특히 이미 사이트/도메인을 호스팅하고 있는 경우 저렴합니다. - 다른 기술을 탐색하는 경우 PHP 등의 다른 기술을 사용하여 동적 웹사이트를 쉽게 설정할 수 있습니다. 몇 가지 단점: - 기본 운영 체제에 대한 액세스 권한이 없기 때문에 제어가 더 적습니다. - 확장 불가능 == 모든 것이 어디로 가는가? == 먼저 Node 앱의 모든 소스 파일에 대한 폴더를 만들어야 합니다. /home/username 디렉토리에 âÃÂÃÂnodejsâÃÂÃÂ라는 폴더를 만들고 이 폴더 내에 각 앱에 대한 하위 폴더를 만듭니다. 이제 모든 소스 파일을 이 하위 폴더에 업로드합니다. package.json 파일도 포함해야 합니다. 패키지 관리자로 생성되는 âÃÂÃÂnode_modulesâÃÂà폴더를 업로드하지 마십시오. 나중에. 웹 앱 아키텍처 예제에서 Node API 서버를 호스팅하고 있다는 점을 기억하세요. 우리는 Node를 사용하여 React 앱을 호스팅하지 않을 것입니다(이 주제에 대한 자세한 내용은 다음 기사 참조). httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_1.jpg 폴더 레이아웃에는 /home/username/nodejs/mynodeapi 폴더 아래의 노드 소스 파일이 표시되며 거기에는 a /home/username/public_html/myapi 폴더의 .htaccess 파일 == 문제 âÃÂà노드 앱 canâÃÂÃÂt 액세스 포트 == 가장 큰 문제는 Node API 앱을 실행하는 것이었습니다. 문제는 NamecheapâÃÂÃÂ의 지원 문서에 제공된 샘플 코드가 작동하지 않았다는 것입니다! 포트 80에서 수신 대기하는 httpserver와 포트 443에서 http **s** 서버를 생성하려고 시도합니다. 그러나 항상 권한이 없다는 EACCESS 오류가 발생했습니다. 해당 포트를 사용합니다. == 솔루션 âÃÂà노드가 포트에 액세스할 필요가 없습니다! == 결국 다른 호스팅 제어판인 Plesk에 대한 스레드에서 사용자 SibProgrammer의 의견을 읽음으로써 해결책을 찾았습니다. cPanel은 Plesk와 마찬가지로 Phusion Passenger 애플리케이션 서버를 사용하여 노드 앱을 호스팅합니다. 요약하자면: 브라우저에서 요청을 보내면 Apache 서버로 이동한 다음 Phusion Passenger로 이동한 다음 Node 앱으로 이동합니다. Node 앱은 Apache 및 Phusion Passenger 애플리케이션 서버에서 추가 업스트림으로 처리되므로 포트를 소유할 필요가 없습니다. 이는 www.js(또는 app.js) 파일에서 httpserver를 생성하는 코드를 단순화합니다. * www.js * Namecheap용 http 서버 생성 테스트. * Dave */ const http = require('http http.createServer(function(request, response) { response.writeHead(200, {'Content-Type': 'text/html response.endh1>Hello Worldh1 listen(process.env) .PORT); console.log('앱이 실행 중입니다. 몇 가지 참고 사항: - process.env.PORT에서 수신합니다(수동으로 80 또는 443을 설정하는 대신). 테스트할 때 process.env.PORT가 정의되지 않은 것으로 나타났습니다! 하지만 흥미롭게도 이 경우에는 중요하지 않습니다. - SSL이 설정되어 있어도 http 서버를 사용하십시오. cPanel은 모든 HTTP 트래픽을 HTTPS로 리디렉션하고 결과적으로 HTTPS의 모든 요청에 ​​응답하도록 Apache를 구성했습니다. https 서버를 설정하고 SSL 인증서를 읽기 위해 Node 앱을 수동으로 구성할 필요가 없습니다. == Node API 서버의 최종 단계 == 이제 지침에 따라 노드 앱을 설정하는 비교적 간단한 프로세스여야 합니다. httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_2.jpg cPanelâÃÂÃÂs Node.js 구성 페이지의 스크린샷 - 적절한 Node.js 버전과 애플리케이션 모드를 선택합니다(프로덕션 권장). - âÃÂÃÂApplication rootâÃÂÃÂ는 이전에 소스 파일을 업로드한 폴더입니다(âÃÂà위의 예에서 nodejs/mynodeapiâÃÂÃÂ). - âÃÂÃÂApplication URLâÃÂÃÂ는 API에 액세스하는 데 사용되는 URL입니다(âÃÂÃÂmyapià 예에서 ¢ÃÂÃÂ). 이 상자에 지정한 이름은 /home/username/public_html 폴더에 하위 폴더를 만드는 데 사용됩니다. âÃÂÃÂ는 âÃÂÃÂApplication rootâÃÂà폴더와 이름이 같을 필요가 없습니다(하지만 종종 있을 것입니다). - âÃÂÃÂApplication 시작 파일âÃÂÃÂ은 Node 앱을 만든 방법에 따라 www.js 또는 app.js가 됩니다. - Passenger 로그 파일을 구성하는 방법은 귀하에게 달려 있습니다. - 앱을 생성하면 âÃÂÃâ NPM 설치 실행 버튼이 표시됩니다. ¢ÃÂÃÂ. 이것을 실행하면 앱에 필요한 모든 종속 모듈이 있는 âÃÂÃÂnode_modulesâÃÂà폴더가 생성됩니다. Node 앱을 설정하고 시작하면 /home/public_html 폴더에 하위 폴더가 생성됩니다. 이제 해당 폴더로 이동하여 .htaccess 파일을 편집하고 다음 행을 추가해야 합니다. RewriteEngine 끄기 이렇게 하면 Apache 서버가 API 서버로 이동해야 하는 요청을 그대로 다시 작성(또는 리디렉션)하는 것을 방지할 수 있습니다. 그리고 그게 다야! 이제 Node API 앱이 실행 중이고 API 호출에 응답해야 합니다. == 그래서 다음은 무엇입니까? == 이제 노드 API 서버를 설정했으므로 개발 환경에서 이 API 서버를 가리키도록 React 프런트 엔드를 변경할 수 있습니다. 또는 Postman을 사용하여 API 호출을 테스트할 수 있습니다. 다음 기사에서는 Namecheap 및 cPanel에서 React 앱을 호스팅하는 방법을 살펴보겠습니다.