Configurer PHP dans CentOS Linux

PHP est l'un des langages Web les plus prolifiques actuellement utilisés. L'installation d'une pile LAMP sur CentOS est quelque chose que chaque administrateur système devra effectuer, probablement le plus tôt possible.

Une pile LAMP traditionnelle se compose de (L) inux (A) pache (M) ySQL (P) HP.

Il y a trois composants principaux à une pile de LAMP sur CentOS -

  • Serveur Web
  • Plateforme / langage de développement Web
  • Serveur de base de données

Note- Le terme LAMP Stack peut également inclure les technologies suivantes: PostgreSQL, MariaDB, Perl, Python, Ruby, NGINX Webserver.

Pour ce tutoriel, nous nous en tiendrons à la pile LAMP traditionnelle de CentOS GNU Linux: serveur Web Apache, serveur de base de données MySQL et PHP.

Nous utiliserons en fait MariaDB. Les fichiers de configuration, les bases de données et les tables MySQL sont transparents pour MariaDB. MariaDB est maintenant incluse dans le référentiel CentOS standard au lieu de MySQL. Cela est dû aux limites des licences et de la conformité open-source, puisque Oracle a repris le développement de MySQL.

La première chose à faire est d'installer Apache.

[[email protected]]# yum install httpd
Loaded plugins: fastestmirror, langpacks
base
| 3.6 kB  00:00:00
extras
| 3.4 kB  00:00:00
updates
| 3.4 kB  00:00:00
extras/7/x86_64/primary_d
| 121 kB  00:00:00
Loading mirror speeds from cached hostfile
* base: mirror.sigmanet.com
* extras: linux.mirrors.es.net
* updates: mirror.eboundhost.com
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-45.el7.centos will be installed
--> Processing Dependency: httpd-tools = 2.4.6-45.el7.centos for package:
httpd-2.4.6-45.el7.centos.x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.4.645.el7.centos.x86_64
--> Running transaction check
---> Package httpd-tools.x86_64 0:2.4.6-45.el7.centos will be installed
---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed
--> Finished Dependency Resolution
Installed:
httpd.x86_64 0:2.4.6-45.el7.centos

Dependency Installed:
httpd-tools.x86_64 0:2.4.6-45.el7.centos
mailcap.noarch 0:2.1.41-2.el7

Complete!
[[email protected]]#

Configurons le service httpd .

[[email protected]]# systemctl start httpd && systemctl enable httpd

Maintenant, assurons-nous que le serveur Web est accessible via firewalld.

bash-3.2# nmap -sS -p 1-1024 -T 5  -sV 10.211.55.1 
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-28 02:00 MST 
Nmap scan report for centos.shared (10.211.55.1) 
Host is up (0.00054s latency). 
Not shown: 1022 filtered ports 
PORT   STATE SERVICE VERSION 
22/tcp open  ssh     OpenSSH 6.6.1 (protocol 2.0) 
80/tcp open  http    Apache httpd 2.4.6 ((CentOS))

Service detection performed. Please report any incorrect results at 
https://nmap.org/submit/ . 
Nmap done: 1 IP address (1 host up) scanned in 10.82 seconds bash-3.2#

Comme vous pouvez le voir par la sonde de service nmap, le serveur Web Apache écoute et répond aux demandes sur l'hôte CentOS.

Installer le serveur de base de données MySQL

[[email protected] rdc]# yum install mariadb-server.x86_64 && yum install mariadb-
devel.x86_64 && mariadb.x86_64 && mariadb-libs.x86_64

Nous installons les packages de référentiel suivants pour MariaDB -

mariadb-server.x86_64

Le package principal du démon MariaDB Server.

mariadb-devel.x86_64

Les fichiers doivent être compilés à partir de la source avec la compatibilité MySQL / MariaDB.

mariadb.x86_64

Utilitaires client MariaDB pour administrer MariaDB Server à partir de la ligne de commande.

mariadb-libs.x86_64

