Je voudrais partager quelques impressions sur la nĂ©cessitĂ© ou l'inutilitĂ© d'un panneau de contrĂŽle pour un projet Web commercial Ă serveur unique avec un administrateur Ă temps trĂšs partiel. L'histoire a commencĂ© il y a quelques annĂ©es, lorsque des amis d'amis m'ont demandĂ© de les accompagner dans l'achat d'une entreprise - un site d'information - d'un point de vue technique. Il Ă©tait nĂ©cessaire d'approfondir un peu ce qui fonctionnait sur quoi, de s'assurer que tous les dĂ©tails nĂ©cessaires Ă©taient transfĂ©rĂ©s sous la forme et le volume appropriĂ©s et de dĂ©terminer stratĂ©giquement ce qui pouvait ĂȘtre amĂ©liorĂ©.
L'affaire était conclue, le violoniste n'était plus nécessaire. Fin. Pas vraiment.
Le site fonctionnait sur une machine virtuelle bicĆur de 4 Go hĂ©bergĂ©e sur Linode, sur un serveur assez moussu. DebianUn serveur 5 avec 400 jours de disponibilitĂ© et une trĂšs longue liste de paquets non mis Ă jour. La partie web utilise un CMS personnalisĂ©, nginx, PHP 5.3 FPM et une base de donnĂ©es MySQL Percona optimisĂ©e. Globalement, ça fonctionnait.
ParallÚlement aux conversations avec moi, le nouveau propriétaire recherchait un programmeur pour mener le projet à la hauteur des attentes. Trouvé. Le programmeur a évalué le trafic et les volumes et a décidé qu'il savait comment optimiser et gérer les coûts. Il a migré l'intégralité du site vers un hébergement mutualisé à 700 roubles géré par son IS****er habituel. Quelques jours plus tard, un autre appel du propriétaire : « tout est lent et il semble que nous soyons en panne ». J'ai essayé de corriger la situation via le panneau, mais aprÚs un certain temps de tentatives infructueuses pour changer la version ou le gestionnaire PHP de fcgi en fpm, j'ai abandonné et suis entré dans le shell. Là , j'ai trouvé un débogage activé qui brillait sur tout Internet avec le mot de passe du muscle, 777 sur certains dossiers qui, à ce moment-là , craquaient avec des logiciels malveillants et des absurdités similaires. Le propriétaire s'est rendu compte et a décidé qu'il n'était pas bon d'économiser sur l'hébergement, un programmeur et un administrateur capable de surveiller l'évolution des choses.
Nous allons au RuVDS. Un peu plus proche que le British Linode, et si du coup vous souhaitez stocker des donnĂ©es personnelles et tout ça, vous nâaurez pas Ă vous dĂ©placer ailleurs. Comme il Ă©tait prĂ©vu d'Ă©tendre le projet, nous avons pris une VM pour la croissance : 4 cĆurs, 8 Go de mĂ©moire, 80 Go de disque. Ce nâest pas que je ne sais pas comment configurer manuellement les configurations nginx, je nâai tout simplement pas eu lâenthousiasme de travailler si intimement sur ce projet (voir ci-dessus Ă propos du temps partiel). C'est pourquoi j'ai installĂ© Plesk (ici j'omettrai les dĂ©tails d'installation, car dans l'ensemble il n'y en a pas : j'ai lancĂ© le programme d'installation, dĂ©fini le mot de passe de l'administrateur, entrĂ© la clĂ© - c'est tout), Ă cette Ă©poque c'Ă©tait 17.0. Les paramĂštres de base fonctionnent assez bien, il existe fail2ban et les derniĂšres versions disponibles de PHP et nginx.
Cela vaut probablement la peine de sâarrĂȘter et dâexpliquer pourquoi. Comme je fais rarement de telles choses et que je n'ai pas d'outils spĂ©ciaux ni d'ensemble de prĂ©parations pour chaque cas, il Ă©tait clair qu'une sorte d'automatisation des choses de base Ă©tait nĂ©cessaire, afin que premiĂšrement, rapidement, deuxiĂšmement, en toute sĂ©curitĂ© et troisiĂšmement , toutes les bonnes pratiques quelqu'un l'a dĂ©jĂ mis en Ćuvre.
Alors, je l'ai installĂ©. J'ai gagnĂ© beaucoup de temps, le redĂ©marrage du site sur un nouveau serveur a Ă©tĂ© quasi instantanĂ©. Il ne restait plus qu'Ă Ă©diter la configuration musculaire, en lui donnant la moitiĂ© de la mĂ©moire et en augmentant le nombre de pools de tampons, et Ă donner Ă nginx la moitiĂ© des cĆurs (Plesk ne touche pas aux configurations globales), et pendant quelques jours, allez dans le shell pour regarder aux statistiques de mysqltuner. Oui, et j'ai achetĂ© ImunifyAV payant dans le catalogue d'extensions pour me dĂ©barrasser des logiciels malveillants inondĂ©s. Quelque 11000 XNUMX fichiers infectĂ©s ont Ă©tĂ© dĂ©tectĂ©s. L'abomination est que des morceaux de code obscurcis ont Ă©tĂ© versĂ©s dans les statiques, et les nettoyer Ă la main aurait Ă©tĂ© complĂštement ennuyeux. Jâai dâabord essayĂ© ClamAV, mais il sâest avĂ©rĂ© que cela ne prend pas de telles choses, mais ImunifyAV le pourrait. De plus, les fichiers dĂ©sinfectĂ©s restent en Ă©tat de fonctionnement ; la partie contenant le malware est simplement supprimĂ©e.
Le calcul est simple : 50 $ par mois pour VMka, 10 $ pour Plesk (en fait moins, car vous l'avez acheté pour un an d'un coup avec une remise de deux mois) et 3 $ pour l'antivirus. Ou beaucoup d'argent pour mon temps, que j'aurais d'abord dépensé sur le serveur, en ratissant ces écuries manuellement. Le propriétaire était trÚs satisfait de cet arrangement.

