Source compile Apache2.4 (httpd 2.4.43) + PHP7.4 sous Linux pour construire un serveur Web --2 introduction PHP

Hypothèses et préparatifs

Article sur la construction du serveur Linux

Dernière fois a construit Apache httpd 2.4.43 sur un serveur Web par compilation source, mais cette fois, en continuant de la fois précédente, l'épine dorsale du serveur d'application Web dans Apache Introduisez PHP 7.4 par compilation source (⑅ • ᴗ • ⑅)

environnement

--Programme serveur Web: Apache 2.4.43 + PHP 7.4.6 (compilation source) --Client: Windows10 Pro

supposition

--Utilisateur installé en tant que root (dans ma vérification, il s'agit d'un compte administrateur appelé admin, et il est traité par sudo à partir de là)

Conditions du serveur

adresse IP

Fonctions et versions pour télécharger et installer individuellement les packages (à partir de juin 2020)

Les autres packages requis sont installés à l'aide des commandes de package standard de la distribution (dnf, apt, etc.) et n'ont pas besoin d'être téléchargés individuellement.

Pour le téléchargement, vous pouvez accéder au site officiel, le télécharger à partir de là et le transférer par FTP, ou vous pouvez l'obtenir avec wget si vous connaissez l'URL du fichier à télécharger, mais la méthode d'acquisition est omise.

Procédure de travail

Installation de PHP

Introduction des bibliothèques requises pour la compilation des sources PHP

CentOS8.1


# dnf -y install libxml2 libxml2-devel sqlite-devel
# dnf -y install oniguruma-devel-6.8.2-1.el8.x86_64.rpm

openSUSE15.1


# zypper -n install libxml2-tools libxml2-devel sqlite3-devel oniguruma-devel

Jusqu'à PHP7.3, il était possible d'installer pour gérer des chaînes de caractères multi-octets sans utiliser SQLite et la bibliothèque de voiture de démon, mais en PHP7.4, il est devenu obligatoire pour la compilation des sources.

Pour CentOS 8.1 uniquement, la bibliothèque de voiture démon (oniguruma-devel-6.8.2-1.el8.x86_64.rpm) n'existe pas dans le package par défaut, je l'ai donc apportée à partir de la page de téléchargement du package CentOS.

À partir de juin 2020: http://mirror.centos.org/centos/8/PowerTools/x86_64/os/Packages/oniguruma-devel-6.8.2-1.el8.x86_64.rpm

Compilation des sources PHP

La compilation prendra environ 40 minutes. Comme il est plus grand qu'Apache, il peut être préférable de faire une pause avec une tasse de café pendant la compilation (\ * ˘︶˘ \ *) ...: \ * ♡

# cd [PHP 7.4.Répertoire où se trouvent 6 fichiers d'archive]
# tar xvzf php-7.4.6.tar.gz
# cd php-7.4.6/
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysqli --with-pdo-mysql --enable-mbregex --enable-mbstring
# make
# make test

--MySQL active PDO

«Make» et «make test» sont des commandes qui prennent du temps. S'il n'y a pas d'erreurs en cours de route, la compilation est terminée. De plus, quand je l'ai testé avec make test sur CentOS 8.1, il n'y avait pas de bugs (๑ ・ ∞ ・ ๑)… Il est peut-être compatible avec CentOS 8.1. php_test_fail.png

Installation de PHP

Installez lorsque la compilation est terminée.

# make install

