Mi experiencia con Plesk

Quiero compartir algunas impresiones sobre la necesidad o lo innecesario de algo como un panel de control para un proyecto web comercial de un solo servidor con un administrador de tiempo parcial. La historia comenzó hace un par de años cuando conocidos de conocidos me pidieron que acompañara la compra de un negocio, un sitio de noticias, desde un punto de vista técnico. Era necesario obtener una pequeña idea de lo que estaba funcionando, asegurarse de que todos los detalles necesarios se transfirieran en la forma y el volumen adecuados, y determinar estratégicamente qué podría mejorarse.


El trato tuvo lugar, el violinista ya no era necesario. El final En realidad no

El sitio estaba girando en un VMk de 4 núcleos de doble núcleo en Linode, en algunos Debian5 cubiertos de musgo con un tiempo de actividad de 400 días y una lista de paquetes no actualizados. Elemento web en Samopisny TsMSke, nginx, php5.3 FPM, mysql sintonizado Percona. En principio, funcionó.

Paralelamente a las conversaciones conmigo, el nuevo propietario estaba buscando un programador para llevar el proyecto a las expectativas. Lo encontré El programador evaluó el tráfico y los volúmenes y decidió que podía optimizar y administrar los costos. Migró todo el sitio a un alojamiento compartido de 700 rublos bajo el control de su IS **** er habitual. Unos días más tarde, nuevamente una llamada del propietario: "todo se está desacelerando y parece que estábamos rotos". Traté de corregir la situación a través del panel, pero después de un tiempo de intentos infructuosos de cambiar la versión del PCP o el controlador de fcgi a fpm, me di por vencido y me metí en el caparazón. Allí encontré la depuración incluida, que brillaba en todo Internet con una contraseña de un músculo, 777 en algunas carpetas que, en ese momento, se estaban agrietando por una avalancha de malvari y un juego similar. El propietario se dio cuenta y decidió que ahorrar en el alojamiento, el programador y el administrador, que mirarían con un ojo cómo iban las cosas, está mal.

Vamos a RuVDS. Un poco más cerca que el Linode británico, y si de repente quieres almacenar datos personales y todo esto, no tienes que mudarte a ningún otro lado. Dado que el proyecto estaba planeado para expandirse, tomaron el VMKU "para crecer": 4 núcleos, 8 conciertos de memoria, 80 GB de disco. No es que no sepa cómo usar las configuraciones de nginx con mis manos, simplemente no tenía el entusiasmo de hacer este proyecto tan íntimamente (ver arriba sobre tiempo parcial). Porque, coloque Plesk (aquí omitiré los detalles de instalación, porque en general no están allí: inicié el instalador, configuré la contraseña para el administrador, ingresé la clave, todo), en ese momento era 17.0. La configuración básica funciona razonablemente fuera de la caja, hay fail2ban y las últimas versiones disponibles de PHP, nginx.

Probablemente valga la pena detenerse y explicar por qué. Como rara vez hago esas cosas, y no tengo herramientas especiales y un conjunto de espacios en blanco para cada caso, estaba claro que se necesitaba algún tipo de automatización de las cosas básicas, primero, rápido, segundo, seguro, tercero todas las mejores prácticas alguien ya lo ha implementado.

Entonces, listo. Ahorró tiempo decentemente, reiniciando el sitio en el nuevo servidor resultó ser casi instantáneo. Quedaba por jugar con la configuración muscular, dándole la mitad de la memoria y aumentando el número de agrupaciones de búfer, y dando la mitad de los núcleos a nginx (Splash no toca las configuraciones globales), y entra en el shell durante un par de días para ver las estadísticas de mysqltuner. Sí, y compré un ImunifyAV pagado del catálogo de extensiones para deshacerme del malvari inundado. Había algo 11,000 archivos infectados. La abominación es que piezas de código ofuscadas se vierten en las estáticas, y rozarlas con las manos sería completamente aburrido. Al principio probé ClamAV, pero resultó que él no tomó esas cosas, pero ImunifyAV sí pudo. Además, los archivos curados permanecen en condiciones de funcionamiento, solo se elimina una pieza con el malware.

