Saya memiliki situs web yang berjalan di CentOS menggunakan tersangka biasa (Apache, MySQL, dan PHP). Sejak pertama kali situs web ini diluncurkan, situs ini telah berkembang sedikit dan sekarang saya ingin melakukan hal yang lebih menarik dengannya — yaitu pemberitahuan waktu nyata. Dari apa yang saya baca, Apache menangani ini dengan buruk. Saya bertanya-tanya apakah saya bisa mengganti hanya Apache dengan Node.js (jadi alih-alih " LAMP ", itu akan "LNMP").
Saya sudah mencoba mencari solusi di internet, tetapi belum menemukannya. Jika saya benar menafsirkan hal-hal yang telah saya baca, tampaknya kebanyakan orang mengatakan bahwa Node.js dapat menggantikan Apache dan PHP secara bersamaan. Saya punya banyak kode PHP, jadi saya lebih suka menyimpannya.
Jika belum jelas, saya cukup bingung dan bisa menggunakan beberapa pencerahan. Terima kasih banyak!
Jawaban:
Jika Anda siap untuk menulis ulang PHP dalam JavaScript, maka ya, Node.js dapat menggantikan Apache Anda.
Jika Anda menempatkan instance Apache atau NGINX berjalan dalam mode proxy-terbalik antara server Anda dan klien Anda, Anda bisa menangani beberapa permintaan dalam JavaScript di Node.js dan beberapa permintaan di PHP yang di-hosting oleh Apache, hingga Anda dapat sepenuhnya mengganti semua PHP Anda. dengan kode JavaScript. Ini mungkin media yang menyenangkan: apakah WebSockets Anda berfungsi di Node.js, lebih banyak pekerjaan biasa di Apache + PHP.
sumber
sendfile
, dan ada modul untuk dukungan FastCGI yang mungkin membuatnya mudah untuk melayani PHP Anda melalui Node juga. Adapun nginx vs Apache, saya selalu menjadi pengisap untuk server async-style di atas threaded atau server multiproses :) tetapi saya telah menemukan dokumentasi Apache lebih mudah untuk menemukan dan membaca. Saya akan menyebutnya preferensi pribadi kecuali Anda perlu skala ke nomor luar biasa. :)Node.js mungkin lebih cepat daripada Apache berkat arsitektur yang terjadi / non-pemblokiran, tetapi Anda mungkin memiliki masalah menemukan modul / pustaka yang menggantikan beberapa fungsi Apache.
Node.js sendiri adalah kerangka kerja tingkat rendah yang ringan yang memungkinkan Anda untuk secara relatif cepat membangun hal-hal sisi server dan bagian waktu-nyata dari aplikasi web Anda, tetapi Apache menawarkan opsi konfigurasi yang lebih luas dan fitur berorientasi server web "klasik".
Saya akan mengatakan bahwa kecuali Anda ingin mengganti PHP dengan kerangka aplikasi web berbasis node.js seperti express.js maka Anda harus tetap menggunakan Apache (atau berpikir tentang migrasi ke Nginx jika Anda memiliki masalah kinerja).
sumber
Saya percaya Node.js adalah masa depan dalam penyajian web, tetapi jika Anda memiliki banyak kode PHP yang ada, Apache / MySQL adalah taruhan terbaik Anda. Apache dapat dikonfigurasikan ke permintaan proxy ke Node.js, atau Node.js dapat mem-proxy permintaan ke Apache, tetapi saya percaya beberapa kinerja hilang dalam kedua kasus, terutama pada yang pertama. Bukan masalah besar jika Anda tidak menjalankan situs web lalu lintas yang sangat tinggi.
Saya baru saja mendaftar ke stackoverflow, dan saya belum bisa mengomentari jawaban yang diterima, tetapi hari ini saya membuat skrip Node.js sederhana yang benar-benar menggunakan sendfile () untuk melayani file melalui protokol HTTP. (Contoh yang ada bahwa tautan jawaban yang diterima hanya menggunakan protokol TCP kosong untuk mengirim file, dan saya tidak dapat menemukan contoh untuk HTTP, jadi saya menulisnya sendiri.)
Jadi saya pikir seseorang mungkin menganggap ini berguna. Melayani file melalui sendfile () OS call tidak selalu lebih cepat daripada ketika data disalin melalui "user land", tetapi akhirnya menggunakan CPU dan RAM lebih sedikit, sehingga mampu menangani jumlah koneksi yang lebih besar daripada cara klasik.
Tautan: https://gist.github.com/1350901
sumber
Posting SO sebelumnya yang menjelaskan apa yang saya katakan (php + socket.io + node)
Saya pikir Anda bisa memasang server node di somehost: 8000 dengan socket.io dan menampar kode klien socket.io ke dalam tag dan dengan pekerjaan minimal dapatkan aplikasi yang ada goyang dengan socket.io (bayi realtime) tanpa banyak pekerjaan.
Sementara node dapat menjadi satu-satunya server backend Anda ingat bahwa node suka mengharumkan namanya dan menjadi sebuah node. Saya memeriksa pembicaraan beberapa waktu lalu yang diberikan Ryan Dahl kepada grup Pengguna PHP dan dia menyebutkan nama simpul yang berkaitan dengan visi beberapa proses simpul yang bekerja dan berbicara satu sama lain.
sumber
LAMP versus MAKNA saat ini. Untuk perbandingan langsung lihat http://tamas.io/what-is-the-mean-stack .
Tentu saja M, E dan A agak bervariasi. Sebagai contoh, koa yang lebih baru dapat menggantikan (E) xpress.
Namun, hanya mengganti Apache dengan Node.js mungkin bukan cara yang tepat untuk memodernisasi tumpukan web Anda.
sumber