La mia esperienza con Plesk

Voglio condividere alcune impressioni sull'utilità o meno di un pannello di controllo per un progetto web commerciale su un singolo server, considerando che l'amministratore lavora part-time. La storia è iniziata un paio di anni fa, quando conoscenti di amici mi hanno chiesto di supportare l'acquisto di un'attività - un sito di notizie - dal punto di vista tecnico. Era necessario comprendere brevemente cosa stesse funzionando, assicurarsi che tutti i requisiti necessari fossero trasmessi in modo adeguato e strategicamente considerare cosa potesse essere migliorato.

La mia esperienza con Plesk
L'affare si è concluso, il violinista non era più necessario. Fine. In realtà no.

Il sito girava su una VM dual-core da 4 GB su Linode, con una qualche versione obsoleta di Debian5, con un uptime di 400 giorni e un elenco di pacchetti non aggiornati. Parte web su un CMS personalizzato, nginx, php5.3 FPM, mysql ottimizzata con Percona. In linea di massima, funzionava.

Parallelamente alle conversazioni con me, il nuovo proprietario cercava un programmatore per adattare il progetto alle proprie aspettative. L'ha trovato. Il programmatore ha valutato il traffico e i volumi e ha deciso che era in grado di occuparsi di ottimizzazione e gestione dei costi. Ha migrato l'intero sito su un hosting condiviso da 700 rubli, gestito dal suo IS****er di fiducia. Dopo pochi giorni, ricevo una nuova chiamata dal proprietario: "tutto rallenta e sembra che ci abbiano attaccato". Ho cercato di risolvere la situazione tramite il pannello, ma dopo un po' di tentativi infruttuosi di cambiare la versione di PHP o il gestore da fcgi a fpm, ho gettato la spugna e sono entrato nella shell. Lì ho trovato il debug attivo, che esponeva pubblicamente la password di MySQL, 777 su alcune cartelle, che nel frattempo erano già compromesse da malware e altre cose del genere. Il proprietario si è reso conto che risparmiare su hosting, programmatore e un amministratore che potesse dare un'occhiata a come andavano le cose era sbagliato.

Andiamo su RuVDS. Un po' più vicino rispetto alla britannica Linode, e se mai si decidesse di conservare dati personali e tutto il resto, non sarà più necessario spostarsi altrove. Poiché il progetto prevedeva un'espansione, abbiamo preso una VM "in crescita": 4 core, 8 GB di RAM, 80 GB di disco. Non che non sappia configurare nginx a mano, semplicemente non avevo entusiasmo per gestire questo progetto in modo così intimo (vedi sopra riguardo al part time). Così, ho installato Plesk (qui tralascio i dettagli dell'installazione, perché di fatto non ce ne sono: ho eseguito l'installer, ho impostato una password per l'amministratore, ho inserito la chiave – tutto qui), all'epoca era la versione 17.0. Le impostazioni di base funzionano accettabilmente da subito, c'è fail2ban e le ultime versioni disponibili di PHP e nginx. 

Forse è il caso di fermarsi e spiegare perché lui. Poiché non mi occupo di queste cose di frequente, e non ho alcun strumento o insieme di modelli per ogni evenienza, era evidente che era necessaria un'automazione di base, per poter agire prima di tutto rapidamente, poi in sicurezza, e infine per garantire che qualcuno avesse già implementato tutte le best practices.

Quindi, ho installato. Ho risparmiato un sacco di tempo, il riavvio del sito sul nuovo server è stato praticamente istantaneo. Restava da sistemare il file di configurazione di MySQL, dando alla macchina metà della memoria e aumentando il numero di buffer pools, e assegnare a nginx metà dei core (Plesk non tocca i file di configurazione globali), e nel giro di un paio di giorni ho controllato la shell per esaminare le statistiche di mysqltuner. Ah, e ho acquistato un abbonamento a pagamento per ImunifyAV dall'elenco delle estensioni, per liberarmi del malware caricato. Sono stati trovati circa 11.000 file infetti. La cosa disgustosa è che nel codice statico si erano infiltrati pezzi offuscati, e pulirlo manualmente sarebbe stato davvero deprimente. Inizialmente ho provato ClamAV, ma si è rivelato incapace di gestire queste cose, mentre ImunifyAV ha funzionato. Inoltre, i file riparati rimangono operativi, basta rimuovere la parte con il malware.

La matematica è semplice: 50$ al mese per la VM, 10$ per Plesk (in realtà meno, perché è stato acquistato per un anno con due mesi di sconto) e 3$ per l'antivirus. Oppure molti soldi per il tempo che avrei speso sul server nei primi tempi a sistemare manualmente questi problemi. Il proprietario è rimasto soddisfatto di questo accordo.

La mia esperienza con Plesk
Nel frattempo, abbiamo trovato un nuovo programmatore. Abbiamo concordato la suddivisione delle responsabilità, creato un sotto dominio per la versione di prova e il lavoro è iniziato. Lavorava alla nuova versione del sito su Laravel, mentre io monitoravo fail2ban%).