Entre-temps, ils ont trouvé un nouveau programmeur. Nous nous sommes mis d'accord avec lui sur la répartition des responsabilités, avons créé un sous-domaine pour la version test et le travail a commencé. Il était en train de créer une nouvelle version du site sur Laravel, et je regardais fail2ban%).

Fait intĂ©ressant, le flux de curieux ne s'arrĂȘte pas et il y a toujours une centaine d'adresses sur la liste des adresses interdites. L'effet est intĂ©ressant : en particulier, gĂ©nĂ©ralement, si je me connecte Ă un shell, je vois environ 20000 30000 Ă 2 70 tentatives infructueuses de connexion via SSH au message d'accueil. Avec fail0ban activĂ©, environ 2. Efforts investis : XNUMX. Malheureusement, cela nâa pas Ă©tĂ© sans une goutte de pommade. Par dĂ©faut, WAF (modsecurity) Ă©tait Ă moitiĂ© activĂ© : en mode dĂ©couverte. Autrement dit, il a Ă©crit une activitĂ© suspecte dans le journal, mais nâa en rĂ©alitĂ© pris aucune mesure. Et failXNUMXban a lu sans discernement tous les journaux, selon les prisons activĂ©es, et a tuĂ© tout ce qui bougeait. Ainsi, nous avons banni la moitiĂ© des rĂ©dacteurs :D. J'ai dĂ» dĂ©sactiver cette prison et mettre sur liste blanche les adresses IP nĂ©cessaires pour des raisons de fiabilitĂ©. Des efforts sont investis : poussez deux fois la souris et apprenez aux Ă©diteurs Ă vous indiquer votre adresse IP.

Ce que le programmeur a immédiatement apprécié, c'est la possibilité de télécharger des bases de données directement dans le panneau et un accÚs rapide à phpMyAdmin.