Installing PHP SAPI module:       apache2handler
/usr/local/apache2/build/instdso.sh SH_LIBTOOL='/opt/apr-1.7.0/build-1/libtool' libphp7.la /usr/local/apache2/modules
/opt/apr-1.7.0/build-1/libtool --mode=install install libphp7.la /usr/local/apache2/modules/
libtool: install: install .libs/libphp7.so /usr/local/apache2/modules/libphp7.so
libtool: install: install .libs/libphp7.lai /usr/local/apache2/modules/libphp7.la
libtool: warning: remember to run 'libtool --finish /home/admin/php-7.4.6/libs'
chmod 755 /usr/local/apache2/modules/libphp7.so
[activating module `php7' in /usr/local/apache2/conf/httpd.conf]
Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-zts-20190902/
Installing PHP CLI binary:        /usr/local/bin/
Installing PHP CLI man page:      /usr/local/php/man/man1/
Installing phpdbg binary:         /usr/local/bin/
Installing phpdbg man page:       /usr/local/php/man/man1/
Installing PHP CGI binary:        /usr/local/bin/
Installing PHP CGI man page:      /usr/local/php/man/man1/
Installing build environment:     /usr/local/lib/php/build/
Installing header files:          /usr/local/include/php/
Installing helper programs:       /usr/local/bin/
  program: phpize
  program: php-config
Installing man pages:             /usr/local/php/man/man1/
  page: phpize.1
  page: php-config.1
/home/admin/php-7.4.6/build/shtool install -c ext/phar/phar.phar /usr/local/bin
ln -s -f phar.phar /usr/local/bin/phar
Installing PDO headers:           /usr/local/include/php/ext/pdo/

Certaines des bibliothèques PHP sont placées à plusieurs endroits selon le but, comme "/ usr / local / include / php /" et "/ usr / local / lib / php /". Dans le cas d'OpenSUSE 15.1, certains se trouvent dans "/ usr / local / lib64 / php /". De plus, à ce stade, ** les DLL PHP (bibliothèques de liens dynamiques, qui correspondent à des applications d'extension externes) sont automatiquement déployées dans le dossier Apache **.

Ensuite, faites une copie du fichier de préférences PHP. Tout d'abord, copiez php.ini dans le dossier de la bibliothèque PHP / usr / local / lib /.

# cp php.ini-development /usr/local/lib/php.ini
# ls -l /usr/local/lib
Total 328
-rw-r--r--1 racine racine 144402 24 juin 12:34 libz.a
lrwxrwxrwx 1 racine racine 14 24 juin 12:34 libz.so -> libz.so.1.2.11
lrwxrwxrwx 1 racine racine 14 24 juin 12:34 libz.so.1 -> libz.so.1.2.11
-rwxr-xr-x 1 racine racine 113656 24 juin 12:34 libz.so.1.2.11
drwxr-xr-x 4 racine racine 37 24 juin 16:19 php
-rw-r--r--1 racine racine 72278 24 juin 16:21 php.ini
drwxr-xr-x 2 racine racine 21 24 juin 12:34 pkgconfig

Paramètres côté Apache

Je dois rendre le fichier PHP reconnaissable par Apache, alors modifiez-le. La DLL PHP est automatiquement écrite dans httpd.conf lorsque PHP est installé, il n'est donc pas nécessaire de l'ajouter. Tout ce que vous avez à faire du côté httpd.conf est qu'Apache reconnaisse le type PHP MIME.

# vi /usr/local/apache2/conf/httpd.conf

/usr/local/apache2/conf/httpd.conf


…
<IfModule dir_module>
    DirectoryIndex index.html ← 「index."Php" ajouté
</IfModule>
…
<IfModule mime_module>
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    …
    AddType application/x-httpd-php .php ← Ajouter cette ligne
</IfModule>
…

Préférences PHP

Modifiez le code de caractère PHP et les paramètres de la bibliothèque de référence.

Lorsque PHP est compilé et installé, le répertoire de stockage de php.ini diffère selon la distribution. ** OpenSUSE uniquement, PHP est inclus dans / usr / local / lib64 / **, donc la différence dans le dossier de la bibliothèque "lib" prête à confusion

CentOS8.1. Ubuntu20.04


# vi /usr/local/lib/php.ini

openSUSE15.1


# vi /usr/local/lib64/php.ini

php.ini


#Le contenu étant long, seuls ceux qui ont été partiellement modifiés et ceux qui ont été modifiés sont répertoriés. point-virgule ";"Est retiré. ";Il est décrit avec la ligne que vous venez de supprimer
output_buffering = On
default_charset = "UTF-8"
 [CentOS 8.1. Ubuntu 20.04] include_path = ".:/usr/local/include/php:/usr/local/lib/php"
 [openSUSE 15.1] include_path = ".:/usr/local/include/php:/usr/local/lib64/php"
extension_dir = "/usr/local/include/php/ext"
date.timezone = Asia/Tokyo
mbstring.language = Japanese
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8, SJIS, EUC-JP, JIS, ASCII
mbstring.substitute_character = none

Vérification du fonctionnement PHP

Page de confirmation PHP

Tout d'abord, créez une page PHP pour confirmation.

# vi /usr/local/apache2/htdocs/phpi.php

phpi.php


<?php phpinfo(); ?>

Pourquoi placer les fichiers PHP dans / usr / local / apache2 / htdocs /? ?? Cependant, lorsqu'Apache est installé par compilation source, le dossier de stockage par défaut pour les données de page Web est "/ usr / local / apache2 / htdocs /". Eh bien, vous pouvez changer l'emplacement de stockage dans httpd.conf, mais cette fois je l'omettrai.

Redémarrez Apache

# systemctl stop httpd
# systemctl start httpd
# systemctl status httpd

Si vous ne redémarrez pas, Apache ne fonctionnera pas avec le module PHP chargé, alors arrêtez-le et redémarrez-le. Après cela, assurez-vous qu'il est démarré avec status. phpinfo.png PHP a été reconnu correctement! !! (\ * ´꒳` \ *)

