Apakah ada server web ringan yang akan menyajikan konten dinamis?

21

Saya sedang membangun gambar dengan server Nagios. Salah satu masalah pi raspberry adalah ingatannya cukup kecil pada pi raspberry. Jadi saya akan menggunakan antarmuka ringan berdasarkan php-apc bukan yang standar.

Saya ingin tahu server web ringan apa yang disarankan untuk digunakan?

Saya sedang mempertimbangkan server web minimum yang dapat melakukan php dan menyediakan SSL. Saya sedang memikirkan Apache2 atau Nginx. Meskipun saya pikir Apache akan tetap mengungguli Nginx karena kontennya dinamis.

Lucas Kauffman
sumber
1
Nginx akan dengan mudah mengungguli Apache.
Alex Chamberlain
@AlexChamberlain pada konten statis yang dilakukannya, tetapi tidak pada dinamis.
Lucas Kauffman
5
Klaim. Itu tergantung apa yang Anda maksudkan dengan kinerja. Nginx akan menggunakan lebih sedikit memori, lebih sedikit kebocoran dan melayani file (statis) lebih cepat. Dalam pengalaman saya (terbatas, tetapi teknis), konten dinamis disajikan lebih cepat atau lebih cepat daripada Apache. Mengingat profil memori Nginx, itu akan tampil jauh lebih baik pada Raspberry Pi. Keuntungan Apache - meskipun tidak di sini - adalah lebih stabil dan ada teknisi yang lebih berpengalaman.
Alex Chamberlain
Saya bahkan tidak akan mempertimbangkan Apache dalam 256MB kecuali jika Anda memiliki konfigurasi yang sangat rumit yang nginx atau lighttpd tidak dapat mengelola
John La Rooy

Jawaban:

17

Pertanyaan sebenarnya di sini adalah "Apakah Anda memerlukan semua fitur yang disediakan oleh Apache?" (atau yang lebih penting, "Apakah Anda bersedia menggunakan memori untuk fitur-fitur ini?") - Anda dapat mengkompilasi kustom Apache + mod_perl atau mod_php yang SANGAT dilucuti untuk menjalankan antarmuka web Nagios Anda (atau apache Striped yang dilucuti yang hanya menjalankan perl CGIs), tetapi bahkan dalam bentuk minimalis Apache mungkin akan mengambil lebih banyak memori daripada nginx untuk melakukan pekerjaan yang sama - Itu hanya tidak dibangun untuk menjadi kecil.

Untuk menjadi 100% yakin Anda mungkin ingin melakukan bake-off (kompilasi nginx dan Apache dan lihat mana yang memakan lebih sedikit RAM), tetapi pengalaman saya di server "normal" memberi tahu saya bahwa nginx mungkin merupakan pilihan yang lebih baik untuk memori rendah. konfigurasi: Anda memberikan beberapa fleksibilitas Apache, tetapi jika Anda tidak memerlukannya (dan sebagian besar situs tidak ) Anda tidak akan pernah melihat perbedaannya.


Kinerja (waktu) bijaksana Saya ragu Anda akan dibatasi oleh server web Anda - Semua tolok ukur yang dibuat-buat, jika Anda melakukan volume yang cukup di mana kinerja mesin server yang membagikan halaman adalah penting Anda mungkin akan untuk memanggang Raspberry Pi Anda (dan sungguh, berapa banyak orang yang akan melihat data pemantauan Anda sekaligus? :-).
Ini cukup banyak aksioma bahwa Anda dapat mengoptimalkan sistem untuk ruang atau waktu, tetapi tidak pernah keduanya - dan pada ruang Raspberry Pi mungkin merupakan kendala pembatas Anda.

voretaq7
sumber
Saya skeptis bahwa Apache jauh lebih kuat daripada Nginx hari ini.
Alex Chamberlain
@AlexChamberlain Jika Anda membaca posting saya dengan seksama, Anda akan perhatikan bahwa saya tidak pernah menggunakan kata itu powerful(karena ini adalah istilah yang tidak ditentukan). Saya berkata flexible(merujuk pada berapa banyak cara server inti telanjang dapat dikonfigurasi untuk memenuhi kebutuhan). Ini tidak dimaksudkan untuk mencerminkan buruk pada kedua server: keduanya adalah potongan kode yang sangat baik, tetapi mereka memiliki tujuan desain yang sangat berbeda. Apache dirancang untuk menjadi segalanya bagi semua orang - sebuah truk tempat Anda dapat mengemas seluruh rumah Anda. nginx dirancang untuk menjadi kecil dan cepat - mobil sport, tetapi Anda tidak dapat membawa serta istri, anak-anak, mertua dan anjing keluarga.
voretaq7
Saya pikir Nginx sedang tumbuh ... sekarang setidaknya hatchback dan terus bertambah. Ini dapat mendukung semua bahasa dinamis utama dalam satu atau lain cara, mendukung SSL dan SPDY saat ini dalam Beta.
Alex Chamberlain
15

Nginx

Saya memiliki beberapa pengalaman bagus dengan Nginx sebagai server web. Saya akan menggabungkannya dengan kerangka kerja wsgi ringan seperti botol atau termos untuk pengembangan aplikasi cepat dengan Python.

