Servidor web en CentOS 8 con php7, node.js e redis

Prefacio

Pasaron 2 días desde o lanzamento dunha nova versión do sistema operativo CentOS, concretamente CentOS 8. E ata agora hai bastantes artigos en Internet sobre como se fan as cousas nel, así que decidín cubrir este oco. Ademais, falarei non só de como instalar este par de programas, senón tamén de como vexo xeralmente a instalación de Linux nun ambiente virtual no mundo moderno para tarefas típicas, incluíndo partición de discos, etc.

Pero ao principio, quero falar brevemente de por que paga a pena cambiar a esta versión de todas as anteriores, e hai dúas razóns para iso:

  1. php7! Na versión anterior de CentOS, instalouse o php5.4 "Ortodoxo"...

    Vale, para ser un pouco máis serio, moitos paquetes pasaron por varias versións en masa. Nós (os fans dos sistemas operativos tipo redhat) finalmente entramos, se non no futuro, polo menos no presente. E os seguidores de Ubuntu xa non se rirán de nós e nos apuntarán co dedo, bueno... polo menos por un tempo ;).

  2. Transición de yum a dnf. A principal diferenza é que agora é oficialmente compatible para traballar con varias versións de paquetes á vez. Xusto no oito, nunca atopei isto útil, pero parece prometedor.

Crear unha máquina virtual

Hai diferentes hipervisores e non teño como obxectivo adaptar o lector a un específico, falareivos dos principios xerais.

memoria

Primeiro... Para instalar un sistema CentOS a partir do 7 seguro, e na miña opinión tamén foi o caso en 6 ("pero isto non é certo"), necesitas mínimo 2 GB de RAM. Polo tanto, recoméndoche que deas iso primeiro.

Pero en todo caso, despois da instalación pódese reducir o tamaño da memoria. Con 1 GB o sistema nu funciona bastante ben, comprobei.

disco

Para unha instalación normal, debes crear un disco virtual cunha capacidade de 20-30 GB. Isto é suficiente para o sistema. E un segundo disco para datos. Pódese engadir tanto na fase de creación dunha máquina virtual como despois. Normalmente engádoo máis tarde.

procesador

Nun núcleo, o sistema espido non se ralentiza. E dado que os recursos son libremente escalables, non vexo ningún sentido en dar máis na fase de instalación (a non ser que coñezas perfectamente os requisitos e sexa demasiado preguiceiro para volver entrar no configurador)

O resto normalmente pódese deixar por defecto.

A instalación real

Entón... Imos lanzar o instalador... Persoalmente, levo moito tempo instalando tales servizos só en forma de máquinas virtuais, polo que non vou describir todo tipo de rexistros de distribución nunha unidade flash, só montar a ISO como un CD no meu hipervisor favorito, descargar e imos.

A instalación básica é bastante típica, só vou determe nalgúns puntos.

Selección da fonte

Desde o lanzamento da oitava versión, o espello de Yandex estivo deitado durante días. Ben, é dicir, aumenta periódicamente e despois comeza a mostrar un erro. Estou seguro de que se debe a unha carga excesiva do servizo. Polo tanto, para indicar a fonte, persoalmente tiven que ir, en lugar de introducir o enderezo habitual aquí, seleccione alí o espello que me gusta e introduza manualmente o enderezo na xanela do instalador. É importante lembrar aquí que cómpre especificar o camiño ao cartafol onde se atopa o directorio repodata. Por exemplo mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Partición de disco

Esta pregunta é bastante relixiosa na miña opinión. Cada administrador ten a súa propia posición neste asunto. Pero aínda compartirei o meu punto de vista sobre o tema.

Si, en principio, pode asignar todo o espazo á raíz e funcionará, a maioría das veces incluso bastante ben. Por que valar un xardín con diferentes seccións? — Na miña opinión, hai dúas razóns principais para iso: as cotas e a portabilidade.

