Servidor web CentOS 8 con php7, node.js y redis

Prólogo


Han pasado 2 días desde que salió la nueva versión del sistema operativo CentOS, a saber, CentOS 8. Y hasta ahora hay bastantes artículos en Internet sobre cómo hacer algo en él, así que decidí llenar este vacío. Además, le contaré no solo sobre cómo instalar este par de programas, sino también sobre cómo generalmente veo la instalación de Linux en un entorno virtual en el mundo moderno para tareas típicas, incluyendo particiones de discos y más.

Pero al principio quiero hablar brevemente sobre por qué debería cambiar a esta versión de todas las anteriores, y hay dos razones para esto:

  1. php7! En la versión anterior de CentOS, se instaló "ortodoxo" php5.4 ...

    Bueno, si es un poco más serio, muchos paquetes saltaron sobre varias versiones a granel. Nosotros (los fanáticos del sistema operativo tipo redhat) finalmente hemos entrado, si no en el futuro, al menos en el presente. Y los partidarios de Ubuntu ya no se reirán de nosotros y nos tocarán con los dedos, bueno ... al menos por un tiempo;).
  2. Transición de yum a dnf. La principal diferencia es que ahora funciona con varias versiones de paquetes oficialmente compatibles. Justo aquí, en la figura ocho, nunca me ha sido útil todavía, pero suena prometedor.

Crear una máquina virtual


Los hipervisores son diferentes y no tengo ningún propósito para agudizar el lector para uno específico, le contaré sobre los principios generales.

El recuerdo


Primero ... Para instalar el sistema CentOS a partir de 7 con seguridad, y en mi opinión a las 6 también fue así ("pero no es preciso"), se requiere un mínimo de 2 GB de RAM. Por lo tanto, te aconsejo que comiences y des mucho.

Pero si eso, después de la instalación, la cantidad de memoria se puede reducir. Con 1 GB, el sistema básico funciona bastante bien, lo comprobé.

Conducir


Para una instalación normal, cree un disco virtual de 20-30 GB. Esto es suficiente para el sistema. Y un segundo disco para datos. Se puede agregar tanto en la etapa de creación de una máquina virtual como después. Usualmente agrego más tarde.

CPU


En un núcleo, un sistema simple no se ralentiza. Y dado que los recursos son libremente escalables, no veo ningún punto en dar más en la etapa de instalación (a menos que idealmente conozca los requisitos y sea demasiado vago para volver al configurador)

El resto generalmente se puede dejar por defecto.

Instalación en sí


Entonces ... Lanzamos el instalador ... Personalmente, he estado poniendo estos servicios durante mucho tiempo solo en forma de máquinas virtuales, por lo que no describiré todo tipo de registros de distribución en una unidad flash USB: simplemente monté el ISO como un CD en mi hipervisor favorito, lo descargué y lo manejé.

La instalación básica es bastante típica, me centraré solo en algunos puntos.

Selección de fuente


Desde el lanzamiento de la octava versión, el espejo de Yandex ha estado mintiendo todo el día. Bueno, es decir, se eleva periódicamente, y luego nuevamente comienza a mostrar un error. Estoy seguro de que el asunto es una carga excesiva en el servicio. Por lo tanto, para indicar la fuente, personalmente tuve que, en lugar de ingresar la dirección habitual, ir aquí , seleccionar el espejo que me gusta allí e ingresar manualmente la dirección en la ventana del instalador. Es importante recordar que debe especificar la ruta a la carpeta donde se encuentra el directorio de repodatos . Por ejemplo, mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os .

Desglose de disco


Esta pregunta es bastante religiosa en mi opinión. Cada administrador tiene su propia posición sobre este tema. Pero aún comparto mi punto de vista sobre la cuestión.

Sí, en principio, puede asignar todo el lugar a la raíz y al trabajo, a menudo incluso es bastante bueno. ¿Por qué entonces cercar en un jardín con diferentes secciones? - Las principales razones de esto, en mi opinión 2: cuotas y portabilidad.

Por ejemplo, si algo salió mal y se produjeron errores en la sección de datos principal, quiero poder cargar el sistema de todos modos y llevar a cabo medidas de reanimación. Por lo tanto, personalmente asigno una partición separada en / boot. Ahí está el núcleo y el gestor de arranque. Por lo general, 500 megabytes son suficientes, pero en casos raros puede tomar más, y dado que ya estamos acostumbrados a medir el espacio con terabytes, asigno 2GB para esta sección. Y aquí es importante que no se pueda hacer lvm.