Bibliothèques communes pour MariaDB qui pourraient être nécessaires pour d'autres applications compilées avec le support MySQL / MariaDB.

Maintenant, commençons et activons le service MariaDB.

[[email protected]]# systemctl start mariadb 
[[email protected]]# systemctl enable  mariadb

Note- Contrairement à Apache, nous n'activerons pas les connexions à MariaDB via notre pare-feu basé sur l'hôte (firewalld). Lors de l'utilisation d'un serveur de base de données, il est considéré comme la meilleure pratique de sécurité d'autoriser uniquement les connexions de socket locales, sauf si l'accès distant au socket est spécifiquement nécessaire.

Assurons-nous que le serveur MariaDB accepte les connexions.

[[email protected]#] netstat -lnt 
Active Internet connections (only servers) 
Proto     Recv-Q     Send-Q     Local Address        Foreign Address      State       
tcp            0          0     0.0.0.0:3306         0.0.0.0:*            LISTEN      
tcp            0          0     0.0.0.0:111          0.0.0.0:*            LISTEN      
tcp            0          0     192.168.122.1:53     0.0.0.0:*            LISTEN      
tcp            0          0     0.0.0.0:22           0.0.0.0:*            LISTEN      
tcp            0          0     127.0.0.1:631        0.0.0.0:*            LISTEN      
tcp            0          0     127.0.0.1:25         0.0.0.0:*            LISTEN 
     
[[email protected] rdc]#

Comme nous pouvons le voir, MariaDB écoute sur le port 3306 tcp. Nous laisserons notre pare-feu basé sur l'hôte (firewalld) bloquant les connexions entrantes au port 3306.

Installer et configurer PHP

[[email protected]#]  yum install php.x86_64 && php-common.x86_64 && php-mysql.x86_64 
&& php-mysqlnd.x86_64 && php-pdo.x86_64 && php-soap.x86_64 && php-xml.x86_64

Je recommanderais d'installer les packages php suivants pour une compatibilité commune -

  • php-common.x86_64
  • php-mysql.x86_64
  • php-mysqlnd.x86_64
  • php-pdo.x86_64
  • php-soap.x86_64
  • php-xml.x86_64
[[email protected]]# yum install -y php-common.x86_64 php-mysql.x86_64 php-
mysqlnd.x86_64 php-pdo.x86_64 php-soap.x86_64 php-xml.x86_64

Ceci est notre simple fichier php situé dans la racine Web Apache de / var / www / html /

[[email protected]]# cat /var/www/html/index.php  
<html> 
   <head> 
      <title>PHP Test Page</title> 
   </head>
   
   <body> 
      PHP Install 
      <?php 
         echo "We are now running PHP on GNU Centos Linux!<br />" 
      ?> 
   </body> 
</html>

[[email protected]]#

Changeons le groupe propriétaire de notre page en l'utilisateur système sous lequel notre démon http s'exécute.

[[email protected]]# chgrp httpd /var/www/html/index.php && chmod g+rx /var/www/html/index.php
---

Lorsqu'il est demandé manuellement via ncat.

bash-3.2# ncat 10.211.55.1 80 
   GET / index.php 
   HTTP/1.1 200 OK 
   Date: Sat, 28 Jan 2017 12:06:02 GMT 
   Server: Apache/2.4.6 (CentOS) PHP/5.4.16 
   X-Powered-By: PHP/5.4.16 
   Content-Length: 137 
   Connection: close 
   Content-Type: text/html; charset=UTF-8
   
<html> 
   <head> 
      <title>PHP Test Page</title> 
   </head>
   
   <body> 
      PHP Install 
      We are now running PHP on GNU Centos Linux!<br />
   </body> 
</html>

bash-3.2#

PHP et LAMP sont des technologies de programmation Web très populaires. L'installation et la configuration de LAMP ne manqueront pas de figurer sur votre liste de besoins en tant qu'administrateur CentOS. Les packages CentOS faciles à utiliser ont nécessité beaucoup de travail pour compiler Apache, MySQL et PHP à partir du code source.