CentOS8 + nginx1.18 + php-fpm7.4 + MariaDB10.5 + Mémo de préparation de l'environnement de développement CodeIgniter4

Aperçu

Depuis le 27 septembre 2020, nous avons construit un environnement de développement qui adopte chaque environnement décrit dans [Informations environnementales (version, etc.)](# Informations environnementales (version, etc.)), donc une note lors de la préparation de l'environnement. Laissez comme.

Informations environnementales (version, etc.)

Mémo de divers chemins de fichiers de configuration

environnement Chemin du fichier
nginx /etc/nginx/conf.d/default.conf
nginx /etc/nginx/nginx.conf
php /etc/php.ini
php-fpm /etc/php-fpm.d/www.conf
MariaDB /etc/my.cnf.d/server.cnf
MariaDB /etc/my.cnf.d/client.conf

Autres paramètres de CentOS

# timedatectl set-timezone Asia/Tokyo
# localectl set-locale LANG=ja_JP.UTF-8
# source /etc/locale.conf

# dnf install -y langpacks-ja
# dnf install -y vim
# dnf install -y elfutils-libelf-devel
# dnf -y update

# vim /etc/selinux/config

SELINUX=désactiver ← régler pour désactiver

Configuration de Nginx

Installez Nginx avec dnf

# vim /etc/yum.repos.d/nginx.repo

ini:/etc/yum.repos.d/nginx.repo


[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1 
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Sur le site suivant, la procédure d'installation a été décrite avec la définition suivante, mais contrairement aux paramètres ci-dessus, il semble qu'une version légèrement plus ancienne ait été mise en place. (Ci-dessus: 1.18 à partir du 1.14 2020.09.26 ci-dessous) https://www.nginx.com/resources/wiki/start/topics/tutorials/install/

nginx.repo


[nginx]
name=nginx repo
baseurl=https://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
# dnf -y install nginx

Confirmation de la fin de la configuration de Nginx

# nginx -v

nginx version: nginx/1.18.0

# systemctl enable nginx
# systemctl start nginx

Si vous accédez à ce qui suit et que l'écran nginx (Bienvenue dans nginx!) S'affiche, c'est OK. http://192.168.33.10

configuration de php-fpm 7.4

Ajouter un référentiel

Le référentiel CentOS8 standard a une version de php-fpm 7.2.24 à partir du 26.09.2020. Puisque la version 7.4 est la dernière version, j'aimerais utiliser la version 7.4. Alors, configurez un référentiel supplémentaire et configurez-le à partir de là.

# dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
# dnf module enable php:remi-7.4

Installez php-fpm7.4

Puisqu'il est nécessaire de le modifier de manière appropriée en fonction des exigences de développement, reportez-vous au site suivant et installez les modules d'extension PHP nécessaires. https://www.php.net/manual/ja/extensions.php

# dnf module install php:remi-7.4

Confirmation finale de l'expiration des métadonnées: 0:32:Elle s'est tenue il y a 40 heures le 26 septembre 2020 à 19:39:36.
La dépendance a été résolue.
========================================================================================================================================
Taille du référentiel de version d'architecture de package
========================================================================================================================================
group/Installation du package de module:
 php-cli                       x86_64              7.4.10-1.el8.remi                                    remi-modular              4.6 M
 php-common                    x86_64              7.4.10-1.el8.remi                                    remi-modular              1.2 M
 php-fpm                       x86_64              7.4.10-1.el8.remi                                    remi-modular              1.6 M
 php-mbstring                  x86_64              7.4.10-1.el8.remi                                    remi-modular              527 k
 php-xml                       x86_64              7.4.10-1.el8.remi                                    remi-modular              214 k
Installation des dépendances en cours:
 httpd-filesystem              noarch              2.4.37-21.module_el8.2.0+494+1df74eae                AppStream                  36 k
 oniguruma5php                 x86_64              6.9.5+rev1-2.el8.remi                                remi-safe                 206 k
 php-json                      x86_64              7.4.10-1.el8.remi                                    remi-modular               75 k
Installer des dépendances faibles:
 nginx-filesystem              noarch              1:1.14.1-9.module_el8.0.0+184+e34fea82               AppStream                  24 k
Installation du profil de module:
 php/common                                                                                                                            
Flux de module activé:
 httpd                                             2.4                                                                                 
 nginx                                             1.14                                                                                
 php                                               remi-7.4                                                                            

Aperçu de la transaction
========================================================================================================================================
Installation 9 paquets

Confirmation de l'achèvement de la configuration de php-fpm

# php -v

PHP 7.4.10 (cli) (built: Sep  1 2020 13:58:08) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

# php-fpm -v
PHP 7.4.10 (fpm-fcgi) (built: Sep  1 2020 13:58:08)
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

Vérifiez l'emplacement du fichier php.ini au cas où

# php -i | grep php.ini
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

Modifier les paramètres de php.ini

Changer le contenu de php.ini

/etc/php.ini


;Code de caractère par défaut
default_charset = UTF-8
;X qui renvoie les informations de version de PHP à la réponse HTTP-Powered-Ne pas inclure par en-tête
expose_php = Off

;Limite d'utilisation de la mémoire
memory_limit = 256M
;Taille maximale des données de demande POST
post_max_size = 128M
;Taille maximale du fichier téléchargé lors du téléchargement du fichier
upload_max_filesize = 100M

;Journal des erreurs
error_log = /var/log/php_error.log
;Erreur de sortie
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
;Affichage d'erreur (car c'est pratique pendant le développement)
display_errors = On
display_startup_errors = On

[Date]
date.timezone = Asia/Tokyo

[mbstring]
;langue par défaut de mbstring
mbstring.language = Japanese
;Ne convertissez pas automatiquement le codage des caractères d'entrée HTTP en codage des caractères internes
mbstring.encoding_translation = Off
;Priorité lors de la détection automatique du code de caractère
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII

Paramètres de liaison de php-fpm et nginx

# cp -p /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.org
# vim /etc/nginx/conf.d/default.conf

config:/etc/nginx/conf.d/default.conf


server {
  listen 80;
  server_name localhost;

  #Définition de la racine du document (définissez le même emplacement que la racine du document standard tel qu'apache)
  root /var/www/html;
  index index.php index.html index.htm;

  location / {
    #Vérifie l'existence des fichiers et des répertoires dans l'ordre spécifié et renvoie le premier trouvé.
    #Si aucun n'est présent, le chemin passe au dernier chemin spécifié.
    try_files $uri $uri/ /index.php$is_args$args;
  }

  location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    #Nginx sur un serveur+php-Lors de l'exécution de fpm, les sockets Unix fonctionnent plus rapidement.
    # www.L'emplacement de la chaussette est/etc/nginx/conf.d/php-fpm.Correspondre aux paramètres de configuration.
    fastcgi_pass   unix:/run/php-fpm/www.sock;
    fastcgi_index  index.php;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param  PATH_INFO $fastcgi_path_info;
  }

  access_log /var/log/nginx/access.log;
  error_log  /var/log/nginx/error.log;
}

Modifiez les paramètres pour que l'utilisateur vagrant exécute à la fois nginx et php-fpm.

/etc/nginx/nginx.conf


#Changé ce qui suit en vagabond
user  vagrant;

conf:/etc/php-fpm.d/www.conf


#Changé ce qui suit en vagabond
user = vagrant
group = vagrant

#Décommenter et changer en vagabond
listen.owner = vagrant
listen.group = vagrant
listen.mode = 0660

# listen.propriétaire et écoute.Commentez ce qui suit pour spécifier le groupe
;listen.acl_users = apache,nginx

Redémarrez le service pour que les paramètres prennent effet

# systemctl restart php-fpm
# systemctl restart nginx

Opération confirmée avec phpinfo ()

Préparez un exemple de programme qui exécute phpinfo et vérifiez la coopération de nginx + php-fpm.

/var/www/html/index.php


<?php

phpinfo();

Si vous accédez à l'URL suivante et que le contenu de phpinfo () est affiché, le paramétrage pour lier nginx et php-fpm est terminé.

http://192.168.33.10/

Configuration de MariaDB

Ajouter un référentiel

MariaDB installée dans le référentiel CentOS8 est 10.3, et la dernière version est 10.5 pour le moment, donc j'aimerais également installer la dernière version.

# vim /etc/yum.repos.d/mariadb.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos8-amd64
module_hotfixes=1
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1