Ce que j'ai aimĂ©, ce sont les journaux et les sauvegardes. Les journaux sont Ă©crits et tournĂ©s hors de la boĂźte ; Les sauvegardes sont trĂšs simples Ă mettre en place. Aux moments les plus lents, une sauvegarde complĂšte est effectuĂ©e, environ 10 Go, puis chaque jour une sauvegarde incrĂ©mentielle, de 200 Mo chacune, pendant une semaine. La rĂ©cupĂ©ration est granulaire, jusqu'Ă un fichier ou une base de donnĂ©es spĂ©cifique. Si vous avez besoin d'une restauration Ă partir d'une restauration incrĂ©mentielle, vous n'avez pas besoin de vous soucier d'abord d'une restauration complĂšte et complĂšte de la chaĂźne entiĂšre, Plesk fait tout lui-mĂȘme. Vous pouvez tĂ©lĂ©charger des sauvegardes n'importe oĂč : sur FTP, Dropbox, S3 Bucket, Google Drive, etc.

Jour F : le programmeur a finalement terminé le nouveau moteur, nous l'avons téléchargé en production, importé d'anciennes données et nous nous sommes assis pour choisir la couleur de notre future Maserati. Nous sommes toujours assis et choisissons.
Les premiers problĂšmes ont commencĂ©. Le nouveau site Ă©tait censĂ© ĂȘtre plus lourd que l'ancien, mais le vĂ©ritable avantage Ă©tait que, pour attirer du trafic, ils utilisaient, entre autres, Yandex.Zen, qui attirait de nombreux visiteurs. Le site crashait avec 150 connexions simultanĂ©es (je ne parle pas du RPS, car ils ne lâont pas mesurĂ©). Nous avons commencĂ© Ă appuyer sur les boutons et Ă les tourner dans la zone des paramĂštres de php_fpm :

HĂ©, il a dĂ©jĂ 500 connexions. Ă mesure que les cartes de crĂ©dit ont Ă©tĂ© ajoutĂ©es aux moyens de promotion, les vagues de trafic sont devenues plus importantes. La prochaine Ă©tape est celle des 1000 XNUMX connexions simultanĂ©es. Ici, nous avons dĂ» retoucher le code et examiner l'Ăąme du muscle. Les Ă©claboussures nâont pas aidĂ©, mais nous ne nous y attendions pas vraiment. Nous avons activĂ© le journal des requĂȘtes lentes, ajoutĂ© des index Ă la base de donnĂ©es, supprimĂ© les requĂȘtes inutiles du code et nettoyĂ© Ă nouveau la configuration mysql selon les conseils de mysqltuner.
Nouveau dĂ©fi - 2000 connexions. La version de Plesk 17.8 vient de sortir, dans laquelle, entre autres, la mise en cache nginx a Ă©tĂ© ajoutĂ©e. Mis Ă jour (Ă©tonnamment facile). Essayons. Travaux! Et puis ils ont marchĂ© du cĂŽtĂ© doux, le flux Yandex.Zen a cessĂ© de fonctionner. Le site fonctionne, le flux ne fonctionne pas. Le flux ne fonctionne pas, il n'y a pas de trafic. LâatmosphĂšre se rĂ©chauffe. Sous la pression des circonstances et par manque d'imagination, je me suis immĂ©diatement rendu chez strace et nginx et j'ai trouvĂ© ce que je cherchais. Il s'avĂšre qu'Ă un moment donnĂ©, Nginx stupide a mis en cache la 500Ăšme erreur parasite en rĂ©ponse Ă Yandex get feed.xml. Correction du problĂšme en ajoutant des exceptions aux paramĂštres du cache :

Il est clair que le propriétaire a besoin de PLUS, les vagues augmentent lentement. Nous nous en sortons pour l'instant, mais nous avons commencé à expérimenter Memcached à l'avance, heureusement, Laravel le prend en charge presque immédiatement. D'une maniÚre ou d'une autre, je ne voulais pas installer memcached manuellement juste pour « jouer », alors j'ai installé une image Docker. Directement depuis le panneau.

Bon, d'accord, je mens, j'ai dĂ» aller dans le shell et installer le module via pecl. Directement sur . Il n'y a encore rien Ă dire sur l'augmentation du dĂ©bit, il n'y a pas eu d'afflux suffisamment importants. Le moteur du site est connectĂ© Ă localhost:11211, les statistiques sont affichĂ©es, la mĂ©moire est consommĂ©e. Si vous lâaimez, nous verrons quoi faire ensuite. Soit nous le laisserons ainsi, soit nous placerons le « vrai » directement dans lâAxe. Ou essayons Redis de la mĂȘme maniĂšre
Ensuite, il a fallu joindre une liste de diffusion. Pas de relais, seulement une authentification SMTP. J'ai créé une adresse postale et j'utilise ses coordonnées pour envoyer une newsletter via PHP.

