Apa yang membuat PC bisa menjadi server web dan apa yang membuatnya tidak bisa?

43

Saya punya pertanyaan tentang menggunakan komputer sebagai server web. Mengapa komputer tertentu bisa menjadi server web? Fitur apa yang membuatnya bisa menjadi server web? Apakah ada kasus di mana komputer tidak dapat bertindak sebagai server web?

VincentTheonardo
sumber
Kartu jaringan.
el.pescado
1
Yang terkecil yang pernah saya lihat adalah kartu SD wifi yang dibuat oleh Apacer. Ini memiliki 4MB ram dan menjalankan linux dan dapat menanggapi permintaan web dan mengirimkan gambar ketika ada di kamera.
user3528438
@ el.pescado Kecuali klien berada di host yang sama.
Dmitry Grigoryev

Jawaban:

96

Hampir semua komputer dapat digunakan sebagai server [web], asalkan dapat terhubung ke jaringan, dan dapat menjalankan perangkat lunak server web. Sebagai server web bisa sangat sederhana, dan ada server web gratis dan open source, dalam praktiknya, perangkat apa pun dapat bertindak sebagai server web.

Masalah yang lebih besar adalah sisi jaringan. Agar sistem dapat bertindak sebagai server, mesin lain harus dapat mengaksesnya. Jika hanya untuk digunakan dalam LAN, tidak ada masalah; Namun, jika itu untuk digunakan dari Internet yang lebih luas, maka data harus diarahkan ke sana. Ini memerlukan alamat IP statis yang terkait dengan server (atau port diteruskan melalui router), atau layanan eksternal yang dapat memetakan nama domain / subdomain ke alamat IP dinamis yang berubah.

(FWIW, Anda dapat membeli $ 10 komputer yang dapat bertindak sebagai server web dasar.)

Tentu saja, sementara perangkat apa pun dapat bertindak sebagai server web, fungsionalitas situs web dapat sangat bervariasi, dan perangkat murah (atau koneksi yang lambat) mungkin tidak dapat memenuhi tuntutan tergantung pada apa situs web spesifiknya.

Saya perhatikan bahwa segala sesuatu di atas berbicara tentang server web - tetapi hal yang sama dapat dikatakan untuk hampir semua jenis server.

davidgo
sumber
2
masalah lain adalah bahwa perangkat murah mungkin tidak dapat diandalkan seperti server "nyata" karena komponen mereka tidak disertifikasi untuk berjalan dalam waktu yang sangat lama dan memori mereka tidak memiliki cara untuk mencegah bit busuk seperti RAM ECC. Saya telah melihat rekan-rekan saya meninggalkan komputer mereka selama beberapa bulan dan berakhir di BSOD
phuclv
11
Iya dan tidak. Saya sudah menjalankan banyak sistem 24/7 tanpa ecc ram, dan sebagian besar router rumah / usaha kecil - yang merupakan server wenb juga berjalan cukup andal tanpa bsod. Tentu saja, setara BSOD tidak umum di luar dunia Windows.
davidgo
9
@davidgo Kesalahan Bugcheck juga tidak umum di dunia Windows, kecuali jika Anda memiliki perangkat keras yang gagal atau driver yang cerdik. Yang menyebabkan masalah serupa untuk OS apa pun. Kehilangan jumlah masalah terkait driver video pada Windows dan Linux.
Bob
7
@davidgo BSOD hanya gagal-aman, bukan masalah sendiri. Ini adalah upaya terakhir untuk mencegah kode licik / kerusakan data dan kerusakan perangkat keras. Bagaimanapun, bukti anekdotal sama sekali tidak berguna dalam hal-hal seperti ini - ada kemungkinan sangat besar Anda tidak akan pernah menemui masalah yang terlihat dengan ini, atau Anda akan salah mengartikannya, dan ada sejumlah besar faktor lingkungan yang membuatnya lebih atau kurang mungkin (suhu, lintang, kebisingan EM, kualitas jaringan listrik, beban sistem, keandalan komponen yang diberikan). Biaya dan nilai ECC RAM dan semacamnya adalah keputusan bisnis.
Luaan
15
Anda mungkin sudah memiliki beberapa server web di rumah: Router / titik akses Anda, printer Anda, dan semua jenis gadget otomatisasi rumah yang dapat dikonfigurasi seperti meter cerdas, kamera IP, telepon VoIP, termostat yang dapat diprogram, TV Anda. Yang lebih kecil memberi Anda gambaran betapa sedikit perangkat keras yang dibutuhkan. Komentar lain: Jaringan bukan persyaratan ketat untuk server web - sangat masuk akal untuk memiliki server yang hanya melayani halaman untuk pengguna di mesin yang sama .
Peter - Pasang kembali Monica
25

Sama sekali tidak rumit. Itu hanya tergantung pada definisi Anda tentang "server web".

Sangat mungkin untuk menjalankan "server web" pada perangkat sesederhana mikrokontroler.