# dnf info MariaDB-server MariaDB-devel --disablerepo=* --enablerepo=mariadb

Puisque nous avons confirmé que le référentiel a été ajouté avec succès ci-dessus, nous allons effectivement l'installer.

Installez MariaDB avec dnf

# dnf instal MariaDB-server MariaDB-devel --disablerepo=* --enablerepo=mariadb

Erreur: 
problème: cannot install the best candidate for the job
  - nothing provides libaio.so.1()(64bit) needed by MariaDB-server-10.5.5-1.el8.x86_64
  - nothing provides libaio.so.1(LIBAIO_0.1)(64bit) needed by MariaDB-server-10.5.5-1.el8.x86_64
  - nothing provides libaio.so.1(LIBAIO_0.4)(64bit) needed by MariaDB-server-10.5.5-1.el8.x86_64
  - nothing provides lsof needed by MariaDB-server-10.5.5-1.el8.x86_64
  - nothing provides perl(DBI) needed by MariaDB-server-10.5.5-1.el8.x86_64
(Pour ignorer les packages non installables'--skip-broken'Ou essayez d'ajouter'--nobest'N'utilisez pas uniquement les meilleurs packages candidats)

J'obtiens une erreur. Il semble que la cause de l'erreur soit que libaio, lsof, perl-DBI soient nécessaires pour l'installation de MariaDB. Par conséquent, installez les trois correspondants.

# dnf install libaio
# dnf install lsof
# dnf install perl-DBI

J'ai installé les trois points, donc je vais réessayer.

# dnf install MariaDB-server MariaDB-devel --disablerepo=* --enablerepo=mariadb


Confirmation finale de l'expiration des métadonnées: 0:10:Elle s'est tenue il y a 24 heures le 27 septembre 2020 à 07:09:32.
Erreur: 
problème: package MariaDB-server-10.5.5-1.el8.x86_64 requires galera-4, but none of the providers can be installed
  - cannot install the best candidate for the job
  - nothing provides libboost_program_options.so.1.66.0()(64bit) needed by galera-4-26.4.3-1.rhel8.0.el8.x86_64
  - nothing provides libboost_program_options.so.1.66.0()(64bit) needed by galera-4-26.4.4-1.rhel8.0.el8.x86_64
  - nothing provides libboost_program_options.so.1.66.0()(64bit) needed by galera-4-26.4.5-1.el8.x86_64
  - nothing provides socat needed by galera-4-26.4.5-1.el8.x86_64
(Pour ignorer les packages non installables'--skip-broken'Ou essayez d'ajouter'--nobest'N'utilisez pas uniquement les meilleurs packages candidats)

C'est toujours inutile. Je me fâche quand il n'y a pas de libboost_program_options, alors installez boost-program-options.

# dnf install boost-program-options

Défiez d'être honnête pour la troisième fois J'ai pu démarrer l'installation avec succès.

# dnf install MariaDB-server MariaDB-devel --disablerepo=* --enablerepo=mariadb

Confirmer l'installation de MariaDB

# mysql -V

mariadb  Ver 15.1 Distrib 10.5.5-MariaDB, for Linux (x86_64) using readline 5.1

Paramètres de démarrage automatique de MariaDB

# systemctl start mariadb
# systemctl enable mariadb
# systemctl status mariadb

Paramétrage initial avec mysql_secure_installation

mysql_secure_installation


# mysql_secure_installation

#Entrez le mot de passe actuel du compte root de MariaDB?
Enter current password for root (enter for none): Enter

# unix_Passer à l'authentification à l'aide de socket?
# unix_socket est lorsque le nom d'utilisateur de connexion de CentOS et le nom d'utilisateur du côté MariaDB ont le même nom.
# ID/Un mécanisme pour s'authentifier sans utiliser PASS. (MariaDB 10.A-t-il été ajouté à partir de 4? )
Switch to unix_socket authentication [Y/n] : n