Tapi jangan berharap untuk menangani lebih dari 10 atau lebih permintaan per detik :)

Instalasi

Nginx ada dalam repositori Debian / Raspbian dan Arch, sehingga dapat diinstal dengan satu perintah.

Lengkungan

sudo pacman -Sy nginx

Debian / Raspbian

sudo apt-get install nginx

Konfigurasi

Ada banyak contoh konfigurasi di seluruh web dan penjelasan rinci mungkin di luar cakupan pertanyaan ini. Ada banyak contoh di Nginx Wiki dan milis sangat membantu.

Karena Anda menyebutkan PHP, Anda akan sangat tertarik untuk mengetahui bahwa /etc/nginx/nginx.conffile standar berisi contoh PHP.

John La Rooy
sumber
Saya suka Nginx. Sangat mudah dikembangkan menggunakan sistem modularnya.
Alex Chamberlain
1
Saya mungkin sedikit memperluas jawaban Anda, semoga Anda tidak keberatan?
Alex Chamberlain
1

node.js

Anda dapat menggunakan node.js untuk membuat server web light waight. Lihat contoh berikut dari situs tutorial node.js:

var http = require('http');
  http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.write("Dynamic contents...");
      res.end('Hello World\n');
  }).listen(1337, "127.0.0.1");

console.log('Server running at http://127.0.0.1:1337/');

Kode di atas adalah skrip java sehingga Anda dapat menulis logika pembuatan kode dinamis dalam skrip java dan mulai menggunakannya dalam waktu singkat.

Anda harus mengunduh dan mengatur node.js dari tautan: http: //nodejs.org/ untuk Windows atau platform apa pun yang Anda inginkan.

Mulai server web menggunakan perintah:

node hello.js
rashid.noorani
sumber
Tetapi apakah Node.js berbicara php?
Lucas Kauffman
Node.JS digunakan dalam konteks lain. Ini tidak berfungsi dengan baik sebagai server yang berdiri sendiri karena semua kodenya adalah C ++. TAPI! Itu hebat karena Anda dapat menggunakan node untuk secara langsung mengakses GPIO dan perangkat keras level rendah lainnya menggunakan node.js '+1 untuk variasi. Tetapi Anda masih memerlukan ujung depan seperti apache / lighttpd / iis untuk menyajikan konten
Piotr Kula
@LucasKauffman Tidak - ini bukan server web, melainkan aplikasi web.
Alex Chamberlain
1
Selamat datang di Stack Exchange. Jawaban yang bagus, tapi saya khawatir saya telah turun karena saya tidak berpikir itu memecahkan pertanyaan. OP ingin PHP dan pembaca masa depan mungkin akan menginginkan server yang sedikit lebih mampu.
Alex Chamberlain
1
Saya menjalankan Nagios, tidak mengembangkan Aplikasi saya sendiri: p
Lucas Kauffman
0

Mungkin Anda bisa melihat apa yang digunakan orang lain pada kotak low end .

Pada dasarnya, ini lighttpd + php-fcgi. Lighttpd benar-benar ringan dan php-fcgi dapat dikonfigurasi untuk menggunakan hanya sedikit memori. Saya sudah mengaturnya di kotak VPS 64MB (bukan nagios, tapi CMS sekalipun).

Saya juga tidak tahu apakah Anda juga perlu mengoptimalkan MySQL untuk menggunakan memori seminimal mungkin .

Ini dapat membantu Anda, mungkin juga tidak. Saya belum mulai menggunakan Raspi saya :)

Zlatko
sumber
0

Saya menggunakan kombinasi Nginx / Penumpang untuk menjalankan pi.gadgetoid.com 24/7 berbasis Ruby pada Raspberry Pi 512Mb. Ini secara drastis mengungguli pengaturan Thin / Apache yang saya gunakan sebelumnya. Ini adalah situs web publik dengan lalu lintas yang cukup tinggi, walaupun saya telah banyak menipu dengan menggunakan Cloudflare (proxy caching pada dasarnya) untuk menangani sebagian besar volume itu.

Saya cukup yakin konfigurasi ini akan duduk dengan nyaman pada Pi 256MB juga, tapi saya kesulitan menyusun modul Penumpang dan Nginx; mengalami keterbatasan memori.

Saya tahu ini bukan solusi PHP, dan saya mungkin akan dimarahi karena menyarankan jawaban tangental seperti itu; tetapi jika Anda mencari Pi untuk mendorong batas pengetahuan Anda, dan melakukan ini untuk bermain-main santai, saya sangat menyarankan melihat ke Ruby dan Sinatra. Anda akan memiliki kebencian mendidih untuk PHP dalam beberapa minggu.

Pada umumnya Anda tidak akan mengalami banyak kesulitan menjalankan tumpukan web PHP / Apache pada server 256MB. Saya telah melakukan ini untuk situs yang jauh lebih besar dalam kapasitas profesional di hosting berbasis cloud. Saat MySQL terlibat, segalanya menjadi jelek. Menjalankan tumpukan LAMP penuh pada 256MB adalah menyakitkan untuk sedikitnya, tetapi tidak mustahil untuk volume lalu lintas rendah.

Phil Howard
sumber