Servidor web no CentOS 8 com php7, node.js e redis

Prefácio

Já se passaram 2 dias desde o lançamento de uma nova versão do sistema operacional CentOS, ou seja, CentOS 8. E até agora existem alguns artigos na Internet sobre como as coisas são feitas nele, então decidi preencher essa lacuna. Além disso, contarei a vocês não apenas como instalar este par de programas, mas também como geralmente vejo a instalação do Linux em um ambiente virtual no mundo moderno para tarefas típicas, incluindo particionamento de discos e assim por diante.

Mas, no início, quero falar brevemente sobre por que vale a pena mudar de todas as anteriores para esta versão, e há dois motivos para isso:

  1. php7! Na versão anterior do CentOS, o php5.4 “Ortodoxo” estava instalado...

    Ok, para ser um pouco mais sério, muitos pacotes passaram por várias versões em massa. Nós (fãs de sistemas operacionais semelhantes ao redhat) finalmente entramos, se não no futuro, pelo menos no presente. E os apoiadores do Ubuntu não vão mais rir de nós e apontar o dedo para nós, bem... pelo menos por um tempo ;).

  2. Transição de yum para dnf. A principal diferença é que agora é oficialmente suportado trabalhar com várias versões de pacotes ao mesmo tempo. Bem no oito, nunca achei isso útil, mas parece promissor.

Criar uma máquina virtual

Existem diferentes hipervisores e não tenho como objetivo adequar o leitor a um específico, vou falar sobre os princípios gerais.

Память

Primeiro... Para instalar um sistema CentOS a partir do 7 com certeza, e na minha opinião isso também acontecia no 6 (“mas isso não é certo”), você precisa mínimo 2 GB de RAM. Portanto, aconselho você a distribuir isso primeiro.

Mas, na verdade, após a instalação, o tamanho da memória pode ser reduzido. Com 1 GB, o sistema básico funciona muito bem, verifiquei.

disco

Para uma instalação normal, você deve criar um disco virtual com capacidade de 20 a 30 GB. Isso é suficiente para o sistema. E um segundo disco para dados. Ele pode ser adicionado na fase de criação de uma máquina virtual e depois. Normalmente adiciono mais tarde.

processador

Em um núcleo, o sistema vazio não fica lento. E como os recursos são livremente escaláveis, não vejo sentido em dar mais na fase de instalação (a menos que você conheça perfeitamente os requisitos e tenha preguiça de entrar no configurador novamente)

O resto geralmente pode ser deixado como padrão.

A instalação real

Então... Vamos iniciar o instalador... Pessoalmente, há muito tempo instalo esses serviços apenas na forma de máquinas virtuais, então não vou descrever todos os tipos de registros de distribuição em uma unidade flash - apenas monto o ISO como um CD no meu hipervisor favorito, baixe e pronto.

A instalação básica é bastante típica, vou me concentrar apenas em alguns pontos.

Seleção de fonte

Desde o lançamento da oitava versão, o espelho do Yandex está por aí há dias. Bem, isto é, aumenta periodicamente e depois começa a mostrar um erro novamente. Tenho certeza que é devido à carga excessiva do serviço. Portanto, para indicar a fonte, eu pessoalmente tive que, em vez de inserir o endereço habitual, ir aqui, selecione o espelho que eu gosto e insira manualmente o endereço na janela do instalador. É importante lembrar aqui que você precisa especificar o caminho para a pasta onde o diretório está localizado repodados. Por exemplo, mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Particionamento de disco

Esta questão é bastante religiosa na minha opinião. Cada administrador tem sua própria posição sobre esse assunto. Mas ainda compartilharei meu ponto de vista sobre o assunto.

Sim, em princípio, você pode alocar todo o espaço para a raiz e isso funcionará, na maioria das vezes até muito bem. Por que então cercar um jardim com seções diferentes? — Na minha opinião, há duas razões principais para isso: quotas e portabilidade.

Por exemplo, se algo der errado e ocorrerem erros na partição de dados principal, você ainda desejará poder inicializar o sistema e realizar medidas de ressuscitação. Portanto, eu pessoalmente aloco uma partição separada para/boot. Existe um kernel e um bootloader. Normalmente 500 megabytes são suficientes, mas em casos raros pode ser necessário mais, e como já estamos habituados a medir o espaço em terabytes, aloco 2GB para esta secção. E o importante aqui é que isso não pode ser feito lvm.

Em seguida vem a raiz do sistema. Para uma instalação normal, nunca precisei de mais de 4 GB por sistema, mas durante eventos agendados costumo usar o diretório /tmp para descompactar distribuições e não vejo sentido em dedicá-lo a uma partição separada - em sistemas modernos ele é limpo automaticamente, portanto não é preenchido. Então aloco 8 GB para o root.

Troca... Em geral, há pouca utilidade prática nisso. Se você começar a usar swap em seu servidor, hoje no mundo real isso significa apenas que o servidor precisa adicionar mais RAM. Caso contrário, problemas de desempenho são garantidos (ou algum programa “vaza” memória). Portanto, esta seção é necessária apenas para fins de diagnóstico. Portanto, 2 GB é um número excelente. Sim, independentemente da quantidade de memória existente no servidor. Sim, eu li todos aqueles artigos onde está escrito sobre a proporção entre o volume de memória e o volume de troca... IMHO, eles estão desatualizados. Em 10 anos de prática nunca precisei disso. Há 15 anos eu os usei, sim.

IMHO, todos podem decidir por si mesmos se devem alocar/home em uma partição separada. Se alguém no servidor usar ativamente esse diretório, é melhor alocá-lo. Se não houver ninguém, não há necessidade.

A seguir, /var. Na minha opinião, definitivamente deveria ser destacado. Para começar, você pode se limitar a 4 GB e ver no que dá. E sim, por “como vai” quero dizer que

  1. Primeiramente, você sempre pode montar outro disco no subdiretório /var (que mostrarei mais tarde com um exemplo)
  2. Em segundo lugar, temos o lvm - você sempre pode adicioná-lo. E geralmente você precisa adicioná-lo quando muitas toras começam a aparecer lá. Mas nunca consegui prever esse número com antecedência, então começo com 2 GB e depois observo.

O espaço não alocado permanecerá livre no grupo de volumes e sempre poderá ser usado posteriormente.

LVM

Todos Faz sentido criar partições diferentes de /boot no LVM. Sim, incluindo troca. Sim, de acordo com todos os conselhos, a troca deve estar no início do disco, mas no caso do LVM sua localização não pode ser determinada em princípio. Mas como escrevi acima, seu sistema não deveria use swap. Portanto, não importa onde ele esteja. Bem, não vivemos em 95, honestamente!

Além disso, no LVM existem várias entidades básicas com as quais você precisa conviver:

  • volume físico
  • grupo de volumes
  • volume lógico

Os volumes físicos são combinados em grupos, e cada volume físico pode estar em apenas um grupo, e um grupo pode estar localizado em vários volumes físicos ao mesmo tempo.
E os volumes lógicos estão cada um em um grupo.

Mas... Droga, estamos no século 21 novamente. E os servidores são virtuais. Não faz sentido aplicar a eles os mesmos mecanismos que foram aplicados aos físicos. E para os virtuais é importante ter os dados separados do sistema! Isso é muito importante, em particular para a capacidade de alternar rapidamente dados para outra máquina virtual (por exemplo, ao mudar para um novo sistema operacional) e, em geral, para todos os tipos de benefícios úteis (backups separados por partições usando ferramentas de hipervisor, por exemplo) . Portanto, um grupo de volumes é utilizado para o sistema e necessariamente outro é utilizado para dados! Essa divisão lógica ajuda muito na vida!

Se você criou apenas um disco rígido virtual ao criar uma máquina virtual, é aqui que a configuração termina. E se houver dois, não marque o segundo ainda.

Vamos iniciar a instalação.

Pós-instalação

Então, o sistema recém-instalado finalmente inicializou. A primeira coisa que você precisa verificar é a Internet.

ping ya.ru

