Saya ingin berbagi beberapa kesan tentang perlunya atau tidak perlu hal seperti panel kontrol untuk proyek web server tunggal komersial dengan admin paruh waktu. Kisah ini dimulai beberapa tahun yang lalu ketika kenalan kenalan meminta saya untuk menemani pembelian bisnis - situs berita - dari sudut pandang teknis. Itu perlu untuk mendapatkan sedikit wawasan tentang apa yang sedang dikerjakan, memastikan bahwa semua detail yang diperlukan ditransfer dalam bentuk dan volume yang tepat, dan secara strategis mencari tahu apa yang bisa diperbaiki.
Kesepakatan itu terjadi, pemain biola tidak lagi diperlukan. Akhirnya Tidak juga.
Situs ini berputar pada dual-core VMk 4-gig pada Linode, pada beberapa Debian5 berlumut dengan uptime 400 hari dan daftar paket yang tidak diperbarui. Komponen web pada Samopisny TsMSke, nginx, php5.3 FPM, mysql disetel Percona. Pada prinsipnya, itu berhasil.
Sejalan dengan percakapan dengan saya, pemilik baru sedang mencari seorang programmer untuk membawa proyek ke harapan. Menemukannya Programmer mengevaluasi lalu lintas dan volume dan memutuskan bahwa ia dapat mengoptimalkan dan manajemen biaya. Dia memigrasi seluruh situs ke shared hosting 700 rubel di bawah kendali IS IS biasa. Beberapa hari kemudian, sekali lagi telepon dari pemilik: "semuanya melambat dan sepertinya kami rusak." Saya mencoba untuk memperbaiki situasi melalui panel, tetapi setelah beberapa waktu upaya sia-sia untuk mengubah versi PCP atau pawang dari fcgi ke fpm, menyerah dan naik ke shell. Di sana saya menemukan debug yang disertakan, yang bersinar di seluruh Internet dengan kata sandi dari otot, 777 pada beberapa folder yang, pada saat itu, retak dari banjir malvari dan permainan serupa. Pemiliknya menyadari dan memutuskan bahwa penghematan pada hosting, programmer, dan admin, yang akan melihat dengan mata mata bagaimana keadaannya, adalah salah.
Kita akan ke RuVDS. Sedikit lebih dekat daripada British Linode, dan jika Anda tiba-tiba ingin menyimpan data pribadi dan semua ini, Anda tidak perlu pindah ke tempat lain. Karena proyek ini direncanakan akan diperluas, mereka mengambil VMKU "untuk pertumbuhan": 4 core, 8 pertunjukan memori, 80 GB disk. Bukannya saya tidak tahu cara menggunakan konfigurasi nginx dengan tangan saya, saya hanya tidak memiliki antusiasme untuk melakukan proyek ini dengan sangat intim (lihat di atas tentang paruh waktu). Karena - taruh Plesk (di sini saya akan menghilangkan detail instalasi, karena pada umumnya mereka tidak ada di sana: Saya meluncurkan installer, mengatur kata sandi untuk admin, memasukkan kunci - segalanya), pada saat itu 17.0. Pengaturan dasar bekerja secara wajar di luar kotak, ada fail2ban dan versi terbaru yang tersedia dari PHP, nginx.
Mungkin layak untuk berhenti dan menjelaskan alasannya. Karena saya jarang melakukan hal-hal seperti itu, dan saya tidak punya alat khusus dan satu set kosong untuk setiap kasus, jelas bahwa beberapa jenis otomatisasi hal-hal dasar diperlukan, pertama, cepat, kedua aman, ketiga semua praktik terbaik seseorang telah diimplementasikan.
Jadi, atur. Dia menghemat waktu dengan sopan, memulai kembali situs di server baru ternyata hampir instan. Tetap untuk bermain-main dengan konfigurasi otot, memberinya setengah memori dan meningkatkan jumlah buffer pool, dan memberikan nginx setengah inti (Splash tidak menyentuh konfigurasi global), dan masuk ke shell selama beberapa hari untuk melihat statistik mysqltuner. Ya, dan saya membeli ImunifyAV berbayar dari katalog ekstensi untuk menghilangkan malvari yang banjir. Ada sesuatu yang terinfeksi 11.000 file. Kekejiannya adalah potongan kode yang membingungkan dituangkan ke statika, dan menyikatnya dengan tangan Anda akan benar-benar membosankan. Pada awalnya saya mencoba ClamAV, tetapi ternyata dia tidak mengambil hal-hal seperti itu, tetapi ImunifyAV bisa. Selain itu, file yang disembuhkan tetap dalam kondisi kerja, hanya sebagian dengan malware dihapus.
Hitungnya sederhana: $ 50 per bulan untuk VMKu, $ 10 untuk Splash (sebenarnya kurang, karena Anda langsung membelinya selama setahun dengan diskon dua bulan) dan $ 3 untuk antivirus. Atau banyak koper uang untuk waktu saya, yang akan saya habiskan di server pada awalnya, menyapu kandang ini secara manual. Pemilik cukup senang dengan keberpihakan ini.
Sementara itu, mereka menemukan programmer baru. Kami setuju dengannya tentang pembagian tanggung jawab, membuat subdomain untuk versi uji, dan pekerjaan dimulai. Dia menggergaji versi baru situs di Laravel, dan saya melihat fail2ban%).