#Changer le mot de passe du compte root de MariaDB?
Change the root password? [Y/n] : Y
    New password: Hoge1234
    Re-enter new password: Hoge1234

#Supprimer les utilisateurs anonymes?
Remove anonymous users? [Y/n] Y

#Interdire la connexion avec un compte root MariaDB distant?
Disallow root login remotely? [Y/n] Y

#J'ai une base de données "test" accessible à tous, mais puis-je la supprimer?
Remove test database and access to it? [Y/n] Y

#Si vous rechargez la table des autorisations, toutes les modifications jusqu'à présent peuvent être répercutées immédiatement, mais le faites-vous?
Reload privilege tables now? [Y/n] Y

Vérifiez les paramètres initiaux de MariaDB

Comme le mot de passe du compte root MariaDB est défini dans les paramètres ci-dessus, assurez-vous que vous pouvez y accéder correctement avec ce mot de passe.

# mysql -u root -p
Enter password: Hoge1234

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 10.5.5-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.000 sec)

MariaDB [(none)]> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.001 sec)

OK.

Maintenant que MariaDB a été construite, il est temps de créer les utilisateurs et les bases de données à utiliser avec MariaDB. (Puisqu'il s'agit d'un environnement de développement distinct, vous pouvez utiliser tous les utilisateurs root, mais juste au cas où.)

Paramètres pour utiliser le japonais avec MariaDB sans problèmes

Pour gérer le japonais, changez le code de caractère en ʻutf8mb4`.

conf:/etc/my.cnf.d/server.cnf


[mariadb]
character-set-server = utf8mb4

conf:/etc/my.cnf.d/client.cnf


[client-mariadb]
default-character-set = utf8mb4

Assurez-vous qu'il est réglé sur ʻutf8mb4`.

# systemctl restart mariadb
# mysql -u root -p

MariaDB [(none)]> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.002 sec)

Création de bases de données et d'utilisateurs

Créer une base de données et créer un utilisateur

# mysql -u root -p

MariaDB [(none)]> create database yudb;

Création de l'utilisateur "yu" accessible depuis tous les hôtes
MariaDB [(none)]> create user yu;
MariaDB [(none)]> set password for yu@'%'=password('yupass');

MariaDB [(none)]> select user, host from mysql.user;
+-------------+-----------+
| User        | Host      |
+-------------+-----------+
| yu          | %         |
| mariadb.sys | localhost |
| mysql       | localhost |
| root        | localhost |
+-------------+-----------+
4 rows in set (0.004 sec)

Accorder des autorisations pour crud la base de données "yudb" lorsque l'utilisateur "yu" accède à partir de tous les hôtes
MariaDB [(none)]> grant select,insert,update,delete ON yudb.* TO yu@'%';

Refléter l'autorité
MariaDB [(none)]> flush privileges;

Test de connexion du programme PHP à MariaDB

Changez le programme de index.php pour vérifier le fonctionnement de l'accès à la base de données en utilisant MySQLi, et vérifiez la connexion à php-> MariaDB.

/var/www/html/index.php


<?php

$server = 'localhost';
$user = 'yu';
$pass = 'yupass';
$dbname = 'yudb';

$my = new MySQLi($server, $user, $pass, $dbname);
$my->set_charset('utf8mb4');
$sql = 'select now() as n from dual';
$result = $my->query($sql);
//Obtenez le contenu de la base de données
while($row = $result->fetch_assoc() ){
    var_dump($row);
}
//Fermer la connexion à la base de données
$my->close();

http://192.168.33.10/

Erreur fatale: Erreur non interceptée: Classe'MySQLi 'introuvable dans /var/www/html/index.php:8 Trace de la pile: # 0 {main} lancée dans /var/www/html/index.php sur la ligne 8 Et une erreur se produit.

C'est une erreur que l'extension PHP ne peut pas être trouvée car l'extension mysqli n'est pas installée. Par conséquent, installez-le avec la commande suivante.

# dnf -y install php-mysqlnd

