Apache를 Node.js로 바꿀 수 있습니까? 실행되는 웹

일반적인 용의자 (Apache, MySQL 및 PHP)를 사용하여 CentOS에서 실행되는 웹 사이트가 있습니다. 이 웹 사이트가 처음 시작된 이후로 웹 사이트는 상당히 발전했으며 이제는 실시간 알림과 같이 더 멋진 일을하고 싶습니다. 내가 읽은 내용에서 Apache는 이것을 잘못 처리합니다. Apache 만 Node.js로 대체 할 수 있는지 궁금합니다 ( ” LAMP ” 대신 “LNMP”).

솔루션을 온라인으로 검색하려고 시도했지만 찾지 못했습니다. 내가 읽은 내용을 올바르게 해석하면 대부분의 사람들은 Node.js가 Apache와 PHP를 함께 바꿀 수 있다고 말합니다. 그래도 기존 PHP 코드가 많이 있으므로 유지하는 것이 좋습니다.

그것이 분명하지 않은 경우, 나는 꽤 혼란스럽고 약간의 깨달음을 사용할 수 있습니다. 매우 감사합니다!



답변

JavaScript로 PHP를 다시 작성할 준비가 되었다면 Node.js가 Apache를 대체 할 수 있습니다.

서버와 클라이언트간에 리버스 프록시 모드로 실행되는 Apache 또는 NGINX 인스턴스를 배치하면 모든 PHP를 완전히 대체 할 때까지 Node.js의 JavaScript 및 Apache 호스팅 PHP의 일부 요청을 처리 할 수 ​​있습니다. JavaScript 코드로. 이것은 행복한 매체 일 수 있습니다 : WebSockets는 Node.js에서 작동하고 Apache + PHP에서는 더 평범한 작업을 수행하십시오.


답변

Node.js는 이벤트 / 차단되지 않는 아키텍처 덕분에 Apache보다 빠를 수 있지만 일부 Apache 기능을 대체하는 모듈 / 라이브러리를 찾는 데 문제가있을 수 있습니다.

Node.js 자체는 경량의 저수준 프레임 워크로, 웹 애플리케이션의 서버 측 컨텐츠 및 실시간 부분을 비교적 빠르게 빌드 할 수 있지만 Apache는 훨씬 광범위한 구성 옵션 및 “클래식”웹 서버 지향 기능을 제공합니다.

PHP를 express.js와 같은 node.js 기반 웹 응용 프로그램 프레임 워크로 바꾸지 않으려면 Apache를 유지해야합니다 (또는 성능 문제가있는 경우 Nginx로 마이그레이션하는 것을 고려하십시오).


답변

Node.js는 웹 서비스의 미래라고 생각하지만 기존 PHP 코드가 많은 경우 Apache / MySQL이 가장 좋습니다. Apache는 요청을 Node.js로 프록시하도록 구성하거나 Node.js는 요청을 Apache로 프록시하도록 구성 할 수 있지만 두 경우 모두, 특히 첫 번째 경우에는 일부 성능이 손실된다고 생각합니다. 트래픽이 많은 웹 사이트를 운영하지 않는다면 큰 문제는 아닙니다.

방금 stackoverflow에 등록했지만 허용되는 답변에 대해서는 아직 언급 할 수 없지만 오늘날 sendfile ()을 사용하여 HTTP 프로토콜을 통해 파일을 제공하는 간단한 Node.js 스크립트를 만들었습니다. (허용 된 답변이 링크되는 기존 예제는 베어 TCP 프로토콜 만 사용하여 파일을 보내므로 HTTP에 대한 예제를 찾을 수 없으므로 직접 작성했습니다.)

그래서 누군가 이것이 유용하다고 생각했습니다. sendfile () OS 호출을 통해 파일을 제공하는 것이 “사용자 랜드”를 통해 데이터를 복사 할 때보 다 반드시 빠를 필요는 없지만 CPU 및 RAM을 덜 사용하게되므로 기존 방식보다 더 많은 수의 연결을 처리 할 수 ​​있습니다.

링크 : https://gist.github.com/1350901


답변

내가 말한 것을 정확하게 설명하는 이전 SO 게시물 (php + socket.io + node)

socket.io를 사용하여 somehost : 8000에 노드 서버를 넣고 socket.io 클라이언트 코드를 태그에 넣을 수 있으며 최소한의 작업으로 기존 작업을 많은 작업없이 socket.io (실시간 베이비)로 흔들 수 있습니다.

노드가 유일한 백엔드 서버가 될 수 있지만 노드는 이름에 따라 노드가되는 것을 좋아합니다. Ryan Dahl이 PHP Users 그룹에 제공 한 대화를 잠시 확인한 후 작업을 수행하고 서로 대화하는 여러 노드 프로세스의 비전과 관련된 이름 노드를 언급했습니다.


답변

요즘에는 램프 대 평균입니다. 직접 비교하려면 http://tamas.io/what-is-the-mean-stack을 참조하십시오 .

물론 M, E 및 A는 다소 가변적입니다. 예를 들어 최신 코아 가 (E) xpress를 대체 할 수 있습니다.

그러나 Apache를 Node.js로 바꾸는 것이 웹 스택을 현대화하는 올바른 방법이 아닐 수도 있습니다.


답변