Il n'y a pas si longtemps, Plesk Obsidian (18.0) est sorti, nous avons mis Ă jour sans crainte en nous basant sur l'expĂ©rience passĂ©e. Tout sâest trĂšs bien passĂ©, il nây a mĂȘme pas de quoi parler. Ce qui est agrĂ©able, c'est que la qualitĂ© de l'interface s'est grandement amĂ©liorĂ©e, elle est devenue plus moderne et est devenue plus pratique Ă certains endroits. Chose cool, surveillance avancĂ©e sur Grafana.

Je ne lâai pas encore traitĂ© en dĂ©tail, mais vous pouvez par exemple paramĂ©trer des alertes pour nâimporte quel paramĂštre de votre email. Au propriĂ©taire, mdr.
Pendant que je parle de lâinterface, elle est rĂ©active et fonctionne trĂšs bien sur le tĂ©lĂ©phone. Au dĂ©but, alors que nous essayions de trouver les paramĂštres optimaux pour PHP et dâautres choses, cela nous a beaucoup aidĂ©. Et surtout quand un programmeur, dans un accĂšs d'enthousiasme au travail, fait quelque chose Ă 23hXNUMX, et que moi, dans un accĂšs d'enthousiasme au travail, je bois de la vodka dans les bains publics, et j'ai besoin d'URGENCE de changer quelque chose.

Oh au fait. L'image montre que PHP Composer est apparu. Nous n'avons pas encore jouĂ© avec, mais, disons, pour Laravel, cela peut Ă©conomiser quelques connexions shell et du temps pour l'installation des dĂ©pendances. Le mĂȘme systĂšme existe pour Node.JS et Ruby.
Avec SSL, tout est simple. Si le domaine se rĂ©sout comme prĂ©vu, Let's Encrypt se fait en un clic puis se met Ă jour, Ă la fois pour le domaine lui-mĂȘme, pour les sous-domaines et mĂȘme pour les services de messagerie.

Plesk lui-mĂȘme en tant que logiciel est actuellement assez agrĂ©able et stable. Il se met Ă jour lui-mĂȘme et l'Axis en silence, consomme peu de ressources et fonctionne sans problĂšme. Je ne me souviens mĂȘme pas dâavoir marchĂ© quelque part sur quelque chose, ce qui aurait Ă©tĂ© un dĂ©faut Ă©vident du produit. Il y a eu des problĂšmes, bien sĂ»r, mais ils Ă©taient soit dus Ă une configuration imparfaite, soit quelque part au niveau de la jonction, donc il nây a rien Ă redire. Les impressions de travailler avec Plesk sont gĂ©nĂ©ralement agrĂ©ables. Ce quâil nâa pas, et nous devons le comprendre, câest un (nâimporte quel) clustering. Ni LB ni HA. Vous pouvez essayer, mais lâeffort nĂ©cessaire sera tel quâil vaut mieux faire les choses diffĂ©remment dĂšs le dĂ©but.
Je pense que nous pouvons le rĂ©sumer. Pour le cas oĂč il n'y a pas d'administrateur, ou il n'y en a pas assez, lorsque le prix de l'hĂ©bergement et du ou des sites qui y tournent dĂ©passe, disons, 100 USD, quand on ne parle pas de partage bestial de 1500 sites sur un serveur, lorsque le dĂ©cideur est confrontĂ© Ă Si vous avez le choix d'embaucher un administrateur Ă temps partiel, ou d'acheter un logiciel et d'avoir un administrateur pour un demi-dollar, ou de ne pas en avoir du tout - cela a tout Ă fait du sens. Du point de vue de l'administrateur distant, c'est la mĂȘme chose. 10 $ par mois, permet de gagner du temps et offre une flexibilitĂ© de travail pendant trĂšs longtempsĐŸun montant plus important. Si par exemple on me demande fortement de prendre sous mon aile un projet similaire, jâinsisterai pour le transfĂ©rer chez Plesk.
Source: habr.com