La aritmética es simple: $ 50 por mes para VMKu, $ 10 por Splash (en realidad menos, porque lo compraste inmediatamente por un año con un descuento de dos meses) y $ 3 por un antivirus. O muchas maletas de dinero para mi tiempo, que gastaría en el servidor al principio, rastrillando estos establos manualmente. El propietario está bastante contento con esta alineación.


Mientras tanto, encontraron un nuevo programador. Acordamos con él la distribución de la responsabilidad, creamos un subdominio para la versión de prueba y se comenzó a trabajar. Vio una nueva versión del sitio en Laravel, y miré a fail2ban%).


Curiosamente, el flujo de curiosos no se detiene, y siempre hay alrededor de un centenar de direcciones en la lista de las prohibidas. El efecto es interesante: en particular, por lo general, cuando voy al shell, veo unos 20000-30000 intentos fallidos de ingresar a través de SSH en el saludo. Con fail2ban activado, alrededor de 70. Esfuerzo invertido: 0. Desafortunadamente, hubo una caída de alquitrán. Por defecto, WAF (modsecurity) estaba "semi-habilitado": en modo descubrimiento. Es decir, escribió actividad sospechosa en el registro, pero en realidad no tomó ninguna medida. Y fail2ban leyó indiscriminadamente todos los registros, de acuerdo con las cárceles incluidas, y empapó todo lo que se movía. Por lo tanto, prohibimos la mitad del personal editorial: D. Tuve que deshabilitar esta cárcel y poner las direcciones IP necesarias en la lista blanca para mayor confiabilidad. El esfuerzo está invertido: pinchar dos veces con el mouse y enseñar a los editores a decir su dirección IP.


Lo que al programador le gustó de inmediato fue la capacidad de cargar bases de datos directamente en el panel y el acceso rápido a phpMyAdmin


Lo que me gustó: registros y copias de seguridad. Los registros se escriben y se giran fuera de la caja; Las copias de seguridad se configuran de manera muy simple. En el momento más lento, se realiza una copia de seguridad completa, en algún lugar de 10 conciertos, y luego todos los días en incremental, 200 megabytes, durante una semana. Recuperación granular a un archivo o base de datos específicos. Si necesita restaurar desde incremental, entonces no necesita retorcerse primero con el completo y el restaurador de toda la cadena, Splash hace todo por sí mismo. Puede cargar copias de seguridad en cualquier lugar: en ftp, en dropbox, s3 bucket, google drive y más.


Día F: el programador finalmente terminó el nuevo motor, lo vertimos en el producto, importamos los datos antiguos y nos sentamos a elegir el color de su futuro Maserati. Todavía estamos eligiendo.

Los primeros problemas comenzaron. Se esperaba que el nuevo sitio fuera más pesado que el anterior, pero el rastrillo real era que Yandex.Zen se usaba, entre otras cosas, para atraer tráfico, que atrapó a los visitantes en lotes. El sitio se dobló a 150 conexiones simultáneas (no estoy hablando de RPS, porque no lo medí). Comenzamos a tocar botones y girar perillas en el área de configuración de php_fpm:


Op, ya tiene 500 conexiones. A medida que la tarjeta de crédito se aplica a los medios de promoción, las olas de tráfico se hacen más grandes. El próximo hito son 1000 conexiones concurrentes. Aquí tuve que abstenerme del código y mirar el músculo de mi alma. El chapoteo no ayudó, pero realmente no lo esperaban. Activaron el registro lento de consultas, colgaron índices en la base de datos, eliminaron consultas innecesarias del código, peinaron la configuración de mysql una vez más siguiendo el consejo de mysqltuner.

Nuevo desafío: 2000 conexiones. Acabo de lanzar la versión Plesk 17.8, en la que, entre otras cosas, atornillamos el almacenamiento en caché de nginx. Actualizado (sorprendentemente fácil). Lo intentamos Funciona! Y luego entraron suavemente, la alimentación Yandex.Zen dejó de funcionar. El sitio funciona, el feed no funciona. La alimentación no funciona, no hay tráfico. El ambiente se está calentando. Bajo la presión de las circunstancias y la falta de imaginación, inmediatamente subí a nginx y encontré lo que estaba buscando. Resulta que en algún momento, el estúpido nginx almacenó en caché el error 500 sobre la marcha como respuesta al Yandex get feed.xml. Corregido agregando excepciones a la configuración de caché:


Está claro que el propietario necesita TODAVÍA, las olas están aumentando lentamente. Mientras estamos lidiando con eso, pero comenzamos a experimentar con memcached por adelantado, ya que Laravel lo admite casi desde el primer momento. De alguna manera no quería poner memcached con mis manos para "jugar", así que instalé la imagen del acoplador. Directamente desde el panel.


Bueno, estoy mintiendo, tuve que ir al shell y poner el módulo a través de pecl. Directamente de acuerdo con las instrucciones . No hay nada que decir sobre el aumento en el rendimiento, no hubo suficientes flujos de entrada grandes. El motor del sitio recogido en localhost: 11211, se muestran las estadísticas, la memoria se está comiendo. Si te gusta, veamos qué hacer a continuación. O déjalo así o pon lo "real" en el Eje. O prueba redis de la misma manera

Luego necesitaba adjuntar una lista de correo. Sin relés, solo autenticación SMTP. Obtuve una dirección de correo, a través de sus detalles a través de PHP hacemos el boletín.


No hace mucho tiempo, salió Plesk Obsidian (18.0), actualizado según la experiencia pasada sin temor. Todo salió muy bien, no hay nada de qué hablar. De lo agradable: la interfaz ha mejorado mucho en calidad, se ha modernizado y se ha vuelto más conveniente en algunos lugares. Genial pieza Advanced Monitoring en Grafana.


Todavía no lo he descubierto, pero puede, por ejemplo, configurar alertas para cualquier parámetro en el correo. Para el dueño, jajaja.

Como estoy hablando de la interfaz, es adaptativa y funciona muy bien en el teléfono. En las primeras etapas, mientras estábamos tratando de encontrar la configuración óptima de PHP y otras cosas, ayudó mucho. Y especialmente cuando un programador en un ataque de entusiasmo por el trabajo hace algo a las 23 en punto, y bebo vodka en un baño en un ataque de entusiasmo por el trabajo, y URGENTEMENTE necesito cambiar algo.


Ah por cierto. En la imagen, apareció PHP Composer. Todavía no hemos jugado con él, pero, digamos, para el mismo Laravel, puede guardar un par de inicios de sesión en el shell y algo de tiempo para instalar dependencias. El mismo sistema existe para Node.JS y Ruby.

Con SSL, todo es simple. Si el dominio se resuelve donde debería estar, Let's Encrypt se realiza con un solo clic y se actualiza aún más por sí mismo, tanto en el dominio como en los subdominios, e incluso en los servicios de correo.


Plesk, como software, es actualmente bastante agradable y estable. Se actualiza a sí mismo y el Eje es silencioso, consume pocos recursos, funciona sin problemas. Ni siquiera recuerdo que en algún lugar pisé algo, lo que sería un defecto claro en el producto. Por supuesto, hubo problemas, pero se debieron a la imperfección de la configuración o en algún lugar de la unión, por lo que no había nada de qué quejarse. Las impresiones de trabajar con Splash son generalmente agradables. Lo que falta en él, y uno debe entender esto, es cualquier (cualquier) agrupamiento. Ni LB ni HA. Puede intentarlo, pero habrá tanto esfuerzo invertido que es mejor hacer algo diferente inicialmente.

Creo que puedes resumir. Para el caso en que no hay administrador, o no es suficiente, cuando el precio de alojamiento y los sitios que se ejecutan en este excede, bueno, digamos 100u.e. vale la pena elegir contratar a un administrador a tiempo parcial, o comprar un software y obtener un administrador por "medio golpe", o no iniciarlo en absoluto, definitivamente tiene sentido. Desde el punto de vista del administrador remoto, lo mismo. 10 $ por mes, ahorra tiempo y brinda flexibilidad en el trabajo por una cantidad muy grande. Si, por ejemplo, me piden encarecidamente que tome un proyecto similar bajo el ala, insistiré en el transporte a Plesk.

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


All Articles