Serveur Web CentOS 8 avec php7, node.js et redis

Préface


Cela fait 2 jours que la nouvelle version du système d'exploitation CentOS est sortie, à savoir CentOS 8. Et jusqu'à présent, il y a peu d'articles sur Internet sur la façon dont quelque chose y est fait, j'ai donc décidé de combler cette lacune. De plus, je vais vous expliquer non seulement comment installer cette paire de programmes, mais aussi comment je vois généralement l'installation de Linux dans un environnement virtuel dans le monde moderne pour les tâches courantes, y compris le partitionnement de disque et plus encore.

Mais au début, je veux expliquer brièvement pourquoi vous devriez passer à cette version à partir de toutes les précédentes, et il y a deux raisons à cela:

  1. php7! Dans la version précédente de CentOS, "Orthodox" php5.4 était installé ...

    Eh bien, si c'est un peu plus sérieux, alors beaucoup de packages ont sauté sur plusieurs versions en vrac. Nous (les fans d'OS de type redhat) sommes enfin entrés, sinon dans le futur, du moins dans le présent. Et les supporters d'Ubuntu ne se moqueront plus de nous et ne nous piqueront pas les doigts, enfin ... du moins pendant un certain temps;).
  2. Transition de miam à dnf. La principale différence est que désormais travailler avec plusieurs versions de packages est officiellement pris en charge. Ici, dans le chiffre huit, cela ne m'a jamais encore été utile, mais cela semble prometteur.

Création d'une machine virtuelle


Les hyperviseurs sont différents et je n'ai aucune raison d'affiner le lecteur pour un lecteur spécifique, je vais vous parler des principes généraux.

La mémoire


Tout d'abord ... Pour installer le système CentOS à partir de 7, c'est sûr, et à mon avis à 6, c'était comme ça aussi ("mais ce n'est pas précis"), un minimum de 2 Go de RAM est requis. Par conséquent, je vous conseille de commencer et de donner autant.

Mais si cela, après l'installation, la quantité de mémoire peut être réduite. À 1 Go, le système nu fonctionne très bien, j'ai vérifié.

Conduire


Pour une installation normale, créez un disque virtuel de 20 à 30 Go. C'est suffisant pour le système. Et un deuxième disque pour les données. Il peut être ajouté à la fois au stade de la création d'une machine virtuelle et après. J'ajoute généralement plus tard.

CPU


Sur un cœur, un système nu ne ralentit pas. Et comme les ressources sont librement évolutives, je ne vois aucun intérêt à en donner plus au stade de l'installation (à moins que vous ne connaissiez idéalement les exigences et que vous soyez trop paresseux pour entrer dans le configurateur une fois de plus)

Le reste peut généralement être laissé par défaut.

L'installation elle-même


Donc ... Nous lançons l'installateur ... Personnellement, je ne mets ces services depuis longtemps que sous forme de machines virtuelles, donc je ne décrirai pas toutes sortes d'enregistrements de distribution sur une clé USB - je monte simplement l'ISO en tant que CD dans mon hyperviseur préféré, je l'ai téléchargé et je l'ai conduit.

L'installation de base est assez typique, je ne me concentrerai que sur quelques points.

Sélection de la source


Depuis la sortie de la huitième version, le miroir de Yandex est resté allongé toute la journée. Eh bien, c'est-à-dire qu'il augmente périodiquement, puis recommence à afficher une erreur. Je suis sûr que la question est une charge excessive sur le service. Par conséquent, pour indiquer la source, j'ai personnellement dû, au lieu de saisir l'adresse habituelle, aller ici , sélectionner le miroir que j'aime là-bas et entrer manuellement l'adresse dans la fenêtre du programme d'installation. Il est important de se rappeler que vous devez spécifier le chemin d'accès au dossier où se trouve le répertoire repodata . Par exemple, mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os .

Panne de disque


Cette question est plutôt religieuse à mon avis. Chaque administrateur a sa propre position à ce sujet. Mais je partage toujours mon point de vue sur la question.

Oui, en principe, vous pouvez allouer toute la place à la racine et travailler, le plus souvent c'est même assez bien. Pourquoi alors clôturer un jardin avec différentes sections? - Les principales raisons de cela, à mon avis 2: les quotas et la portabilité.

Par exemple, si quelque chose s'est mal passé et que des erreurs sont survenues dans la section principale des données, je veux quand même pouvoir charger le système et effectuer des mesures de réanimation. Par conséquent, j'alloue personnellement une partition distincte sous / boot. Là réside le noyau et le chargeur de démarrage. Habituellement, 500 mégaoctets suffisent, mais dans de rares cas cela peut prendre plus, et étant donné que nous sommes déjà habitués à mesurer l'espace avec des téraoctets, j'alloue 2 Go pour cette section. Et ici, il est important que cela ne puisse pas être fait lvm.

Vient ensuite la racine du système. Pour une installation normale, je n'ai jamais eu besoin de plus de 4 Go par système, mais lors d'événements planifiés, j'utilise souvent le répertoire / tmp pour décompresser les distributions, et je ne vois pas l'intérêt de le mettre en surbrillance dans une section distincte - il nettoie automatiquement dans les systèmes modernes, donc il ne se remplit pas . Donc, sous la racine, j'alloue 8 Go.

Swap ... Dans l'ensemble, il y a peu d'avantages pratiques. Si vous avez commencé à utiliser swap sur le serveur, aujourd'hui dans le monde réel, cela signifie seulement que le serveur a besoin d'ajouter plus de RAM. Sinon, les problèmes de performances sont garantis (ou certains programmes ont une fuite de mémoire). Par conséquent, cette section est uniquement à des fins de diagnostic. Par conséquent, 2 Go est un grand nombre. Oui, peu importe la quantité de mémoire du serveur. Oui, j'ai lu tous les articles où il est écrit sur le rapport mémoire / volume d'échange ... À mon humble avis, ils sont obsolètes. Depuis 10 ans de pratique, cela ne m'a jamais été utile. Il y a 15 ans, je les utilisais, oui.

Tout le monde peut décider d'allouer / à la maison dans une section distincte à mon humble avis. Si quelqu'un utilise activement ce répertoire sur le serveur, il est préférable de le mettre en surbrillance. Si personne - aucune raison.

Ensuite, / var. À mon avis, il est nécessaire de le distinguer. Pour commencer, vous pouvez vous limiter à un nombre de 4 Go, puis comment cela se passe. Et oui, par "comment ça se passe", je veux dire que

  1. Premièrement, vous pouvez toujours monter un autre disque dans le sous-répertoire / var (que je montrerai plus tard avec un exemple)
  2. Deuxièmement, nous avons LVM - vous pouvez toujours ajouter. Et généralement, vous devez ajouter quand trop de journaux commencent à y couler. Mais je n'ai jamais pu prédire ce chiffre à l'avance, alors je commence avec 2 Go, puis regarde.

L'espace non alloué restera libre dans le groupe de volumes, vous pourrez donc toujours l'utiliser plus tard.

LVM


Il est logique de créer toutes les partitions à l'exception de / boot dans LVM. Oui, y compris l'échange. Oui, l'échange pour toutes les astuces doit se faire au début du disque, et dans le cas de LVM, son emplacement ne peut pas être déterminé en principe. Mais comme je l'ai écrit ci-dessus, votre système ne devrait pas du tout utiliser swap. Par conséquent, peu importe où il se trouve. Eh bien, pas en 95, nous vivons, honnêtement!

De plus, dans LVM, il existe plusieurs entités de base avec lesquelles vous devez pouvoir vivre:

  • volume physique
  • groupe de volumes
  • volume logique

Les volumes physiques sont regroupés, chaque volume physique étant dans un seul groupe, et le groupe peut être sur plusieurs volumes physiques à la fois.
Et les volumes logiques sont chacun dans le même groupe.

Mais ... Nous, bon sang, sommes encore une fois le 21e siècle dans la cour. Et les serveurs sont virtuels. Cela n'a aucun sens de leur appliquer les mêmes mécanismes que ceux appliqués aux mécanismes physiques. Et pour le virtuel, il est important d'avoir des données distinctes du système! Ceci est très important en particulier pour la possibilité de basculer rapidement les données vers une autre machine virtuelle (par exemple, lors du passage à un nouveau système d'exploitation) et en général toutes sortes d'avantages utiles (sauvegardes séparées par sections utilisant l'hyperviseur par exemple). Par conséquent, un groupe de volumes est utilisé pour le système et nécessairement un autre est utilisé pour les données! Cette séparation logique aide beaucoup dans la vie!

Si vous n'avez créé qu'un seul disque dur virtuel lors de la création d'une machine virtuelle, c'est la fin de la configuration. Et si deux, alors ne marquez pas encore le second.

Nous commençons l'installation.

Après l'installation


Ainsi, le système fraîchement installé a finalement démarré. La première chose à vérifier est Internet.

ping ya.ru 

Y a-t-il une réponse? - Très bien, appuyez sur Ctrl-C.
Sinon, allez configurer le réseau, il n'y a pas de vie sans ça, mais mon article ne parle pas de ça.

Maintenant, si nous ne sommes pas déjà sous la racine, nous allons sous la racine, car pour taper tant de commandes avec sudo personnellement, je suis fauché (et les administrateurs paranoïaques me pardonneront):

 sudo -i 

Maintenant, la première chose que nous tapons

 dnf -y update 

Et si vous lisez cet article en 2019, rien ne se passera probablement, mais cela valait la peine d'être essayé.

Configurez maintenant le lecteur restant


Supposons que nous avions une partition xvda avec un système, alors le disque de données sera xvdb. Ok

La plupart des astuces commencent par les mots "Lancer fdisk et créer une partition ..."

Ce n'est donc pas vrai !

Je vais répéter la crêpe, car c'est important! Dans ce cas, travailler avec LVM, qui occupe un tout, laisser un disque virtuel créer des partitions dessus est dangereux! Chaque mot est important dans cette phrase. Si nous travaillons sans LVM - c'est nécessaire. Si nous disons sur le système de disque et les données - c'est nécessaire. Si pour une raison quelconque, nous devons laisser la moitié du disque vide - également nécessaire. Mais généralement, toutes ces hypothèses sont purement théoriques. Parce que si nous décidons d'ajouter des emplacements à la section existante, la façon la plus simple de le faire est avec cette configuration. Et la facilité d'administration l'emporte tellement que nous nous dirigeons délibérément vers cette configuration.

Et la commodité est que si vous souhaitez développer la section de données, vous ajoutez simplement de l'espace à la section virtuelle, puis développez le groupe avec vgextend et c'est tout! Dans de rares cas, quelque chose d'autre peut être requis, mais au moins vous n'avez pas à étendre au début celui logique, ce qui est déjà bien. Et puis, pour étendre ce volume lui-même, il est recommandé de supprimer celui existant au début, puis d'en créer un nouveau en haut ... Ce qui n'est pas très joli et ne peut pas être fait en direct, et l'expansion selon le scénario que j'ai spécifié peut être effectuée à la volée sans même démonter la partition.

Au total, nous créons un volume physique, puis un groupe de volumes, y compris celui-ci puis une section pour notre serveur:

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

Ici, au lieu de la lettre majuscule "L" (et de la taille en Go), vous pouvez en spécifier une petite puis indiquer la taille relative au lieu de la taille absolue, par exemple, pour utiliser la moitié de l'espace actuellement disponible dans le groupe de volumes, vous devez spécifier "-l + 50% FREE"

Et la dernière commande formate la partition dans le système de fichiers ext4 (qui jusqu'à présent, dans ma pratique, montre la plus grande stabilité au cas où tout casse, donc je le préfère).

Montez maintenant la partition au bon endroit. Pour ce faire, ajoutez la ligne correcte à / etc / fstab:

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

Et on tape

 mount /var/www 

Si une erreur apparaît - nous sonnons l'alarme! Parce que cela signifie que nous avons une erreur dans / etc / fstab. Et qu'au prochain redémarrage, nous aurons de très gros problèmes. Le système peut ne pas démarrer du tout, ce qui est souvent très triste pour les services cloud. Par conséquent, vous devez soit corriger d'urgence la dernière ligne ajoutée, soit la supprimer complètement! C'est pourquoi nous n'avons pas commencé à écrire la commande de montage manuellement - alors nous n'aurions pas eu une excellente occasion de vérifier la configuration des appareils directs.

Maintenant, nous mettons en fait tout ce que nous voulions et ouvrons les ports sous le Web:

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

En option, vous pouvez également mettre la base de données ici, mais personnellement, j'essaie de la garder séparée du serveur Web. Bien que la garder proche soit plus rapide, oui. La vitesse des adaptateurs réseau virtuels est généralement de l'ordre du gigabit et lorsque vous travaillez sur la même machine, l'accès se produit presque instantanément. Mais moins sûr. Ici pour qui est le plus important.

Ajoutez maintenant le paramètre au fichier de configuration (créez une nouvelle idéologie CentOS moderne comme celle-ci)

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

Redémarrez le serveur.
Dans les commentaires, j'ai été réprimandé pour vous avoir conseillé de désactiver SeLinux, donc je vais le réparer et écrire sur le fait qu'après cela, vous devez vous rappeler de configurer SeLinux.
En fait, faites du profit! :)

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


All Articles