pdo.png Je reconnais correctement l'AOP. Sinon, vous ne pourrez pas utiliser MySQL et SQLite ... (´ • ̥ ̫ • ̥ `)

la prochaine fois

Introduisez MySQL pour rendre la base de données accessible au serveur d'applications Web de PHP

Recommended Posts

Source compile Apache2.4 (httpd 2.4.43) + PHP7.4 sous Linux pour construire un serveur Web --2 introduction PHP
Source compile Apache2.4 (httpd 2.4.43) + PHP7.4 sous Linux pour construire un serveur Web --3 MySQL 8.0 introduction
Source compilez Apache2.4 + PHP7.4 avec Raspberry Pi et construisez un serveur Web --2 introduction PHP
Source compilez Apache2.4 + PHP7.4 avec Raspberry Pi et créez un serveur Web ―― 1. Introduction à Apache
Compilez Apache2.4 + PHP7.4 avec Raspberry Pi et construisez un serveur Web --3. Utilisez MySQL
Créer un serveur HTTP Apache et Wildfly sur Oracle Linux 8
Construisez un serveur WebDAV simple sur Linux
Construire un serveur Samba sur Arch Linux
Créez un environnement CentOS Linux 8 avec Docker et démarrez Apache HTTP Server
Créez des serveurs sur Linux et des réseaux locaux avec Raspberry Pi NextCloud et le partage de bureau
[Introduction à AWS] Mémorandum de création d'un serveur Web sur AWS
Créez un environnement LAMP avec Vagrant (Linux + Apache + MySQL + PHP)
Construction de serveur Web Linux (Ubuntu et Apache)
Exécutez un serveur Linux avec GCP
Construire un serveur de cache Pypi sur QNAP
[UE4] Construire DedicatedServer sous Windows et Linux
Créer un serveur NFS sur Arch Linux
Installer et configurer le serveur TigerVNC sous Linux
Démarrez un serveur Web en utilisant Bottle et Flask (j'ai également essayé d'utiliser Apache)
Construisez Linux sur un environnement Windows. Étapes pour installer Laradock et migrer
Installez Python3 et Django sur Amazon Linux (EC2) et exécutez le serveur Web
Mesures de sécurité du serveur Web efficaces et simples «Linux»
Lancer un serveur Web avec Python et Flask
Intégrons Django et apache (httpd) sur Mac! !!
Exécutez l'application flask sur Cloud 9 et Apache Httpd
Spécifiez le volume sous Linux et jouez le son
[Linux] [module de noyau] Construire et charger un module de noyau chargeable simple
Le débutant de la CTF a tenté de créer un serveur problématique (Web) [Problème]
Exécuter une commande sur le serveur Web et afficher le résultat
Compilez et installez MySQL-python pour python2.7 sur Amazon Linux
[Linux] Créez un auto-certificat avec Docker et apache
Comment démarrer un serveur WEB simple qui peut exécuter des cgi de php et python
Créez un serveur Web API à une vitesse explosive en utilisant HUG
Configurer un serveur Web avec CentOS7 + Anaconda + Django + Apache
Comment intégrer Apache httpd 2.4 et Tomcat 9 sur Cent OS 8
Créer un environnement Python et transférer des données vers le serveur
Créez un serveur API Web ultra-rapide avec Falcon
Créez un environnement python sur CentOS 7.7 pour votre serveur domestique