Menariknya, aliran yang penasaran tidak berhenti, dan selalu ada sekitar seratus alamat dalam daftar yang terlarang. Efeknya menarik: khususnya, biasanya, ketika saya pergi ke shell, saya melihat sekitar 20.000-30000 upaya gagal untuk masuk melalui SSH pada sambutan tersebut. Dengan fail2ban dihidupkan, sekitar 70. Upaya investasi: 0. Sayangnya, ada setetes tar. Secara default, WAF (modsecurity) adalah "semi-enabled": dalam mode penemuan. Artinya, ia menulis aktivitas mencurigakan ke log, tetapi sebenarnya tidak mengambil tindakan. Dan fail2ban membabi buta membaca semua log, sesuai dengan penjara yang dimasukkan, dan membasahi segala sesuatu yang bergerak. Karena itu kami melarang setengah dari staf editorial: D. Saya harus menonaktifkan jail ini, dan memasukkan alamat IP yang diperlukan dalam daftar putih untuk keandalan. Upaya ini diinvestasikan: menyodok dua kali dengan mouse dan mengajar editor untuk mengatakan alamat IP mereka.

Apa yang langsung disukai programmer adalah kemampuan untuk mengunggah database secara langsung di panel dan akses cepat ke phpMyAdmin
Yang saya sukai - log dan cadangan. Log ditulis dan diputar sendiri di luar kotak; backup dikonfigurasi dengan sangat sederhana. Dalam waktu yang paling lamban, pencadangan penuh dilakukan, di suatu tempat di 10 gigs, dan kemudian setiap hari secara bertahap, 200 megabyte, selama seminggu. Pemulihan granular ke file atau database tertentu. Jika Anda perlu memulihkan dari inkremental, maka Anda tidak perlu menggeliat dulu dengan penuh dan memulihkan seluruh rantai, Splash melakukan semuanya sendiri. Anda dapat mengunggah cadangan di mana saja: di ftp, di dropbox, ember s3, google drive, dan banyak lagi.
Hari F: programmer akhirnya menyelesaikan mesin baru, kami menuangkannya ke dalam produk, mengimpor data lama dan duduk untuk memilih warna Maserati masa depan mereka. Kami masih memilih.
Masalah pertama dimulai. Situs baru itu diharapkan lebih berat daripada yang lama, tetapi menyapu yang sebenarnya adalah bahwa Yandex.Zen digunakan antara lain untuk menarik lalu lintas, yang diikuti oleh pengunjung dalam batch. Situs ini bengkok pada 150 koneksi simultan (saya tidak berbicara tentang RPS, karena saya tidak mengukurnya). Kami mulai menyodok tombol dan memutar tombol di area pengaturan php_fpm:
Op, sudah menampung 500 koneksi. Ketika kartu kredit diterapkan pada alat promosi, gelombang lalu lintas menjadi lebih besar. Tonggak berikutnya adalah 1000 koneksi bersamaan. Di sini saya harus menahan kode dan melihat otot di jiwaku. Percikan tidak membantu, tetapi mereka tidak benar-benar mengharapkannya. Mereka menyalakan log kueri lambat, menggantung indeks pada database, menghapus kueri yang tidak perlu dari kode, menyisir konfigurasi mysql sekali lagi atas saran mysqltuner.
Tantangan baru - 2000 koneksi. Baru saja berhasil merilis versi Plesk 17.8, di mana, di antaranya, mengacaukan caching nginx. Diperbarui (sangat mudah). Kami mencoba. Itu berhasil! Dan kemudian mereka melangkah dengan lembut, umpan Yandex.Zen berhenti bekerja. Situs berfungsi, umpan tidak bekerja. Umpan tidak bekerja, tidak ada lalu lintas. Suasana memanas. Di bawah tekanan keadaan dan kurangnya imajinasi, saya segera naik ke nginx dan menemukan apa yang saya cari. Ternyata pada titik tertentu, nginx yang bodoh men-cache kesalahan ke-500 dengan cepat sebagai tanggapan terhadap Yandex mendapatkan feed.xml. Diperbaiki dengan menambahkan pengecualian ke pengaturan cache:

Jelas bahwa pemilik membutuhkan MASIH, ombak perlahan meningkat. Sementara kami sedang mengatasinya, tetapi kami mulai bereksperimen dengan memcached terlebih dahulu, karena Laravel mendukungnya hampir di luar kotak. Saya entah bagaimana tidak ingin memcached dengan tangan saya untuk "bermain-main", jadi saya memasang gambar buruh pelabuhan. Langsung dari panel.
Ya, saya bohong, saya harus masuk ke shell dan meletakkan modul melalui pecl. Langsung sesuai
instruksi . Tidak ada yang bisa dikatakan tentang peningkatan throughput, tidak ada cukup banyak arus masuk. Mesin situs mengambil di localhost: 11211, statistik ditampilkan, ingatan sedang makan. Jika Anda suka, mari kita lihat apa yang harus dilakukan selanjutnya. Entah biarkan seperti itu atau letakkan hak "asli" di Axis. Atau coba redis dengan cara yang sama
Maka saya perlu melampirkan milis. Tidak ada relay, hanya otentikasi smtp. Saya mendapat alamat surat, melalui detailnya melalui PHP kami membuat buletin.
Belum lama berselang, Plesk Obsidian (18.0) keluar, diperbarui menurut pengalaman masa lalu tanpa rasa takut. Semuanya berjalan sangat lancar, tidak ada yang bisa dibicarakan. Dari yang menyenangkan - antarmuka telah sangat meningkat dalam kualitas, telah dimodernisasi sendiri dan menjadi lebih nyaman di beberapa tempat. Cool piece Advanced Monitoring pada Grafana.
Saya belum menemukan jawabannya, tetapi Anda dapat, misalnya, mengonfigurasi lansiran untuk parameter apa pun di email. Untuk pemiliknya, lol.
Karena saya berbicara tentang antarmuka, itu adaptif dan bekerja dengan sangat baik di telepon. Pada tahap awal, ketika kami mencoba menemukan pengaturan PHP yang optimal dan hal-hal lain, itu sangat membantu. Dan terutama ketika seorang programmer yang bekerja dengan antusiasme melakukan sesuatu pada pukul 23:00, dan saya minum vodka di bak mandi dalam semangat kerja yang penuh semangat, dan SANGAT perlu mengubah sesuatu.
Oh, omong-omong. Dalam gambar, PHP Composer muncul. Kami belum bermain dengannya, tetapi, katakanlah, untuk Laravel yang sama, ia dapat menyimpan beberapa login di shell dan beberapa waktu untuk menginstal dependensi. Sistem yang sama ada untuk Node.JS dan Ruby.
Dengan SSL, semuanya sederhana. Jika domain memutuskan di mana seharusnya, Let's Encrypt dilakukan dengan satu klik dan diperbarui lebih lanjut dengan sendirinya, baik pada domain itu sendiri, dan pada subdomain, dan bahkan layanan surat.
Plesk sendiri, sebagai perangkat lunak, saat ini cukup menyenangkan dan stabil. Pembaruan itu sendiri dan Axis sepi, menghabiskan beberapa sumber daya, berjalan lancar. Saya bahkan tidak ingat bahwa di suatu tempat saya menginjak sesuatu, yang jelas merupakan cacat pada produk. Tentu saja, ada masalah, tetapi mereka entah karena ketidaksempurnaan konfigurasi, atau di suatu tempat di persimpangan, jadi tidak ada yang perlu dikeluhkan. Tayangan bekerja dengan Splash umumnya menyenangkan. Apa yang hilang di dalamnya, dan orang harus memahami hal ini, adalah pengelompokan (apa saja). Baik LB maupun HA. Anda dapat mencoba, tetapi akan ada banyak upaya yang diinvestasikan sehingga lebih baik untuk melakukan sesuatu yang berbeda pada awalnya.
Saya pikir Anda bisa meringkas. Untuk kasus ketika tidak ada admin, atau itu tidak cukup, ketika harga hosting dan situs yang berputar melebihi itu, yah, katakanlah, 100 cu, ketika itu bukan tentang pembagian ternak 1.500 situs di server, ketika di depan pembuat keputusan sebaiknya memilih untuk menyewa paruh waktu administrator, atau untuk membeli perangkat lunak dan mendapatkan admin untuk "setengah-benjolan", atau tidak memulai sama sekali - itu jelas masuk akal. Dari sudut pandang administrator jarak jauh - hal yang sama. 10 $ per bulan, dan menghemat waktu dan memberikan fleksibilitas dalam pekerjaan untuk jumlah yang sangat besar. Jika, misalnya, saya sangat diminta untuk mengambil proyek serupa di bawah sayap, saya akan bersikeras transportasi ke Plesk.
