Table des matières

Introduction

Zend Server est un serveur d'application PHP de pointe qui comprend des runtimes PHP sécurisés et supportés ainsi que les outils éprouvés dont vous avez besoin pour automatiser et accélérer les déploiements, la surveillance et le débogage afin de vous permettre de vous améliorer.

Prérequis

Supported PHP Versions PHP 7.1

Supported Operating Systems Linux x86-64

Note:

  • RHEL / CentOS 7.x via RPM packages
  • Debian GNU/Linux 9.x via DEB packages
  • Ubuntu Linux 16.04 (LTS) and 18.04 (LTS) via DEB packages

Important:

  • Linux Architecture Support
    • 32-bit systems are not supported.

Supported Web Servers

Installation

On télécharge la version de Zend Server que nous souhaitons installer.

Dans notre cas la version 9.1. Une fois l'archive sur le server, on la décompresse.

[root@zend tmp]# tar xvzf ZendServer-9.1.10-RepositoryInstaller-linux.tar.gz 
ZendServer-RepositoryInstaller-linux/
ZendServer-RepositoryInstaller-linux/install_zs.sh
ZendServer-RepositoryInstaller-linux/zend.rpm_apache2.4.repo
ZendServer-RepositoryInstaller-linux/zend.deb_power8.repo
ZendServer-RepositoryInstaller-linux/zend.deb_apache2.4.repo
ZendServer-RepositoryInstaller-linux/zend.deb_ssl1.1.repo
ZendServer-RepositoryInstaller-linux/zend.deb_debian9.repo
ZendServer-RepositoryInstaller-linux/nginx/
ZendServer-RepositoryInstaller-linux/nginx/nginx.repo
ZendServer-RepositoryInstaller-linux/nginx/nginx.list
ZendServer-RepositoryInstaller-linux/nginx/install_nginx.sh
ZendServer-RepositoryInstaller-linux/README

On rentre dans le dossier et on lance l'installation avec le script 'install.sh'

[root@zend tmp]# cd ZendServer-RepositoryInstaller-linux/
 
[root@zend ZendServer-RepositoryInstaller-linux]# ./install_zs.sh 7.1 --automatic
 
Running this script will perform the following:
* Configure your package manager to use Zend Server repository 
* Install Zend Server (PHP 7.1) on your system using your package manager
 
Tool for checking existing installation: rpm est /usr/bin/rpm
rpm est /usr/bin/rpm
Doing repository configuration for: yum est /usr/bin/yum
Package manager for installation: yum est /usr/bin/yum
Modules complémentaires chargés : fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.mirror.ate.info
 * extras: centos.mirror.ate.info
 * updates: centos.mirror.fr.planethoster.net
...
...                                                                                                         11/76 
  Installation : php-7.1-pdo-mysql-zend-server-7.1.33-33.x86_64                                                                                                          12/76 
  Installation : php-7.1-odbc-zend-server-7.1.33-33.x86_64                                                                                                               13/76 
  Installation : php-7.1-sysvmsg-zend-server-7.1.33-33.x86_64                                                                                                            
...
...                                                                                                          
Stopping Zend Server 9.1.10 ..
 
zsd is not running
jqd is not running
zdd is not running
scd is not running
lighttpd is not running
monitor is not running
 
Zend Server stopped.
Creating/Upgrading Zend databases. This may take several minutes...
X-Powered-By: PHP/7.1.33 ZendServer/9.1.10
Content-type: text/html; charset=UTF-8
 
Zend Server Daemon: service is starting (as application) ...
 
Checking firewall status: running
Configuring firewall exceptions for ZendServer
success
...
...
***********************************************************
* Zend Server was successfully installed. 		*
* 							*
* To access the Zend Server UI open your browser at:	*
* https://<hostname>:10082/ZendServer (secure) 		*
* or 							*
* http://<hostname>:10081/ZendServer			*
***********************************************************
 
Log file is kept at /tmp/install_zs.log.14243

On accepte les conditions d'utilisations.

On sélectionne le mode “production”.

On définie un mot de passe pour l'utilisateur “admin” ainsi que pour l'utilisateur “developer”.

L'installation est terminée.

Une fois connecté, on a accès au panel de Zend Server.

Administration

Optimisation de la configuration d'Apache

Important:

Section à valider sous Linux

Les serveurs Apache Zend Server traitent les requêtes avec un wrapper FastCGI appelé Zend Enabler. Cette rubrique explique comment régler le pool de processus PHP sous l'enveloppe FastCGI pour qu'il corresponde à l'activité normale du serveur et tolère des charges plus élevées.

Par défaut, le serveur Zend fonctionne avec un maximum de dix instances PHP simultanées. Pour les serveurs Web à forte charge, il est recommandé d'augmenter cette valeur, en fonction de vos exigences de performance et d'autres limitations matérielles/logicielles (telles que la mémoire, le processeur, etc.).

Note:

Ces paramètres par défaut sont définis lorsque vous installez Zend Server.

  • Avant de modifier les valeurs par défaut, sauvegardez le fichier spécifié afin de pouvoir revenir facilement en arrière en cas de défaillance de la fonctionnalité PHP.
  • Modifiez le fichier de configuration spécifié à l'aide d'un simple éditeur de texte. Les éditeurs riches peuvent casser le formatage et rendre un serveur non-opérationnel.

Pour contrôler le nombre maximum d'instances PHP simultanées

Localisez le fichier “ZendEnablerConf.xml”. Dans ce même fichier, localisez le texte suivant :

<ProcessCount start="2" extra="8"/>

Cela permettra à Zend Server d'exécuter jusqu'à 10 instances PHP. Pour des charges plus importantes, augmentez cette valeur.

Contrôler la quantité de demandes traitées par une seule instance de PHP avant le recyclage

Localisez le fichier “ZendEnablerConf.xml”. Dans ce même fichier, localisez le texte suivant :

<Variable name="PHP_FCGI_MAX_REQUESTS" value="10000" />

Cela permettra à une seule instance PHP de traiter 10000 requêtes avant d'être recyclée par le Zend Enabler.

Gestion de la license

Lors de l'installation de la plateforme de Zend Server, nous disposerons de 30 jours d'essaie.

Pour activer la licence, il faudra se rendre dans la partie : Administration > License > Update License

Sauvegarde et Restauration

Comme tout autre produit, Zend Server possède un système de sauvegarde et de restauration des configurations.

Cette option vous permet d'exporter un fichier .zip contenant vos configurations PHP et système actuelles pour une utilisation future. En outre, le fichier .zip exporté contient également vos règles de surveillance et de mise en cache personnalisées.

Pour exporter des configurations :

Vos configurations sont exportées et enregistrées dans un fichier .zip à l'emplacement sélectionné.

Optimization de Zend Server

Les composants du Zend Server sont conçus pour répondre à plusieurs exigences différentes. Cependant, il est inutile d'ajouter ou d'utiliser certains composants lorsqu'ils ne sont pas nécessaires. Cela se produit principalement lorsque vous installez un composant que vous n'utilisez pas. Par exemple, si vous n'avez pas besoin d'appeler des objets Java à partir de votre code PHP, il n'est pas nécessaire de faire fonctionner le module Zend Java Bridge.

En outre, il serait préférable de ne pas installer du tout ce composant optionnel, d'autant plus que vous serez invité à installer un environnement d'exécution Java qui n'est pas nécessaire si vous n'exécutez que PHP.

Dans cette section, nous décrivons chaque composant de performance, y compris quand vous devez installer le composant, quand le désactiver et, le cas échéant, quand le supprimer.

Désactiver les modules non utilisés.

Administration > Components

Sécurité autour de Zend Server

Extension PHP

L'une des bonnes pratiques dans sur les systèmes d'exploitations ou dans les extension de langage telle que PHP et qu'il faille minimiser les processus qui tourne. En claire, si on n'utilise pas, on désactive.

Voici un exemple avec les extension PHP :

Sécurité autour de la Web UI

Désactivation Web UI depuis WWW

Nous interdisons l'accès de la Web UI de Zend Server depuis internet.

Dans Administration > Settings et activer l'option “Block internet access of Zend Server

Limiter l'accès de la Web UI

Par défaut, l'accès à l'interface utilisateur est protégé par un mot de passe. Si vous souhaitez sécuriser l'accès à l'interface utilisateur, vous pouvez le faire en définissant une liste de contrôle d'accès basée sur les adresses IP sur le serveur Web qui exécute l'interface utilisateur.

Après avoir suivi cette procédure, les utilisateurs qui tentent d'accéder à l'interface utilisateur à partir d'adresses IP non autorisées (non habilitées) ne peuvent pas accéder à l'interface utilisateur.

L'interface d'administration fonctionne sur un serveur Web lighttpd dédié.

Pour sécuriser l'accès à l'interface utilisateur, modifiez votre fichier de configuration “lighttpd” de la manière suivante :

Note:

Path : /usr/local/zend/gui/lighttpd/etc/lighttpd.conf

Remplacer :

    #$HTTP["remoteip"] !~ "@@ALLOWED_IPS@@" {
    #    $HTTP["url"] =~ "^/ZendServer/" {
    #        url.access-deny = ( "" )
    #    }
    #}

par

$HTTP["remoteip"] !~ "10.1.2.163|10.1.6.46|127.0.0.1" { 
    $HTTP["url"] =~ "^/ZendServer/" { 
        url.access-deny = ( "" ) 
    } 
}