http://192.168.33.10/ Si vous y accédez à nouveau, vous pouvez vérifier normalement le résultat de la connexion à MariaDB comme indiqué ci-dessous.

array(1) { ["n"]=> string(19) "2020-09-27 15:11:27" }

Préparation de l'environnement CodeIgniter

De la préparation du compositeur

Nous préparerons l'environnement de développement pour CodeIgniter. J'utiliserai le compositeur, alors préparez d'abord le compositeur.

# cd /usr/local/src
# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

#Le hachage suivant est le dernier: v1.10.C'est 13 choses.
#Https si la version cible est différente://getcomposer.org/download/Prière de se référer à.
# php -r "if (hash_file('sha384', 'composer-setup.php') === '795f976fe0ebd8b75f26a6dd68f78fd3453ce79f32ecb33e7fd087d39bfeb978342fb73ac986cd4f54edd0dc902601dc') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

# php composer-setup.php
# php -r "unlink('composer-setup.php');"
# mv composer.phar /usr/local/bin/composer
# composer -V
Composer version 1.10.13 2020-09-09 11:46:34

Créer un nouveau projet CodeIgniter4 avec composer

Créez un projet CodeIgniter4 à l'aide de composer.

# cd /var/www/html
# composer create-project codeigniter4/appstarter codeigniter4

Le problème suivant semble s'être produit, supprimez donc le projet codeigniter4 une fois créé, réinsérez les modules d'extension nécessaires et recréez le projet.

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - codeigniter4/framework v4.0.4 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - codeigniter4/framework v4.0.3 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - codeigniter4/framework v4.0.2 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - codeigniter4/framework v4.0.1 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - codeigniter4/framework 4.0.0 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - Installation request for codeigniter4/framework ^4 -> satisfiable by codeigniter4/framework[4.0.0, v4.0.1, v4.0.2, v4.0.3, v4.0.4].
# dnf install php-intl

Quand je lance à nouveau composer create-project, j'obtiens un avertissement, mais le problème a disparu, donc j'ai terminé.

http://192.168.33.10/codeigniter4/public/index.php

スクリーンショット 2020-09-27 15.52.39.png

Modifier les paramètres de racine de document nginx pour les projets codeigniter4

Sous {project-name} / public / semble être la racine du document de codeigniter4 installé par composer. Donc, changez la racine du document de nginx.

conf:/etc/nginx/conf.d/default.conf


root /var/www/html/codeigniter4/public;

Si vous redémarrez nginx après les modifications ci-dessus, vous pouvez accéder au projet codeigniter4 à l'URL suivante. http://192.168.33.10

Préférences CodeIgniter

Il existe un fichier de paramétrage des variables d'environnement appelé ʻenv, mais il ne peut pas être utilisé tel quel. Copiez-le dans un fichier nommé .env` et commencez à l'utiliser.

# cd /var/www/html/codeigniter4
# cp -p env .env

/var/www/html/codeigniter4/.env


#Paramètres de vérification des informations d'erreur pendant le développement
CI_ENVIRONMENT = development

# config.base de php_Celui qui a été défini dans l'URL
app.baseURL = 'http://192.168.33.10/'

#Informations de connexion à la base de données MySQL
database.default.hostname = localhost
database.default.database = yudb
database.default.username = yu
database.default.password = yupass
database.default.DBDriver = MySQLi
database.default.charset = utf8mb4

Recommended Posts

CentOS8 + nginx1.18 + php-fpm7.4 + MariaDB10.5 + Mémo de préparation de l'environnement de développement CodeIgniter4
Mémo de l'environnement de développement Java
[Eclipse Java] Mémo des paramètres de l'environnement de développement
Créez un environnement de développement sur AWS EC2 avec CentOS7 + Nginx + pm2 + Nuxt.js
[Note personnelle] L'environnement de développement Java est prêt
Construction de l'environnement CentOS8.2 (x86_64) + ruby2.5 + Rails5.2 + MariaDB (10.3.17)
Commande pour installer nginx / PHP7 / php-fpm sur CentOS7
[Memo] Créez facilement un environnement CentOS 8 avec Docker