Biarkan adalah mempertimbangkan apa yang harus dilakukan server web minimal. Ini perlu menampilkan beberapa teks - tidak harus bahkan dalam HTML ke klien. Perlu mengetahui permintaan adalah permintaan, dan merespons dengan tepat. Anda bahkan tidak perlu konektivitas jaringan jika "klien" Anda adalah lokal. Ini akan menjadi server web yang sepenuhnya tidak berguna.

Ini akan menjadi server web yang setara dengan salah satunya .

masukkan deskripsi gambar di sini

Menambahkan konektivitas jaringan untuk klien (Ethernet itu bagus, tetapi tidak ada alasan teknis Anda tidak dapat terhubung ke server web yang berjalan di wifi) dan bisa melakukan rute dari klien akan lebih baik.

A $ 5 ESP8266 - mikrokontroler yang murah dan minim dengan wifi dapat menangani sebagian besar itu, dan bahkan mungkin konten dinamis dasar

Saya menggunakan sesuatu seperti itu untuk berbagi file cepat menggunakan Python. Masih mungkin untuk menulis sesuatu seperti ini di mikrokontroler atau bahkan menjalankannya di telepon.

Konten statis membosankan. Tambahkan bahasa dinamis dan Anda harus mulai memikirkan sistem yang lebih berat. Hal-hal yang menjalankan Linux atau Windows itu bagus.

Pada titik ini, Anda berbicara tentang router konsumen, aplikasi kecil menggunakan halaman web di UI dan semua itu.

Server web bahkan bukan masalah kompleks dan dapat ditulis dalam lima baris bash dan dijalankan di Linux. Sekarang malapetaka ... Tetapi sistem apa pun yang dapat menjalankan azab dapat menjalankan server web.

Sebuah baik web server konfigurasi mampu menangani beban yang diberikan agak rumit.

Journeyman Geek
sumber
11
Bahkan dimungkinkan untuk menyatukan beberapa chip TTL dan menjalankan server web. Lihat halaman web ini untuk detailnya
Josef
7
Itu kira-kira seperti mengatakan, "Bahkan mungkin untuk menyatukan baja dan membangun menara Eiffel. Itu sangat keren
Journeyman Geek
1
Yang mengherankan, server web 'sia-sia' Anda persis seperti bantuan yang digunakan untuk produk tertentu :) - Saya tidak dapat mengingat contoh, tetapi setidaknya ada satu kasus di mana bantuan berjalan di server (bukan hanya halaman html yang diberikan oleh browser) dan masalah-masalah berikutnya yang disajikan (halaman bantuan saya tidak memuat ketika firewall saya aktif!).
djsmiley2k
5
@ djsmiley2k Eclipse membantu menggunakan server web lokal. Karena jawa
user253751
2
Raspi memiliki daya lebih tinggi dari 99,9% kemungkinan server web komersial berada di tahun 2000. Dan orang-orang sudah melakukan hal-hal yang sangat dinamis saat itu.
rackandboneman
11

Minimal

Secara harfiah, komputer apa pun dapat menjadi server web jika memiliki yang berikut:

  • Koneksi jaringan
  • Aplikasi server web yang sangat sederhana, seperti ini .

Tapi apakah itu cukup? Nah, itu pertanyaan yang sulit.

Melayani Intranet

Agar komputer menjadi server web yang melayani halaman web modern atau aplikasi web untuk seluruh komunitas (mis. Sekolah, perusahaan, museum):

  • Perangkat keras mampu merespons beberapa komputer sekaligus. Mungkin komputer lama yang menjalankan Linux atau Windows XP akan melakukannya.
  • Koneksi jaringan berkecepatan tinggi dengan bandwidth yang cukup, katakanlah 1 Gbit / detik Ethernet atau 802.11g Wi-Fi.
  • Aplikasi server web yang bagus, seperti IIS , Apache , Nginx , atau lainnya . (Anehnya, ketiganya gratis.)

Tapi itu hanya minimum untuk operasi kecil. Ketika operasi Anda menjadi lebih besar (yaitu Anda mendapatkan lalu lintas yang lebih tinggi dan melayani aplikasi web yang kompleks daripada halaman statis), kebutuhan Anda tumbuh. Anda pada akhirnya akan membutuhkan:

  • Perangkat keras kelas server seperti server yang dipasang di rak dengan beberapa CPU Xeon dan ratusan gigabytes RAM
  • Jaringan serat optik

Melayani dunia luar

Untuk mengeksploitasi infrastruktur Internet untuk melayani seluruh dunia, Anda perlu:

Tanpa ini, semua yang Anda miliki adalah server web potensial .


sumber
._. Saya menganggap raspi sebagai minimum dan janky sebagai heck. Perlu juga diingat banyak hal menggunakan halaman web sebagai UI. Router Anda memiliki tetapi bukan server web misalnya.
Journeyman Geek
9
Berselisih dengan komentar-komentar ini - router IS server web (serta hal-hal lain). Dengan logika komentar, tidak ada yang namanya server web karena sistem seperti itu memiliki fungsi lain.
davidgo
5
CPU yang berat dan kebutuhan sumber daya lainnya jauh lebih banyak tentang aplikasi web dan bahasa generasi HTML yang dinamis - misalnya PHP, yang umum tetapi (terutama jika diatur seperti biasanya) sangat tidak efisien bahasa tersebut - daripada tentang penyajian web. A 33MHz 80486 dengan 16MB RAM dapat dibuat untuk menangani banyak halaman statis jika ada yang peduli.
rackandboneman
@ crackandboneman Baiklah. Saya akan mengklarifikasi arti "jika operasi Anda menjadi lebih besar" untuk mengatasi masalah Anda.
@rackandboneman Bukan hanya 'bisa' dibuat untuk ditangani, tetapi 'sering juga'.
jwg
8