Cet exemple montre comment autoriser l'accès à partir des adresses 10.1.2.163, 10.1.6.46 et localhost et refuser le reste.

Après avoir appliqué les changements à vos configurations, redémarrez le serveur lighttpd avec la commande

 # <install_path>/bin/lighttpd.sh restart  

ou

 # <install_path>/bin/zendctl.sh restart-lighttpd

Sécurité de PHP

Toutes les configurations de PHP devrons êtres réalisées depuis la Web UI de Zend Server.

Dans l'exemple suivant, nous allons désactiver certaines fonctions dans PHP pour des raisons de sécurité. En temps normal, ces modifications sont réalisées en bas niveau en modifiant le fichier “php.ini”.

Chercher “Safe Mode” et dans “disable_functions” ajouter les fonctions suivantes : exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

Désactiver la fonction “expose_php”, cette option se trouve dans la section “Language Options

Désactiver les fonctions “allow_url_fopen” et “allow_url_include”, ces options se trouve dans la section “Filesystem and Streams

Clustering Zend Server

La configuration d'un cluster détermine le comportement de tous les serveurs qui ont été ajoutés à celui-ci. Lorsque vous modifiez un paramètre dans un cluster, comme la valeur d'une directive ou le chargement d'une extension, tous les serveurs du cluster seront modifiés en conséquence une fois que le service sera redémarré.

Pour basculer en mode cluster, il nous faudra un server de base de donnée. Celui-ci contiendra la configuration pour maintenir la cohérence entre tous les nœuds.

Attention:

La création d'un cluster, réinitialise toutes les configurations existantes.

Nous allons utiliser l'architecture suivante :

Mariadb.oowy.lan

Sur le serveur de base de données 'mariadb.oowy.lan', connectez-vous à MySQL en tant que root et créez la base de données :

# mysql -u root -p
 
mysql> CREATE DATABASE ZendServerCluster CHARACTER SET utf8 COLLATE utf8_bin;
Query OK, 1 row affected (0.00 sec)
 
mysql> GRANT ALL PRIVILEGES ON ZendServerCluster.* TO 'ZendServerUser'@'%' IDENTIFIED BY 'your_password';
Query OK, 0 rows affected (0.00 sec)
 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
 
mysql> exit

Zend01.oowy.lan

Sur le serveur zend01.oowy.lan, connectez-vous sur la Web UI de Zend Server.

Dans Servers > Manage Servers > Join Cluster

Renseigner les informations de connexion à la base de données.

Une fois cette action réalisée, notre premier serveur fait office de premier membre du cluster.

Zend02.oowy.lan

Sur le serveur zend02.oowy.lan, connectez-vous sur la Web UI de Zend Server.

Dans Servers > Manage Servers > Join Cluster

Renseigner les informations de connexion à la base de données.

Une fois cette action réalisée, notre second serveur devient membre du cluster.

Dans Servers > Manage Servers > Session Clustering, cliquer sur “Clic here

Valider la la popup qui s'affiche

Un message nous confirme que l'action est validée

Si l'on retourne dans Servers > Manage Servers, on se rend compte que nous devons redémarrer les Zend Server

On clique sur la flèche prêt de l’icône de profile. Une popup s'ouvre pour nous demander confirmation sur l'action. On valide.

Le cluster est opérationnel.

Mise à jour Zend Server

On télécharge la version de Zend Server vers laquelle nous souhaitons passer. Dans notre cas la version 2019.0.3

[root@zend tmp]# tar xvzf ZendServer-2019.0.3-RepositoryInstaller-linux.tar.gz 
ZendServer-RepositoryInstaller-linux/
ZendServer-RepositoryInstaller-linux/install_zs.sh
ZendServer-RepositoryInstaller-linux/zend.rpm_apache2.4.repo
ZendServer-RepositoryInstaller-linux/zend.deb_power8.repo
ZendServer-RepositoryInstaller-linux/zend.deb_apache2.4.repo
ZendServer-RepositoryInstaller-linux/zend.deb_ssl1.1.repo
ZendServer-RepositoryInstaller-linux/zend.deb_debian9.repo
ZendServer-RepositoryInstaller-linux/nginx/
ZendServer-RepositoryInstaller-linux/nginx/nginx.repo
ZendServer-RepositoryInstaller-linux/nginx/nginx.list
ZendServer-RepositoryInstaller-linux/nginx/install_nginx.sh
ZendServer-RepositoryInstaller-linux/README
 
 
 
[root@zend tmp]# cd ZendServer-RepositoryInstaller-linux/
 
 
[root@zend ZendServer-RepositoryInstaller-linux]# ./install_zs.sh 

Annexe

https://www.zend.com/products/zend-server

https://docs.roguewave.com/en/zend/current/