Luego viene la raíz del sistema. Para una instalación normal, nunca necesité más de 4 GB por sistema, pero durante los eventos programados a menudo uso el directorio / tmp para desempaquetar distribuciones, y no veo el punto de resaltarlo como una sección separada: se limpia automáticamente en los sistemas modernos, por lo que no se llena . Entonces, bajo la raíz, asigno 8GB.

Intercambio ... En general, hay pocos beneficios prácticos. Si comenzó a usar el intercambio en el servidor, hoy en día en el mundo real esto solo significa que el servidor necesita agregar más RAM. De lo contrario, los problemas de rendimiento están garantizados (o algún programa tiene pérdida de memoria). Por lo tanto, esta sección es solo para fines de diagnóstico. Por lo tanto, 2 GB es un gran número. Sí, no importa cuánta memoria tenga el servidor. Sí, leí todos los artículos donde está escrito sobre la relación de memoria a volumen de intercambio ... En mi humilde opinión, están desactualizados. Durante 10 años de práctica, esto nunca me ha sido útil. Hace 15 años los usé, sí.

Todos pueden decidir si asignar / hogar en una sección separada en mi humilde opinión. Si alguien usa activamente este directorio en el servidor, es mejor resaltarlo. Si nadie, no hay razón.

A continuación, / var. En mi opinión, es necesario destacarlo. Para empezar, puede limitarse a un número de 4 GB y luego cómo va. Y sí, por "cómo va", quiero decir que

  1. En primer lugar, siempre puede montar otro disco en el subdirectorio / var (que mostraré más adelante con un ejemplo)
  2. En segundo lugar, tenemos lvm: siempre puedes agregar. Y, por lo general, debe agregar cuando comienzan a aparecer demasiados registros. Pero nunca he podido predecir esta cifra de antemano, así que empiezo con 2 GB y luego miro.

El espacio no asignado permanecerá libre en el grupo de volúmenes, siempre se puede usar.

LVM


Tiene sentido hacer todas las particiones excepto / boot en LVM. Sí, incluido el intercambio. Sí, el intercambio de todos los consejos debe estar al principio del disco y, en el caso de LVM, su ubicación no puede determinarse en principio. Pero como escribí anteriormente, su sistema no debería usar swap en absoluto. Por lo tanto, no importa dónde esté. Bueno, no en el '95 vivimos, sinceramente!

Además, en LVM hay varias entidades básicas con las que debes poder vivir:

  • volumen fisico
  • grupo de volumen
  • volumen lógico

Los volúmenes físicos se agrupan, con cada volumen físico en un solo grupo, y el grupo puede estar en múltiples volúmenes físicos a la vez.
Y los volúmenes lógicos están cada uno en el mismo grupo.

Pero ... Maldita sea, estamos de nuevo en el patio del siglo XXI. Y los servidores son virtuales. No tiene sentido aplicarles los mismos mecanismos que se aplicaron a los físicos. ¡Y para lo virtual, es importante tener datos separados del sistema! Esto es muy importante en particular para la capacidad de cambiar rápidamente los datos a otra máquina virtual (por ejemplo, al cambiar a un nuevo sistema operativo) y, en general, todo tipo de ventajas útiles (copias de seguridad separadas por secciones usando el hipervisor, por ejemplo). Por lo tanto, se usa un grupo de volúmenes para el sistema, ¡y necesariamente se usa otro para los datos! ¡Esta separación lógica ayuda mucho en la vida!

Si creó un solo disco duro virtual al crear una máquina virtual, este es el final de la configuración. Y si son dos, simplemente no marquen el segundo todavía.

Comenzamos la instalación.

Post instalación


Entonces, el sistema recién instalado finalmente se inició. Lo primero que debe verificar es Internet.

ping ya.ru 

¿Hay una respuesta? - Bien, presione Ctrl-C.
Si no, configura la red, no hay vida sin esto, pero mi artículo no trata sobre eso.

Ahora, si aún no estamos debajo de la raíz, vamos debajo de la raíz, porque para escribir tantos comandos con sudo personalmente vlom (y los administradores paranoicos me perdonan):

 sudo -i 

Ahora lo primero que escribimos

 dnf -y update 