La mia esperienza con Plesk
È interessante notare che il flusso di curiosi non si interrompe mai e nella lista dei bloccati ci sono sempre circa cento indirizzi. L'effetto è curioso: in particolare, di solito, quando accedo alla shell, vedo circa 20000-30000 tentativi falliti di accesso via SSH. Con fail2ban attivato, ce ne sono circa 70. Sforzi profusi: 0. Sfortunatamente, non è mancata una nota negativa. Per impostazione predefinita, WAF (modsecurity) era "mezzo attivato": in modalità di rilevamento. Cioè, registrava attività sospette nei log, ma di fatto non intraprendeva alcuna azione. E fail2ban leggeva senza discernimento tutti i log, secondo le jails attivate, bloccando tutto ciò che si muoveva. Così abbiamo bloccato metà della redazione :D. Abbiamo dovuto disattivare questa jail e per sicurezza aggiungere gli indirizzi IP necessari alla lista bianca. Sforzi impiegati: due click del mouse e insegnare ai redattori a dire il proprio indirizzo IP.

La mia esperienza con Plesk
Ciò che è subito piaciuto al programmatore è stata la possibilità di caricare i database direttamente dal pannello e l'accesso rapido a phpMyAdmin.

La mia esperienza con Plesk
Ciò che mi ha colpito sono i log e i backup. I log vengono registrati e ruotati automaticamente; i backup sono molto facili da configurare. Nei momenti più tranquilli viene effettuato un backup completo, di circa 10 gigabyte, e poi ogni giorno un backup incrementale, di circa 200 megabyte, per una settimana. Il ripristino è granulare, fino ai singoli file o database. Se è necessario ripristinare da un incremento, non è necessario affrontare prima il backup completo e il ripristino dell'intera catena, Plesk fa tutto da solo. È possibile caricare i backup ovunque: su FTP, Dropbox, S3 bucket, Google Drive e altro.

La mia esperienza con Plesk
Giorno X: il programmatore ha finalmente terminato il nuovo motore, l'abbiamo caricato nella produzione, importato i dati vecchi e ci siamo messi a scegliere il colore delle nostre future Maserati. Siamo ancora in fase di scelta.

Sono iniziati i primi problemi. Il nuovo sito era prevedibilmente più pesante del vecchio, ma la vera seccatura è stata che per attrarre traffico si utilizzava tra l'altro Yandex.Zen, che portava visitatori a grappoli. Il sito crollava con 150 connessioni contemporanee (non parlo di RPS perché non abbiamo misurato). Abbiamo iniziato a premere tasti e girare manopole nell'area delle impostazioni di php_fpm:
 
La mia esperienza con Plesk
Oh, già ha 500 connessioni. Man mano che la carta di credito veniva applicata ai fondi di promozione, il flusso di traffico è aumentato. Il prossimo traguardo è 1000 connessioni simultanee. Qui abbiamo dovuto rifinire il codice e guardare dentro l'anima del muscolo. L'input in questo non ha aiutato, ma non ci aspettavamo molto. Abbiamo attivato il registro delle query lente, aggiunto indici al database, rimosso richieste superflue dal codice e rifinito ancora una volta la configurazione di MySQL secondo i consigli di mysqltuner.

Nuova sfida - 2000 connessioni. Proprio ora è uscita la versione Plesk 17.8, nella quale oltre a tutto hanno integrato la cache di nginx. Ci siamo aggiornati (sorprendentemente senza alcun problema). Proviamo. Funziona! E subito dopo abbiamo riscontrato un problema: ha smesso di funzionare il feed di Yandex.Zen. Il sito funziona, ma il feed non funziona. Se il feed non funziona, non c'è traffico. L'atmosfera si sta surriscaldando. Sotto la pressione delle circostanze e per mancanza di fantasia, ho immediatamente iniziato a tracciare nginx e ho trovato quello che cercavo. A quanto pare, a un certo punto, il mio stupidissimo nginx ha memorizzato nella cache un errore 500 occasionale come risposta alla richiesta feed.xml di Yandex. Abbiamo risolto il problema aggiungendo eccezioni nelle impostazioni della cache:

La mia esperienza con Plesk
È ovvio che il proprietario ha bisogno di ALTRO, le onde stanno aumentando lentamente. Finora ci stiamo adattando, ma abbiamo iniziato a sperimentare con memcached, per fortuna Laravel lo supporta quasi out of the box. Installare memcached manualmente per «giocarci» non era una cosa che desideravamo fare, quindi abbiamo utilizzato un'immagine Docker. Direttamente dalla dashboard.

La mia esperienza con Plesk
Va bene, lo ammetto, ho dovuto entrare nel terminale e installare il modulo tramite pecl. Proprio da guida. Non ho ancora molto da dire riguardo l'aumento della larghezza di banda, non ci sono stati afflussi significativi. Il motore del sito si è collegato a localhost:11211, le statistiche vengono visualizzate, la memoria viene utilizzata. Se ci piace, vedremo cosa fare dopo. O lo lasciamo così com'è, oppure installiamo un "vero" direttamente sull'OS. O proviamo a usare redis in modo simile.

Poi è venuta l'esigenza di aggiungere un servizio di posta. Niente relay, solo autenticazione smtp. Ho creato un indirizzo e-mail e tramite i suoi dati facciamo le mailing con PHP.

La mia esperienza con Plesk
Non molto tempo fa è uscita la versione Plesk Obsidian (18.0), ci siamo aggiornati senza paura basandoci sulla nostra esperienza precedente. Tutto è andato molto liscio, nemmeno su questo ho molto da dire. Una nota positiva è che l'interfaccia è notevolmente migliorata, è diventata più moderna e in alcuni aspetti è più comoda. Una cosa interessante è il Monitoring Avanzato su Grafana.

La mia esperienza con Plesk
Al momento non ci ho ancora approfondito, ma si possono, ad esempio, impostare avvisi su qualsiasi parametro tramite email. Al proprietario, lol.

Dato che parlo dell'interfaccia, è reattiva e funziona davvero bene sul telefono. Nelle fasi iniziali, mentre cercavamo di trovare le impostazioni ottimali di PHP e altro, ci ha salvati. Soprattutto quando il programmatore, in un momento di entusiasmo lavorativo, fa qualcosa alle 23 e io, anch'io entusiasta, bevo vodka in sauna, e URGENTEMENTE devo cambiare qualcosa.

La mia esperienza con Plesk
Oh, a proposito. Nell'immagine si vede che è apparso PHP Composer. Non ci abbiamo ancora giocato, ma, per esempio, per lo stesso Laravel può far risparmiare un paio di login nel terminale e un po' di tempo per l'installazione delle dipendenze. Esiste un sistema simile per Node.JS e Ruby.

Con SSL è tutto molto semplice. Se il dominio si risolve dove deve, Let’s Encrypt si fa con un clic e si aggiorna da solo, sia per il dominio principale che per i sottodomini, e persino per i servizi di posta.

La mia esperienza con Plesk
Plesk, al momento, è un software piuttosto piacevole e stabile. Si aggiorna in automatico e in silenzio, consuma poche risorse, funziona bene. Non ricordo di aver mai riscontrato un difetto evidente del prodotto. Certo, ci sono stati problemi, ma erano o dovuti a configurazioni imperfette, o a discrepanze, quindi non posso lamentarmi. L'impressione generale del lavoro con Plesk è positiva. Quello che non ha, e bisogna capirlo, è qualsiasi tipo di clustering. Nè LB, nè HA. Puoi provare, ma ci vorranno così tanti sforzi che è meglio fare qualcosa di diverso fin dall'inizio.

Penso si possa riassumere. Per il caso in cui non ci sia un amministratore, o sia presente in piccola misura, quando il costo dell'hosting e del sito (o siti) in esso supera, diciamo, 100€ quando non si tratta di un impoverito condiviso di 1500 siti su un server, quando chi deve prendere una decisione deve scegliere se assumere un amministratore part-time, oppure comprare software e assumere un amministratore per "mezzo soldo", oppure non assumerlo affatto - ha senz'altro senso. Dal punto di vista di un amministratore remoto, è lo stesso. 10$ al mese, e si risparmia tempo e si guadagna flessibilità sul lavoro per una cifra molto maggiore. Se, per esempio, mi chiedessero insistentemente di prendere un progetto simile sotto la mia ala, insisterei per fare il passaggio a Plesk.unVoglio condividere alcune impressioni sulla necessità o meno di un pannello di controllo per un progetto web commerciale su un singolo server, quando c'è un amministratore molto part-time.

La mia esperienza con Plesk

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster