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

Avant-propos

Cela fait 2 jours depuis la sortie d'une nouvelle version du système d'exploitation CentOS, à savoir CentOS 8. Et jusqu'à présent, il y a pas mal d'articles sur Internet sur la façon dont les choses s'y déroulent, j'ai donc décidé de combler cette lacune. De plus, je vais vous expliquer non seulement comment installer cette paire de programmes, mais également comment je vois généralement l'installation de Linux dans un environnement virtuel dans le monde moderne pour des tâches typiques, notamment le partitionnement de disques, etc.

Mais au début, je voudrais expliquer brièvement pourquoi il vaut la peine de passer à cette version de toutes les précédentes, et il y a deux raisons à cela :

  1. php7! Dans la version précédente de CentOS, le php5.4 « Orthodoxe » était installé...

    D'accord, pour être un peu plus sérieux, de nombreux packages sont passés en masse à travers plusieurs versions. Nous (fans des systèmes d'exploitation 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 pointeront plus du doigt, enfin... du moins pendant un moment ;).

  2. Transition de miam à dnf. La principale différence est qu'il est désormais officiellement pris en charge de travailler avec plusieurs versions de packages à la fois. En plein huit ans, je n'ai jamais trouvé cela utile, mais cela semble prometteur.

Créer une machine virtuelle

Il existe différents hyperviseurs et je n'ai pas pour objectif d'adapter le lecteur à un hyperviseur en particulier, je vais vous parler des principes généraux.

Mémoire

Tout d'abord... Pour installer un système CentOS à partir de 7 c'est sûr, et à mon avis c'était aussi le cas en 6 (« mais ce n'est pas sûr »), il vous faut minimum 2 Go de RAM. Par conséquent, je vous conseille d’en donner d’abord autant.

Mais au contraire, après l’installation, la taille de la mémoire peut être réduite. A 1 Go, le système nu fonctionne plutôt bien, j'ai vérifié.

disque

Pour une installation normale, vous devez créer un disque virtuel d'une capacité de 20 à 30 Go. C'est suffisant pour le système. Et un deuxième disque pour les données. Il peut être ajouté aussi bien au stade de la création d'une machine virtuelle qu'après. Je l'ajoute généralement plus tard.

processeur

Sur un cœur, le système nu ne ralentit pas. Et comme les ressources sont librement évolutives, je ne vois pas l'intérêt d'en donner plus au stade de l'installation (à moins de connaître parfaitement les exigences et d'avoir la flemme de rentrer dans le configurateur)

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

L'installation proprement dite

Alors... Lançons le programme d'installation... Personnellement, j'installe de tels services depuis longtemps uniquement sous forme de machines virtuelles, je ne décrirai donc pas toutes sortes d'enregistrements de distribution sur un lecteur flash - je monte simplement l'ISO sous forme de CD dans mon hyperviseur préféré, téléchargez et c'est parti.

L'installation de base est assez typique, je m'attarderai seulement sur quelques points.

Sélection de la source

Depuis la sortie de la huitième version, le miroir de Yandex traîne depuis des jours. Eh bien, c'est-à-dire qu'il augmente périodiquement, puis recommence à afficher une erreur. Je suis sûr que cela est dû à une charge excessive sur le service. Ainsi, pour indiquer la source, j'ai dû personnellement, au lieu de saisir l'adresse habituelle, me rendre ici, sélectionnez le miroir que j'aime là-bas et entrez manuellement l'adresse dans la fenêtre du programme d'installation. Il est important de rappeler ici que vous devez spécifier le chemin d'accès au dossier où se trouve le répertoire. repodatage. Par exemple, miroir.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Partitionnement de disque

Cette question est plutôt religieuse à mon avis. Chaque administrateur a sa propre position sur cette question. Mais je partagerai quand même mon point de vue sur la question.

Oui, en principe, vous pouvez allouer tout l'espace à la racine et cela fonctionnera, le plus souvent même assez bien. Pourquoi alors clôturer un jardin avec différentes sections ? — À mon avis, il y a deux raisons principales à cela : les quotas et la portabilité.

Par exemple, si quelque chose ne va pas et que des erreurs se produisent sur la partition de données principale, vous souhaitez pouvoir démarrer le système et effectuer des mesures de réanimation. Par conséquent, j’attribue personnellement une partition distincte pour /boot. Il existe un noyau et un chargeur de démarrage. Habituellement, 500 mégaoctets suffisent, mais dans de rares cas, davantage peut être nécessaire, et étant donné que nous sommes déjà habitués à mesurer l'espace en téraoctets, j'alloue 2 Go pour cette section. Et la chose importante ici est que cela ne peut pas être fait avec 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 aucun intérêt à le consacrer à une partition distincte - dans les systèmes modernes il est nettoyé automatiquement, donc il n'est pas rempli. J'alloue donc 8 Go pour la racine.

Échanger... Dans l'ensemble, cela présente peu d'utilité pratique. Si vous commencez à utiliser le swap sur votre serveur, aujourd'hui, dans le monde réel, cela signifie uniquement que le serveur doit ajouter plus de RAM. Sinon, des problèmes de performances sont garantis (ou certains programmes « fuient » la mémoire). Par conséquent, cette section est nécessaire uniquement à des fins de diagnostic. Par conséquent, 2 Go est un excellent chiffre. Oui, quelle que soit la quantité de mémoire disponible sur le serveur. Oui, j'ai lu tous ces articles où il est écrit sur le rapport entre le volume de mémoire et le volume d'échange... À mon humble avis, ils sont obsolètes. En 10 ans de pratique, je n’en ai jamais eu besoin. Il y a 15 ans, je les utilisais, oui.

À mon humble avis, chacun peut décider lui-même d'allouer /home dans une partition distincte. Si quelqu'un sur le serveur utilise activement ce répertoire, il est préférable de le sélectionner. S’il n’y a personne, ce n’est pas nécessaire.

Ensuite, /var. À mon avis, il faut absolument le souligner. Pour commencer, vous pouvez vous limiter à 4 Go, et voir comment ça 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 l'ajouter. Et vous devez généralement l'ajouter lorsque trop de journaux commencent à y affluer. Mais je n’ai jamais pu prédire ce chiffre à l’avance, donc je commence avec 2 Go puis je regarde.

L'espace non alloué restera libre dans le groupe de volumes et pourra toujours être utilisé ultérieurement.

LVM

tous Il est logique de créer des partitions autres que /boot dans LVM. Oui, y compris l'échange. Oui, selon tous les conseils, le swap doit être au début du disque, mais dans le cas de LVM, son emplacement ne peut en principe pas être déterminé. Mais comme je l'ai écrit ci-dessus, votre système ne devrait pas utilisez le swap du tout. Par conséquent, peu importe où il se trouve. Eh bien, nous ne vivons pas en 95, 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 combinés en groupes, et chaque volume physique ne peut appartenir qu'à un seul groupe, et un groupe peut être situé sur plusieurs volumes physiques à la fois.
Et les volumes logiques sont chacun dans un groupe.