Por exemplo, se algo sae mal e se producen erros na partición de datos principal, quere poder seguir iniciando o sistema e levar a cabo medidas de reanimación. Polo tanto, personalmente asigno unha partición separada para /boot. Hai un núcleo e un cargador de arranque. Normalmente 500 megabytes son suficientes, pero en casos raros poden ser necesarios máis, e dado que xa estamos afeitos a medir o espazo en terabytes, asigno 2 GB para este apartado. E o importante aquí é que non se pode facer lvm.

A continuación vén a raíz do sistema. Para unha instalación normal, nunca necesitei máis de 4 GB por sistema, pero durante os eventos programados adoito utilizar o directorio /tmp para desempaquetar distribucións, e non vexo ningún sentido en dedicalo a unha partición separada, nos sistemas modernos. límpase automaticamente, polo que non se enche. Entón, asigno 8 GB para a raíz.

Intercambiar... En xeral, hai pouco uso práctico del. Se comezas a usar o intercambio no teu servidor, hoxe no mundo real isto só significa que o servidor necesita engadir máis memoria RAM. En caso contrario, os problemas de rendemento están garantidos (ou algún programa "perde" a memoria). Polo tanto, esta sección é necesaria só para fins de diagnóstico. Polo tanto, 2 GB é un número excelente. Si, independentemente da cantidade de memoria que haxa no servidor. Si, lin todos aqueles artigos onde está escrito sobre a relación entre o volume de memoria e o volume de intercambio... IMHO, están desactualizados. En 10 anos de práctica nunca necesitei isto. Hai 15 anos useinos, si.

En mi humilde opinión, todos poden decidir por si mesmos se asignan /home nunha partición separada. Se alguén no servidor usa este directorio activamente, é mellor asignalo. Se ninguén, non hai necesidade.

A continuación, /var. Na miña opinión, definitivamente debería ser destacado. Para comezar, podes limitarte a 4 GB e ver como vai. E si, por "como vai" quero dicir iso

  1. En primeiro lugar, sempre pode montar outro disco no subdirectorio /var (que mostrarei máis tarde cun exemplo)
  2. En segundo lugar, temos lvm: sempre podes engadilo. E normalmente hai que engadilo cando comezan a verter demasiados troncos alí. Pero nunca puiden predecir esta cifra de antemán, así que empezo con 2 GB e despois observo.

O espazo non asignado permanecerá libre no grupo de volumes e sempre poderá utilizarse máis tarde.

LVM

Todos Ten sentido facer particións distintas de /boot en LVM. Si, incluíndo o intercambio. Si, segundo todos os consellos, o intercambio debería estar ao comezo do disco, pero no caso de LVM a súa localización non se pode determinar en principio. Pero como escribín arriba, o teu sistema non debería use swap en absoluto. Polo tanto, non importa onde estea. Ben, non vivimos no 95, sinceramente!

Ademais, en LVM hai varias entidades básicas coas que necesitas poder vivir:

  • volume físico
  • grupo de volume
  • volume lóxico

Os volumes físicos combínanse en grupos, e cada volume físico só pode estar nun grupo e un grupo pódese localizar en varios volumes físicos á vez.
E os volumes lóxicos están cada un nun grupo.

Pero... Caramba, volve ser o século XXI. E os servidores son virtuais. Non ten sentido aplicarlles os mesmos mecanismos que se aplicaron aos físicos. E para os virtuais é importante ter os datos separados do sistema! Isto é moi importante, en particular para a posibilidade de cambiar rapidamente os datos a outra máquina virtual (por exemplo, cando se cambia a un sistema operativo novo) e en xeral para todo tipo de beneficios útiles (copias de seguridade separadas por particións usando ferramentas de hipervisor, por exemplo) . Polo tanto, úsase un grupo de volumes para o sistema e necesariamente outro para os datos. Esta división lóxica axuda moito na vida!

Se creou só un disco duro virtual ao crear unha máquina virtual, aquí remata a configuración. E se hai dous, simplemente non marque o segundo aínda.

Imos comezar a instalación.

Post-instalación

Entón, o sistema recén instalado finalmente iniciouse. O primeiro que cómpre comprobar é Internet.

ping ya.ru

Hai unha resposta? - Xenial, preme Ctrl-C.
Se non, crea unha rede, non hai vida sen isto, pero non é do que trata o meu artigo.