Perspektif Pemrograman / Perangkat Lunak:

Program yang dapat mendengarkan Port 80 di Network adapter. Itu berjalan pada OS yang Anda miliki. Dan dapat memproses permintaan sesuai dengan definisi HTTP.

Program yang mendengarkan port apa pun dapat dijangkau dari setiap komputer di jaringan yang sama. Idealnya, itu harus menjadi port standar yang dikenal (80 dan 8080 untuk server HTML; pilih lebih dari 1024 untuk aplikasi khusus). Bahkan merupakan praktik umum untuk menjalankan pengembangan program yang dapat dijangkau jaringan di komputer yang sama dengan yang Anda lakukan pengembangannya.

Jika Anda dapat mencapainya melalui localhost, Anda dapat mencapainya dari mana saja dalam jaringan yang sama, dan dari mana pun ada jalur ke mesin ini dan adaptor jaringannya.

Peringatan: Banyak lingkungan pengembangan all-in-one di instalasi default membatasi akses ke Localhost. Anda tidak ingin alat admin Anda dapat dijangkau dari Internet.

Perangkat keras:

Perangkat keras dimulai di suatu tempat di "komputer 10 tahun yang menjalankan XP atau Linux" dan berakhir di suatu tempat di sekitar "128 inti, dengan 2 TiB RAM dan 256 TiB SSD dalam serangan", dengan DB berjalan pada server yang berbeda juga . Aplikasi web cenderung dapat diparalelkan dengan menyenangkan, sehingga Anda dapat / harus meningkatkannya lebih banyak lagi dengan kelompok server tersebut. Dan Geocast. Dan desain terdistribusi. Dan banyak hal lainnya. Itu sepenuhnya tergantung pada skala apa yang kita bicarakan.

Server web paling sederhana yang mungkin Anda temui adalah router yang Anda gunakan, btw. Mereka semua menjalankan server Web untuk tujuan konfigurasi, dihosting di Linux (yang melakukan semua pekerjaan DHCP dan NAT).

Jaringan:

Memiliki jalur dari jaringan lain - termasuk di mana saja di Internet - sekarang yang adalah cerita yang sama sekali berbeda dan bagian bahkan lebih sulit daripada pemrograman aplikasi. Antara NAT dari Router Anda dan NAT tingkat carrier, hal ini menjadi sangat sulit.

  • Anda selalu memiliki opsi untuk membeli alamat IP tetap dari ISP Anda, bahkan sebagai pribadi. Seperti yang ditunjukkan, itu kemungkinan akan membutuhkan biaya tambahan. Entri DNS akan menjadi kualitas kehidupan.
  • Kembali sebelum NAT Tingkat Carrier , Anda dapat bekerja dengan alamat IP Dinamis dan layanan DynDNS Anda. Tetapi dengan NAT tingkat carrier, Anda sekarang memiliki NAT lain yang tidak terkendali untuk diatasi - mungkin. Tergantung penyedia Anda.
  • Solusi utama untuk melintasi semacam NAT, sejumlah lapisan adalah TCP / IP hole punching . Semua solusi VPN menggunakannya. Seperti halnya Skype, TeamViewer dan yang lainnya. Masalahnya adalah: Untuk melakukan meninju lubang TCP / IP, Anda memerlukan server yang sudah dapat dijangkau di Internet.
  • Jika ini tentang skala kecil (1 hingga 10 titik akhir), biasanya, cara paling sederhana adalah dengan membuat koneksi VPN ke dalam jaringan yang memiliki server. Kebanyakan Router memiliki dukungan untuk itu.
Christopher
sumber
2
"Komputer berumur 10 tahun yang menjalankan Linux". Mengingat usia web, kita dapat mendorongnya kembali dengan aman. Saya pribadi ingat menjalankan server web pada Intel 80386 asli, sekitar 20 tahun yang lalu.
MSalters
@Malters Anda bisa menggunakan ujung yang lebih rendah dari itu. Saya tidak dapat menemukannya hari ini, tetapi beberapa tahun yang lalu saya mengalami shell script / server web CGI yang dapat dijalankan pada perangkat keras serendah berakhir sebagai moto 68k. Itu tampaknya relatif populer 15-20 tahun yang lalu di ruang tertanam.
Dan Neely
3

Jika Anda memiliki segala jenis komputer (PC, laptop, smartphone, raspberryPI ...) dengan Python terinstal, cukup ketik:

$ python -m SimpleHTTPServer

Atau jika Anda memiliki Node.js diinstal:

$ npm install http-server -g
$ http-server

Selamat, Anda memiliki server web!

matt
sumber