Mon expérience avec Plesk

Je veux partager quelques impressions sur la nécessité ou l'inutilité d'une telle chose comme un panneau de contrôle pour un projet Web commercial à serveur unique avec un administrateur à temps partiel. L'histoire a commencé il y a quelques années lorsque des connaissances de connaissances m'ont demandé d'accompagner l'achat d'une entreprise - un site d'actualités - d'un point de vue technique. Il était nécessaire de comprendre un peu ce qui fonctionnait, 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'accord a eu lieu, le violoniste n'était plus nécessaire. La fin. Pas vraiment.

Le site tournait sur un VMk dual-core 4-gig sur Linode, sur un Debian5 moussu avec une disponibilité de 400 jours et une telle liste de paquets non mis à jour. Partie Web sur Samopisny TsMSke, nginx, php5.3 FPM, mysql réglé Percona. En principe, cela a fonctionné.

Parallèlement aux conversations avec moi, le nouveau propriétaire recherchait un programmeur pour amener le projet à ses attentes. Je l'ai trouvé. Le programmeur a évalué le trafic et les volumes et a décidé qu'il était en mesure d'optimiser et de gérer les coûts. Il a migré l'ensemble du site vers un hébergement partagé de 700 roubles sous le contrôle de son habituel IS **** er. Quelques jours plus tard, encore un appel du propriétaire: "tout ralentit et il semble que nous soyons cassés". J'ai essayé de résoudre la situation via le panneau, mais après quelques tentatives infructueuses pour changer la version du PCP ou du gestionnaire de fcgi en fpm, j'ai abandonné et j'ai grimpé dans le shell. Là, j'ai trouvé le débogage inclus, qui brillait sur tout Internet avec un mot de passe d'un muscle, 777 sur certains dossiers qui, à ce moment-là, craquaient d'un flot de malvari et de jeux similaires. Le propriétaire s'est rendu compte et a décidé qu'il était mal d'économiser sur l'hébergement, le programmeur et l'administrateur, qui regarderaient d'un œil sur la façon dont les choses se passent.

Nous allons à RuVDS. Un peu plus proche que le Linode britannique, et si vous voulez soudainement stocker des données personnelles et tout cela, vous n'avez pas à vous déplacer ailleurs. Le projet devant être étendu, ils ont pris le VMKU "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 utiliser les configs nginx avec mes mains, je n'ai tout simplement pas eu l'enthousiasme pour faire ce projet si intimement (voir ci-dessus à propos du temps partiel). Parce que - mettez Plesk (ici, je vais omettre les détails d'installation, car ils ne sont généralement pas là: j'ai lancé l'installateur, défini le mot de passe de l'administrateur, entré la clé - tout), à l'époque c'était 17.0. Les paramètres de base fonctionnent raisonnablement hors de la boîte, il y a fail2ban et les dernières versions disponibles de PHP, nginx.

Il vaut probablement la peine de s'arrêter et d'expliquer pourquoi. Comme je fais rarement de telles choses, et je n'ai pas d'outils spéciaux et un ensemble de blancs pour chaque cas, il était clair qu'une sorte d'automatisation des choses de base était nécessaire, premièrement, rapidement, deuxièmement en toute sécurité, troisièmement toutes les meilleures pratiques quelqu'un a déjà mis en œuvre.

Alors, partez. Il a économisé du temps décemment, le redémarrage du site sur le nouveau serveur s'est avéré presque instantané. Il restait à jouer avec la configuration musculaire, en lui donnant la moitié de la mémoire et en augmentant le nombre de pools de tampons, et en donnant à nginx la moitié des cœurs (Splash ne touche pas aux configurations globales), et aller dans le shell pendant quelques jours pour consulter les statistiques de mysqltuner. Oui, et j'ai acheté un ImunifyAV payant dans le catalogue d'extension pour se débarrasser des malvari inondés. Il y avait quelque 11 000 fichiers infectés. L'abomination est que des morceaux de code obscurcis versés dans la statique, et le brosser avec vos mains seraient complètement ennuyeux. Au début, j'ai essayé ClamAV, mais il s'est avéré qu'il n'a pas pris de telles choses, mais ImunifyAV le pouvait. De plus, les fichiers durcis restent en état de marche, juste un morceau avec le malware est supprimé.