Y si lees este artículo en 2019, lo más probable es que no pase nada, pero valió la pena intentarlo.

Ahora configure la unidad restante


Supongamos que tenemos una partición xvda con un sistema, entonces el disco de datos será xvdb. Ok

La mayoría de los consejos comenzarán con las palabras "Inicie fdisk y cree una partición ..."

Entonces, esto no es cierto !

Repetiré el panqueque nuevamente, ¡porque es importante! En este caso, trabajar con LVM, que ocupa un todo, incluso si es un disco virtual, ¡crear particiones en él es dañino! Cada palabra es importante en esta frase. Si trabajamos sin LVM, es necesario. Si decimos en el sistema de disco y los datos, es necesario. Si por alguna razón necesitamos dejar la mitad del disco vacía, también es necesario. Pero generalmente todos estos supuestos son puramente teóricos. Porque si decidimos agregar lugares a la sección existente, entonces la forma más fácil de hacerlo es con esta configuración. Y la facilidad de administración supera tanto que nos estamos moviendo deliberadamente hacia esta configuración.

¡Y la conveniencia es que si desea expandir la sección de datos, simplemente agrega espacio a la sección virtual, luego expande el grupo con vgextend y listo! En casos raros, se puede requerir algo más, pero al menos no tiene que expandir al principio el lógico, lo cual ya es bueno. Y luego, para expandir este volumen, se recomienda eliminar el existente al principio, y luego crear uno nuevo en la parte superior ... Que no se ve muy bien y no se puede hacer en vivo, y la expansión de acuerdo con el escenario que especifiqué se puede hacer sobre la marcha sin siquiera desmontar la partición.

En total, creamos un volumen físico, luego un grupo de volúmenes, incluyéndolo y luego una sección para nuestro servidor:

 pvcreate /dev/xvdb vgcreate data /dev/xvdb lvcreate -n www -L40G data mke2fs -t ext4 /dev/mapper/data-www 

Aquí, en lugar de la letra mayúscula “L” (y el tamaño en GB), puede especificar una pequeña y luego indicar el tamaño relativo en lugar del tamaño absoluto, por ejemplo, para usar la mitad del espacio disponible actualmente en el grupo de volúmenes, debe especificar "-l + 50% GRATIS"

Y el último comando formatea la partición en el sistema de archivos ext4 (que hasta ahora, en mi práctica, muestra la mayor estabilidad en caso de que todo se rompa, así que lo prefiero).

Ahora monte la partición en el lugar correcto. Para hacer esto, agregue la línea correcta a / etc / fstab:

 /dev/mapper/data-www /var/www ext4 defaults 1 2 

Y escribimos

 mount /var/www 

Si aparece un error, ¡hacemos sonar la alarma! Porque significa que tenemos un error en / etc / fstab. Y que en el próximo reinicio tendremos problemas muy grandes. Es posible que el sistema no arranque en absoluto, lo que a menudo es muy triste para los servicios en la nube. Por lo tanto, debe corregir con urgencia la última línea agregada o eliminarla por completo. Es por eso que no comenzamos a escribir el comando de montaje manualmente, entonces no hubiéramos tenido una oportunidad tan excelente para verificar la configuración de los dispositivos directos al hogar.

Ahora ponemos todo lo que queríamos y abrimos los puertos en la web:

 dnf groupinstall "Development Tools" dnf -y install httpd @nodejs @redis php firewall-cmd --add-service http --permanent firewall-cmd --add-service https --permanent 

Opcionalmente, también puede poner la base de datos aquí, pero personalmente, trato de mantenerla separada del servidor web. Aunque mantenerla cerca es más rápido, sí. La velocidad de los adaptadores de red virtuales suele estar en la región de gigabits, y cuando se trabaja en la misma máquina, el acceso se produce casi instantáneamente. Pero menos seguro. Aquí para quién es más importante.

Ahora agregue el parámetro al archivo de configuración (cree una ideología CentOS nueva y moderna como esta)

 echo "vm.overcommit_memory = 1"> /etc/sysctl.d/98-sysctl.conf 

Reinicia el servidor.
En los comentarios, me regañaron por recomendarle que apague SeLinux, así que lo arreglaré y escribiré sobre el hecho de que después de eso debe recordar configurar SeLinux.
En realidad, ¡lucro! :)

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


All Articles