Agora, se aínda non estamos baixo root, vai por root, porque escribindo tal o número de comandos con sudo rompeume persoalmente (e que os paranoicos administradores me perdoen):

sudo -i

Agora o primeiro que facemos é escribir

dnf -y update

E se estás lendo este artigo en 2019, o máis probable é que non pase nada, pero mereceu a pena intentalo.

Agora imos configurar o disco restante

Digamos que a partición co sistema era xvda, entón o disco de datos será xvdb. OK.

A maioría dos consellos comezarán con "Executar fdisk e crear unha partición..."

Entón, isto é mal!

Voino dicir de novo porque é moi importante! Neste caso, traballar con LVM, que ocupa un disco virtual enteiro, crear particións nel é prexudicial. Cada palabra desta frase é importante. Se traballamos sen LVM, necesitamos facelo. Se temos un sistema e datos no disco, necesitámolo. Se por algún motivo necesitamos deixar a metade do disco baleiro, tamén o deberíamos. Pero normalmente todas estas suposicións son puramente teóricas. Porque se decidimos engadir espazo a unha partición existente, entón o xeito máis sinxelo de facelo é con esta configuración. E a facilidade de administración supera tanto outras moitas cousas que nos estamos avanzando deliberadamente cara a esta configuración.

E a comodidade é que se queres ampliar a partición de datos, simplemente engade espazos á partición virtual, despois expande o grupo usando vgextend e listo! En casos raros, pode ser necesaria outra cousa, pero polo menos non terás que ampliar o volume lóxico ao principio, o que xa é agradable. En caso contrario, para ampliar este mesmo volume, recomendan primeiro borrar o existente, e despois crear un novo encima... O que non ten moi bo aspecto e non se pode facer en directo, pero a ampliación segundo o escenario que indiquei pódese facer. realizado "sobre a marcha" sen sequera desmontar a partición.

Entón, creamos un volume físico, despois un grupo de volumes que o inclúa e despois unha partición para o noso servidor:

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

Aquí, en lugar dunha letra maiúscula "L" (e o tamaño en GB), pode especificar unha pequena e, a continuación, en lugar dun tamaño absoluto, especificar unha relativa, por exemplo, para usar a metade do espazo libre actualmente en un grupo de volumes, debes especificar "-l +50% GRATIS"

E o último comando formatea a partición no sistema de ficheiros ext4 (que ata agora, segundo a miña experiencia, amosa a maior estabilidade no caso de que se rompa todo, polo que o prefiro).

Agora montamos a partición no lugar correcto. Para iso, engade a liña correcta a /etc/fstab:

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

E marcamos

mount /var/www

Se se produce un erro, fai soar a alarma! Porque isto significa que temos un erro en /etc/fstab. E que no próximo reinicio teremos problemas moi grandes. É posible que o sistema non se inicie en absoluto, o que adoita ser moi triste para os servizos na nube. Polo tanto, é necesario corrixir urxentemente a última liña engadida ou eliminala por completo. É por iso que non escribimos o comando mount manualmente; entón non teriamos unha oportunidade tan excelente de comprobar a configuración de inmediato.

Agora instalamos todo o que queriamos e abrimos os portos para a web:

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

Se queres, tamén podes poñer aquí unha base de datos, pero persoalmente intento mantelo separado do servidor web. Aínda que mantela preto é máis rápido, si. A velocidade dos adaptadores de rede virtuais adoita rondar os gigabits, e cando se traballa na mesma máquina, as chamadas ocorren case ao instante. Pero é menos seguro. Que é máis importante para quen?

Agora engadimos o parámetro ao ficheiro de configuración (creamos un novo, a ideoloxía moderna de CentOS é así)

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

Reiniciamos o servidor.
Nos comentarios, recrimináronme por aconsellarme que desactivase SeLinux, polo que me corrixirei e escribirei sobre o feito de que despois diso cómpre lembrar de configurar SeLinux.
En realidade, beneficio! 🙂

Fonte: www.habr.com

Engadir un comentario