Mais... Bon sang, c'est à nouveau le 21ème siècle. Et les serveurs sont virtuels. Cela n’a aucun sens de leur appliquer les mêmes mécanismes qui ont été appliqués aux mécanismes physiques. Et pour les virtuels, il est important d'avoir les données séparément du système ! Ceci est très important, notamment pour pouvoir basculer rapidement des données vers une autre machine virtuelle (par exemple, lors du passage à un nouveau système d'exploitation) et en général pour toutes sortes de goodies utiles (sauvegardes séparées par partitions à l'aide d'outils d'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 division 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 ici que se termine la configuration. Et s’il y en a deux, ne marquez pas encore le deuxième.

Commençons l'installation.

Post-installation

Ainsi, le système nouvellement installé a finalement démarré. La première chose que vous devez vérifier est Internet.

ping ya.ru

Y a-t-il une réponse ? - Super, appuyez sur Ctrl-C.
Sinon, allez créer un réseau, il n’y a pas de vie sans cela, mais ce n’est pas le sujet de mon article.

Maintenant si on n'est pas encore sous root, allez sous root, car en tapant est le nombre de commandes avec sudo m'a personnellement brisé (et que les administrateurs paranoïaques me pardonnent) :

sudo -i

Maintenant, la première chose que nous faisons est de taper

dnf -y update

Et si vous lisez cet article en 2019, il ne se passera probablement rien, mais cela valait la peine d'essayer.

Configurons maintenant le disque restant

Disons que la partition du système était xvda, alors le disque de données sera xvdb. D'ACCORD.

La plupart des conseils commenceront par « Exécutez fdisk et créez une partition… »

Alors ceci est incorrectement!

Je le répète car c'est tellement important ! Dans ce cas, pour travailler avec LVM, qui occupe tout un disque virtuel, créer des partitions dessus est nuisible ! Chaque mot de cette phrase est important. Si nous travaillons sans LVM, nous devons le faire. Si nous avons un système et des données sur le disque, nous en avons besoin. Si, pour une raison quelconque, nous devons laisser la moitié du disque vide, nous le devrions également. Mais généralement, toutes ces hypothèses sont purement théoriques. Parce que si nous décidons d'ajouter de l'espace à une partition existante, le moyen le plus simple de le faire est d'utiliser cette configuration. Et la facilité d’administration l’emporte tellement sur bien d’autres choses que nous nous dirigeons délibérément vers cette configuration.

Et la commodité est que si vous souhaitez étendre la partition de données, il vous suffit d'ajouter des espaces à la partition virtuelle, puis d'étendre le groupe à l'aide de vgextend et c'est tout ! Dans de rares cas, quelque chose d’autre peut être nécessaire, mais au moins vous n’aurez pas à étendre le volume logique au début, ce qui est déjà sympa. Sinon, pour étendre ce même volume, ils recommandent d'abord de supprimer celui existant, puis d'en créer un nouveau par dessus... Ce qui n'a pas l'air très joli et ne peut pas être fait en direct, mais une expansion selon le scénario que j'ai indiqué peut être réalisé « à la volée » sans même démonter la cloison.

Nous créons donc un volume physique, puis un groupe de volumes qui l'inclut, puis une partition 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 d'une lettre majuscule « L » (et la taille en Go), vous pouvez en spécifier une petite, puis au lieu d'une taille absolue, en spécifier une relative, par exemple, pour utiliser la moitié de l'espace actuellement libre dans un 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, d'après mon expérience, montre la plus grande stabilité en cas de panne, donc je la préfère).

Maintenant, nous montons la partition au bon endroit. Pour ce faire, ajoutez la bonne ligne dans /etc/fstab :

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

Et nous composons

mount /var/www

Si une erreur survient, sonnez 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 dommage pour les services cloud. Il faut donc soit corriger en urgence la dernière ligne ajoutée, soit la supprimer complètement ! C'est pourquoi nous n'avons pas écrit la commande mount manuellement - nous n'aurions alors pas eu une si excellente opportunité de vérifier la configuration tout de suite.

Maintenant, nous installons tout ce que nous voulions et ouvrons les ports pour 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

Si vous le souhaitez, vous pouvez également mettre une base de données ici, mais personnellement, j'essaie de la séparer du serveur Web. Même si la garder près d'elle est plus rapide, oui. La vitesse des adaptateurs réseau virtuels est généralement d'environ un gigabit et lorsque vous travaillez sur la même machine, les appels se produisent presque instantanément. Mais c'est moins sûr. Qu'est-ce qui est le plus important pour qui ?

Maintenant, nous ajoutons le paramètre au fichier de configuration (nous en créons un nouveau, l'idéologie moderne de CentOS est comme ça)

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

Nous redémarrons le serveur.
Dans les commentaires, j'ai été réprimandé pour m'avoir conseillé de désactiver SeLinux, je vais donc me corriger et écrire sur le fait qu'après cela, vous devez vous rappeler de configurer SeLinux.
En fait, profitez-en ! 🙂

Source: habr.com

Ajouter un commentaire