L'arithmétique est simple: 50 $ par mois pour VMKu, 10 $ pour Splash (en fait moins, car vous l'avez acheté immédiatement pendant un an avec une remise de deux mois) et 3 $ pour un antivirus. Ou beaucoup de valises d'argent pour mon temps, que je dépensais d'abord sur le serveur, ratissant manuellement ces écuries. Le propriétaire est très satisfait de cet alignement.


Pendant ce 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 de test et les travaux ont commencé. Il a vu une nouvelle version du site sur Laravel, et j'ai regardé fail2ban%).


Fait intéressant, le flux des curieux ne s'arrête pas, et il y a toujours une centaine d'adresses dans la liste des interdits. L'effet est intéressant: en particulier, généralement, lorsque je vais dans le shell, je vois environ 20000-30000 tentatives infructueuses pour entrer via SSH lors du message d'accueil. Avec fail2ban activé, environ 70. Effort investi: 0. Malheureusement, il y a eu une goutte de goudron. Par défaut, WAF (modsecurity) était «semi-activé»: en mode découverte. Autrement dit, il a écrit une activité suspecte dans le journal, mais n'a en fait pris aucune mesure. Et fail2ban a lu sans discernement tous les journaux, selon les prisons incluses, et a trempé tout ce qui bougeait. Nous avons ainsi banni la moitié de la rédaction: D. J'ai dû désactiver cette prison et mettre les adresses IP nécessaires dans la liste blanche pour plus de fiabilité. L'effort est investi: piquez deux fois avec la souris et apprenez aux rédacteurs à dire leur adresse IP.


Ce que le programmeur a immédiatement aimé, 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é - journaux et sauvegardes. Les journaux sont écrits et se tournent hors de la boîte; les sauvegardes sont configurées très simplement. Dans le temps le plus lent, une sauvegarde complète est effectuée, quelque part en 10 concerts, puis tous les jours en incrémental, 200 mégaoctets, pendant une semaine. Restauration granulaire vers un fichier ou une base de données spécifique. Si vous devez restaurer à partir d'incréments, vous n'avez pas besoin de vous tortiller d'abord avec le plein et le restaurateur de la chaîne entière, Splash fait tout lui-même. Vous pouvez télécharger des sauvegardes n'importe où: sur ftp, sur dropbox, s3 bucket, google drive, etc.


Jour F: le programmeur a finalement terminé le nouveau moteur, nous l'avons versé dans le produit, importé les anciennes données et nous sommes assis pour choisir la couleur de leur future Maserati. Nous choisissons toujours.

Les premiers problèmes ont commencé. Le nouveau site était censé être plus lourd que l'ancien, mais le véritable avantage était que Yandex.Zen était utilisé entre autres pour attirer du trafic, qui rattrapait les visiteurs par lots. Le site était plié à 150 connexions simultanées (je ne parle pas de RPS, car je ne l'ai pas mesuré). Nous avons commencé à pousser les boutons et les boutons rotatifs dans la zone des paramètres php_fpm:


Op, détient déjà 500 connexions. Au fur et à mesure que la carte de crédit est appliquée aux moyens de promotion, les vagues de trafic deviennent plus importantes. Le prochain jalon est de 1000 connexions simultanées. Ici, j'ai dû m'abstenir de coder et regarder le muscle de mon âme. Le splash n'a pas aidé, mais ils ne s'y attendaient pas vraiment. Ils ont activé le journal des requêtes lentes, suspendu les index sur la base de données, supprimé les requêtes inutiles du code, réexaminé la configuration mysql sur les conseils de mysqltuner.

Nouveau défi - 2000 connexions. Je viens de sortir la version Plesk 17.8, dans laquelle, entre autres, la mise en cache nginx vissée. Mise à jour (étonnamment facile). Nous essayons. Ça marche! Et puis ils sont entrés doucement, le flux Yandex.Zen a cessé de fonctionner. Le site fonctionne, le flux ne fonctionne pas. Le flux ne fonctionne pas, pas de trafic. L'atmosphère se réchauffe. Sous la pression des circonstances et le manque d'imagination, je suis immédiatement monté sur nginx et j'ai trouvé ce que je cherchais. Il s'avère qu'à un moment donné, le stupide nginx a mis en cache la 500e erreur à la volée en réponse au Yandex get feed.xml. Corrigé en ajoutant des exceptions aux paramètres de cache:


Il est clair que le propriétaire a toujours besoin, les vagues augmentent lentement. Pendant que nous traitons avec, mais nous avons commencé à expérimenter avec memcached à l'avance, car Laravel le prend en charge presque hors de la boîte. Je ne voulais pas, en quelque sorte, mettre le memcached avec mes mains pour "jouer", alors j'ai installé l'image de docker. Directement du panneau.


Eh bien, je mens, je devais aller dans le shell et mettre le module à travers pecl. Directement selon les instructions . Il n'y a rien à dire sur l'augmentation du débit, il n'y a pas eu suffisamment d'afflux importants. Le moteur du site a démarré sur localhost: 11211, les statistiques sont affichées, la mémoire est en train de manger. Si vous l'aimez, voyons quoi faire ensuite. Soit vous laissez les choses de cette façon, soit vous placez le «vrai» dans l'axe. Ou essayez redis de la même manière

Ensuite, je devais joindre une liste de diffusion. Pas de relais, juste une authentification smtp. J'ai obtenu une adresse postale, grâce à ses détails via PHP, nous faisons la newsletter.


Il n'y a pas si longtemps, Plesk Obsidian (18.0) est sorti, mis à jour en fonction de l'expérience passée sans crainte. Tout s'est très bien passé, il n'y a même rien à dire. De l'agréable - l'interface s'est considérablement améliorée en qualité, s'est modernisée et est devenue plus pratique à certains endroits. Cool Monitoring avancé sur Grafana.


Je ne l'ai pas encore compris, mais vous pouvez, par exemple, configurer des alertes pour n'importe quel paramètre dans l'e-mail. Au propriétaire, lol.

Puisque je parle de l'interface, elle est adaptative et fonctionne très bien au téléphone. Au début, alors que nous essayions de trouver les paramètres PHP optimaux et d'autres choses, cela a beaucoup aidé. Et surtout quand un programmeur enthousiaste au travail fait quelque chose à 23 heures, et que je bois de la vodka dans un bain avec un enthousiasme au travail, et que j'ai urgemment besoin de changer quelque chose.


Oh au fait. Dans l'image, PHP Composer est apparu. Nous n'avons pas encore joué avec lui, mais, disons, pour le même Laravel, il peut enregistrer quelques connexions dans le shell et un certain temps pour installer les dépendances. Le même système existe pour Node.JS et Ruby.

Avec SSL, tout est simple. Si le domaine résout où il devrait être, Let's Encrypt se fait en un seul clic et est mis à jour par lui-même, à la fois sur le domaine lui-même, sur les sous-domaines et même sur les services de messagerie.


Plesk lui-même, en tant que logiciel, est actuellement assez agréable et stable. Se met à jour et l'Axe est silencieux, consomme peu de ressources, fonctionne correctement. Je ne me souviens même pas que quelque part j'ai marché sur quelque chose, ce qui serait clairement un défaut du produit. Bien sûr, il y avait des problèmes, mais ils étaient soit dus à l'imperfection de la configuration, soit quelque part à la jonction, donc il n'y avait rien à redire. Les impressions de travailler avec Splash sont généralement agréables. Ce qui manque, et il faut le comprendre, c'est tout (tout) clustering. Ni LB ni HA. Vous pouvez essayer, mais il y aura tellement d'efforts investis qu'il vaut mieux faire quelque chose de différent au départ.

Je pense que vous pouvez résumer. Dans le cas où il n'y a pas d'administrateur, ou ce n'est pas suffisant, lorsque le prix de l'hébergement et du ou des sites qui y sont hébergés dépasse, disons 100u.e. cela vaut la peine de choisir d'embaucher un administrateur à temps partiel, ou d'acheter un logiciel et d'obtenir un administrateur pour les "demi-bosses", ou de ne pas le démarrer du tout - cela a vraiment du sens. Du point de vue de l'administrateur distant - la même chose. 10 $ par mois, et permet de gagner du temps et donne de la flexibilité dans le travail pour une très grande quantité. Si, par exemple, on me demande fortement de prendre un projet similaire sous l'aile, j'insisterai sur le transport jusqu'à Plesk.

Source: https://habr.com/ru/post/fr484812/


All Articles