Existe uma resposta? - Ótimo, pressione Ctrl-C.
Se não, vá montar uma rede, não há vida sem isso, mas não é disso que trata o meu artigo.

Agora se ainda não estamos no root, vá no root, porque digitando é o número de comandos com sudo me quebrou pessoalmente (e que os administradores paranóicos me perdoem):

sudo -i

Agora a primeira coisa que fazemos é digitar

dnf -y update

E se você estiver lendo este artigo em 2019, muito provavelmente nada acontecerá, mas valeu a pena tentar.

Agora vamos configurar o disco restante

Digamos que a partição do sistema seja xvda, então o disco de dados será xvdb. OK.

A maioria dos conselhos começará com “Execute o fdisk e crie uma partição...”

Então isso é incorretamente!

Vou repetir porque é muito importante! Nesse caso, para trabalhar com LVM, que ocupa um disco virtual inteiro, criar partições nele é prejudicial! Cada palavra nesta frase é importante. Se trabalharmos sem LVM, precisamos. Se tivermos um sistema e dados no disco, precisamos deles. Se por algum motivo precisarmos deixar metade do disco vazio, devemos fazer o mesmo. Mas geralmente todas essas suposições são puramente teóricas. Porque se decidirmos adicionar espaço a uma partição existente, a maneira mais fácil de fazer isso é com esta configuração. E a facilidade de administração supera tantas outras coisas que estamos propositalmente avançando em direção a essa configuração.

E a comodidade é que se você quiser expandir a partição de dados, basta adicionar espaços à partição virtual, depois expandir o grupo usando vgextend e pronto! Em casos raros, algo mais pode ser necessário, mas pelo menos você não terá que expandir o volume lógico no início, o que já é bom. Caso contrário, para expandir este mesmo volume, eles recomendam primeiro excluir o existente e depois criar um novo por cima... O que não parece muito bonito e não pode ser feito ao vivo, mas a expansão de acordo com o cenário que indiquei pode ser realizado “on the fly” sem sequer desmontar a partição.

Então, criamos um volume físico, depois um grupo de volumes que o inclui e depois uma partição para nosso servidor:

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

Aqui, em vez de uma letra maiúscula “L” (e o tamanho em GB), você pode especificar um tamanho pequeno e, em vez de um tamanho absoluto, especificar um relativo, por exemplo, para usar metade do espaço livre atualmente em um grupo de volumes, você precisa especificar “-l +50%FREE”

E o último comando formata a partição no sistema de arquivos ext4 (que até agora, na minha experiência, mostra a maior estabilidade caso tudo quebre, então prefiro).

Agora montamos a partição no lugar certo. Para fazer isso, adicione a linha correta ao /etc/fstab:

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

E nós discamos

mount /var/www

Se ocorrer um erro, soe o alarme! Porque isso significa que temos um erro em /etc/fstab. E que na próxima reinicialização teremos problemas muito grandes. O sistema pode nem inicializar, o que geralmente é muito triste para os serviços em nuvem. Portanto, é necessário corrigir com urgência a última linha adicionada ou excluí-la completamente! É por isso que não escrevemos o comando mount manualmente - então não teríamos uma oportunidade tão excelente de verificar a configuração imediatamente.

Agora instalamos tudo o que queríamos e abrimos as portas 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 desejar, você também pode colocar um banco de dados aqui, mas pessoalmente procuro mantê-lo separado do servidor web. Embora mantê-la por perto seja mais rápido, sim. A velocidade dos adaptadores de rede virtuais geralmente gira em torno de gigabit e, ao trabalhar na mesma máquina, as chamadas ocorrem quase instantaneamente. Mas é menos seguro. O que é mais importante para quem?

Agora adicionamos o parâmetro ao arquivo de configuração (criamos um novo, a ideologia moderna do CentOS é assim)

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

Reiniciamos o servidor.
Nos comentários, fui repreendido por me aconselhar a desligar o SeLinux, então vou me corrigir e escrever sobre o fato de que depois disso você precisa se lembrar de configurar o SeLinux.
Na verdade, lucro! 🙂

Fonte: habr.com

Adicionar um comentário