Apa dasar-dasar menjalankan Server Web?

26

Ini adalah Pertanyaan Canonical yang diajukan tentang Beginning Web Server Administration.

Dengan asumsi bahwa Anda adalah SysAd awal, baru di WebOps, atau tim kecil dengan sedikit atau tidak berpengalaman dukungan Server Web SysAd (dan tidak mampu membelinya sekarang), apa yang harus Anda lakukan untuk mengonfigurasi dan mengamankan Server Web untuk bisnis Anda?

gWaldo
sumber
Anda menyebutkan dua kali manfaat memiliki sysad yang menyiratkan bahwa Anda berbicara dengan orang-orang yang bukan sysad. Yakin ini kemudian menempatkan Q & A Anda di luar ruang lingkup untuk Server Fault yang untuk sysads et al? Mungkin Super User adalah rumah yang lebih baik untuk ini?
user9517 mendukung GoFundMonica
8
Bacaan saya tentang FAQ ditafsirkan sebagai 'profesional teknis yang mengajukan pertanyaan Administrasi Sistem'. Saya telah melihat pertanyaan semacam ini berkali-kali ditanyakan dari orang-orang teknis (tetapi bukan SysAd) (kebanyakan Pengembang), dan mereka sering ditanggapi dengan keras bukannya benar-benar membantu. Pertanyaan ini diajukan sebagai kandidat untuk menjadi jawaban Canonical dari mana untuk memulai, dan mengapa mereka harus mempekerjakan SysAd yang nyata untuk membantu ASAP. (Dan mudah-mudahan tidak perlu menjawab pertanyaan khusus ini lagi.
gWaldo

Jawaban:

32

Sebelum Kita Mulai:

Memiliki orang yang berkualitas akan menghemat uang Anda. Sama seperti memiliki Pengacara yang baik (mungkin NSFW untuk bersumpah) atau seorang akuntan, memiliki SysAd yang berkualitas mungkin akan menghemat uang Anda, seringkali dengan hanya membantu Anda menghindari kesalahan yang mahal. Anda mungkin tidak memiliki uang untuk membayar keahlian sekarang, tetapi begitu Anda bisa, Anda harus melakukan investasi itu.

Tidak ada jawaban tunggal dan sederhana untuk pertanyaan ini. Jika Anda ingin mengajukan pertanyaan ini, Anda harus menyadari bahwa pertanyaan ini adalah inti dari bidang yang digunakan para profesional selama bertahun-tahun untuk belajar dan berlatih. Pertanyaan yang serupa dengan Pengembang adalah "bagaimana cara menulis Aplikasi Web?"; Tentu, kami dapat mengarahkan Anda ke petunjuk untuk memasang Ruby-on-Rails dan RoR "Hello World". Meskipun itu akan 'menjawab pertanyaan', itu sebenarnya tidak akan membantu Anda. Tanya Jawab ini adalah upaya untuk benar-benar membantu Anda.

Anda harus tahu:

Administrasi Server Web adalah topik besar, dan secara intrinsik terjalin dengan berbagai disiplin ilmu. Untuk melakukannya dengan baik, Anda akan memerlukan pemahaman mendasar tentang TCP / IP, OS host Anda, Aplikasi WebServer Anda, dan beberapa pemahaman tentang menjalankan tumpukan aplikasi.

Bersiaplah untuk membaca. Banyak .

Identifikasi kebutuhan Anda:

Persyaratan

  • Apakah Anda menjalankan situs web biasa dan statis (mungkin dengan beberapa efek Javascript), atau
  • (lebih mungkin) apakah Anda menjalankan aplikasi yang memiliki antarmuka web?
  • Apakah Anda memiliki data persisten? (Apakah Anda memerlukan database?)
  • Apakah ada kredensial pengguna yang terlibat? Apakah ada alasan lain bahwa Anda memerlukan koneksi antara pengguna dan situs web untuk diamankan? (SSL)
  • Apakah Anda menangani pembayaran dalam bentuk apa pun? Selain memiliki persyaratan SSL, ada pertimbangan tambahan yang perlu Anda teliti (tergantung wilayah). Ini juga akan bervariasi tergantung pada prosesor pembayaran yang Anda gunakan.

Identifikasi tumpukan Anda:

Bagaimana Anda akan menulis dan menjalankan ini?

  • Platform (Windows, Linux, Unix lainnya, dll)
  • Persyaratan aplikasi (Ruby / Rails, Python, Perl, PHP, .NET, dll, dll)
  • Basis data (...)
  • Caching? (Jujur, jangan khawatir tentang ini sekarang; sadarilah bahwa ini memecahkan beberapa masalah, dan dapat membuat yang lain. Ini adalah masalah kinerja, dan saat ini Anda hanya mencoba untuk memulai.)

Beberapa dari pilihan ini akan memberi tahu orang lain. Misalnya, Jika Anda menjalankan aplikasi .NET, Anda mungkin ingin menggunakan MSSQL dan IIS; Jika Anda menjalankan Ruby on Rails, Anda mungkin menginginkan server Linux; dll ...

Kenali Produk Anda:

Sekarang setelah Anda memutuskan akan terlihat seperti apa tumpukan Anda, Anda perlu mengetahuinya. Di sinilah Anda harus menghabiskan sebagian besar waktu Anda. Mencari "Konfigurasi [produk]" atau "Panduan Admin [produk]" akan memberi Anda banyak sumber daya.

Misalnya, jika Anda menjalankan Apache di Ubuntu, Anda harus benar-benar membaca:

Cari dokumen, artikel, posting blog serupa untuk tumpukan Anda.

Instal minimal:

Ada banyak sekali modul untuk Apache, tetapi jika Anda tidak akan menggunakan PHP (misalnya), jangan instal mod-php.

Ini juga harus dinyatakan di sini bahwa Anda harus menghindari menginstal GUI jika itu server Linux; GUI menghabiskan sejumlah besar sumber daya sistem.

Mengamankan situs:

  • Pastikan izin minimal berfungsi. Ini tidak hanya berlaku untuk sistem file, tetapi juga untuk layanan dan proses
  • Biarkan port server dinonaktifkan untuk layanan yang tidak dibutuhkan. (Sekali lagi, hanya instal minimum.)
  • Batasi antarmuka aplikasi ke lingkungan internal (jika, misalnya, menjalankan aplikasi web pada server yang sama (seperti Rails), batasi hanya untuk mendengarkan localhost)

Dalam Penutupan:

Ini hanyalah awal dari apa yang harus Anda lakukan untuk menjalankan dan menjalankan situs. Ini bahkan tidak mulai menyentuh masalah memelihara server atau bagaimana menangani masalah penskalaan (jika proyek Anda menjadi sukses), atau masalah segudang lainnya yang akan dipecahkan oleh SysAd yang berpengetahuan luas untuk Anda.

gWaldo
sumber
Menjalankan standar minimal itu penting, tetapi mungkin tidak jelas apa / bagaimana cara menghapus / menonaktifkan / melindungi. Apakah dapat diterima untuk menyarankan menjalankan barebone, mesin yang benar-benar di-firewall untuk umum yang hanya meneruskan / mem-proksi permintaan khusus ke server aplikasi mereka yang berjalan di jaringan pribadi? Bahkan mungkin untuk menyarankan distro / konfigurasi untuk itu karena tidak perlu lingkungan yang sama dengan yang digunakan aplikasi mereka.
Carlos Lima
1
Itu awal yang baik. Satu hal yang tidak Anda bahas adalah kemampuan pengulangan. Pada titik tertentu Anda akan tumbuh melampaui pengaturan saat ini. Apakah arahan Anda untuk mengatur lingkungan dapat diulang? Lebih baik lagi, apakah itu otomatis? Apakah Anda menyimpan semua paket sumber sehingga Anda dapat membuat ulang lingkungan, atau Anda mengandalkan repositori eksternal? Bagaimana Anda tahu kapan saatnya untuk meningkatkan? Apakah Anda melacak metrik yang tepat? Bagaimana Anda melaporkannya?
toppledwagon
@toppledwagon Itu semua adalah poin bagus, tapi saya berbicara dengan kursus 101. Semua yang Anda sebutkan (konsistensi / konfigurasi mgt, penskalaan, pemantauan / metrik, dll.) Saya merasa datang kemudian. Dan jujur, saya lebih suka merekomendasikan System Pro daripada mempelajari bidang-bidang tersebut.
gWaldo
3
@toppledwagon Setelah Anda mencapai titik itu, Anda memerlukan sysadmin. Atau setidaknya Sysadmin-as-a-Service.
Michael Hampton