Installation à partir de la distrib ovh ispconfig-debian 8 jessie
Faire fonctionner PHP7 sur son serveur - Ispconfig 3 php7 php-fpm debian 8 jessie |
Comme j'en avais marre d'aller chercher les infos à droite à gauche pour l'install de php7 et faire fonctionner php-fpm, je les ai rassemblé ici pour mon confort personnel, et parce que je pourrais plus facilement le retrouver dans google.
Si ça peut vous rendre service tant mieux, mais je n'assure aucun support et je ne suis pas responsable de ce que vous allez faire sur votre serveur. Je pars du principe que vous venez de commander un serveur dédié chez ovh que votre serveur est donc vierge.
Si vous voulez le blabla explicatif, voici la source sans qui je n'y serais arrivé (thanks guy) :
https://www.howtoforge.com/tutorial/how-to-install-php-7-on-debian/
Installer Mysql 5.6
Si vous installez magento 2 en ligne de commande il vous dira que vous n'avez pas la bonne version de mysql, on va commencer par mettre à jour mysqlsudo apt-get install mysql-server-5.6
Pourquoi installer php 7 ?
Parce qu'il exécute plus rapidement le code que php 5.6 et que vos wordpress 4.4, et magento2 pourront en tirer parti, jusqu'à 2 fois plus rapide ont été annoncé les différents benchmarks php7 avec wordpress.Pourquoi installer php-fpm (FastCGI Process Manager) ?
Parce qu'il garde en mémoire les requêtes effectuées précédemment. Avec PHP-FPM, les éléments et instructions invoqués lors d’une requête sont conservés en mémoire, c’est-à-dire mis en cache au niveau du serveur, pour être réutilisés directement si cette même requête est à nouveau demandée. On constate des accès en général 7 fois plus rapide.Je vous conseille d'acheter un Bouquin qui sera plus efficace pour comprendre les options ci-dessous, j'ai fait dans l'optique d'avoir un mémo personnel.
Une fois installé, connectez-vous en ssh avec les paramètres que vous aurez reçu par mail. Vous pourrez changer les mots de passe par la suite.
On commence par activer ces modules pour le support de fastcgi .
sudo a2enmod actions fastcgi alias
Ensuite on passe à l'installation de php 7
mkdir -p /opt/php-7.0.0mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget http://de1.php.net/get/php-7.0.0.tar.bz2/from/this/mirror -O php-7.0.0.tar.bz2
tar jxf php-7.0.0.tar.bz2
cd php-7.0.0/
apt-get install build-essential nano
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-turbo-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng12-dev libfreetype6-dev libkrb5-dev libpq-dev libxml2-dev libxslt1-dev libicu-dev snmp
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a
./configure --prefix=/opt/php-7.0.0 --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-zlib --with-gd --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --enable-zip --with-pcre-regex --with-pdo-mysql --with-mysqli --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-imap --with-imap-ssl --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm --enable-intl
L'option --enable-intl c'est parce qu'il est demandé par magento2 et j'en avais besoin pour le tester, sinon vous ne pourrez pas installer magento2
make
make install
cp /usr/local/src/php5-build/php-7.0.0/php.ini-production /opt/php-7.0.0/lib/php.ini
cp /opt/php-7.0.0/etc/php-fpm.conf.default /opt/php-7.0.0/etc/php-fpm.conf
cp /opt/php-7.0.0/etc/php-fpm.d/www.conf.default /opt/php-7.0.0/etc/php-fpm.d/www.conf
nano /opt/php-7.0.0/etc/php-fpm.conf
ctrl w, tapez pid
décommenter pid = run/php-fpm.pid
ctrl o entrée, ctrl x
nano /opt/php-7.0.0/etc/php-fpm.d/www.conf
ctrl w, tapez listen = 127
Changer port listen = 127.0.0.1:8999
ctrl o entrée, ctrl x
nano /etc/init.d/php-7.0.0-fpm
Copier-coller ça dedans
#! /bin/sh ### BEGIN INIT INFO # Provides: php-7.0.0-fpm # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts php-7.0.0-fpm # Description: starts the PHP FastCGI Process Manager daemon ### END INIT INFO php_fpm_BIN=/opt/php-7.0.0/sbin/php-fpm php_fpm_CONF=/opt/php-7.0.0/etc/php-fpm.conf php_fpm_PID=/opt/php-7.0.0/var/run/php-fpm.pid php_opts="--fpm-config $php_fpm_CONF" wait_for_pid () { try=0 while test $try -lt 35 ; do case "$1" in 'created') if [ -f "$2" ] ; then try='' break fi ;; 'removed') if [ ! -f "$2" ] ; then try='' break fi ;; esac echo -n . try=`expr $try + 1` sleep 1 done } case "$1" in start) echo -n "Starting php-fpm " $php_fpm_BIN $php_opts if [ "$?" != 0 ] ; then echo " failed" exit 1 fi wait_for_pid created $php_fpm_PID if [ -n "$try" ] ; then echo " failed" exit 1 else echo " done" fi ;; stop) echo -n "Gracefully shutting down php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -QUIT `cat $php_fpm_PID` wait_for_pid removed $php_fpm_PID if [ -n "$try" ] ; then echo " failed. Use force-exit" exit 1 else echo " done" echo " done" fi ;; force-quit) echo -n "Terminating php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -TERM `cat $php_fpm_PID` wait_for_pid removed $php_fpm_PID if [ -n "$try" ] ; then echo " failed" exit 1 else echo " done" fi ;; restart) $0 stop $0 start ;; reload) echo -n "Reload service php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -USR2 `cat $php_fpm_PID` echo " done" ;; *) echo "Usage: $0 {start|stop|force-quit|restart|reload}" exit 1 ;; esac
ctrl o entrée, ctrl x
Ensuite faire
chmod 755 /etc/init.d/php-7.0.0-fpm
insserv php-7.0.0-fpm
nano /lib/systemd/system/php-7.0.0-fpm.service
copiez-coller ça
[Unit] Description=The PHP 7 FastCGI Process Manager After=network.target [Service] Type=simple PIDFile=/opt/php-7.0.0/var/run/php-fpm.pid ExecStart=/opt/php-7.0.0/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.0.0/etc/php-fpm.conf ExecReload=/bin/kill -USR2 $MAINPID [Install] WantedBy=multi-user.target
systemctl enable php-7.0.0-fpm.service
systemctl daemon-reload
/etc/init.d/php-7.0.0-fpm start
nano /opt/php-7.0.0/lib/php.ini
ajouter zend_extension=opcache.so à la fin
Tester
cd /opt/php-7.0.0/bin
./php --version
On a bien PHP7 |
Redémarrez apache.
/etc/init.d/apache2 start
Voilà maintenant il faut vous connecter à votre ispconfig
https://votreserveur.com:8080
Ensuite vous allez dans système > additionnal php versions et vous cliquez sur le bouton add new PHP version pour ajouter votre nouvelle version.
Ajouter la version de PHP7 en plus de PHP5.6 |
Aller dans le panneau name et dans PHP Name vous mettez php7
Ensuite dans l'onglet FastCGI Settings
Path to the PHP FastCGI binary: /opt/php-7.0.0/bin/php-cgi
Path to the php.ini directory: /opt/php-7.0.0/lib
Ensuite dans PHP-FPM Settings
Path to the PHP-FPM init script: /etc/init.d/php-7.0.0-fpm
Path to the php.ini directory: /opt/php-7.0.0/lib
Path to the PHP-FPM pool directory: /opt/php-7.0.0/etc/php-fpm.d
Vous n'avez plus qu'à aller dans l'onglet site remplir les champs et ensuite aller sélectionner votre nouvelle version de PHP, sinon il utilisera php 5.6 par défaut
Sélectionnez la version de php 7 que vous voulez utiliser |
Voilà maintenant le petit truc qui va faire que vous allez me faire un don, lorsque vous installez wordpress 4.4 ou magento et que vous voyez qu'il ne se connecte pas à la base de donnée, c'est juste qu'il faut utiliser 127.0.0.1 à la place de localhost. Parce que php-fpm lance un nouveau processus pour chaque site.
Vous pouvez faire un fichier phptest.php
et y mettre un phpinfo() pour vérifier que vous avez bien php 7 qui fonctionne en mode php-fpm. N'oubliez pas de supprimer le fichier après votre vérification.
On voit bien marqué FPM/FastCGI au niveau de Server API, donc c'est good |
Que faire si après l'activation de php-fpm et php7 mon site n'interprète pas php ?
C'est parcque php-fpm est mal lancé, essayez cette commande :sudo systemctl start php-7.0.0-fpm.service -l
et pour vérifier que c'est bien relancé
sudo systemctl status php-7.0.0-fpm.service
vous devriez voir ceci :
Vérifier que les processus php7-fpm fonctionnent |
sudo a2enmod actions fastcgi alias
Autres utilitaires à installer
J'oubliais il me manque jpegtran pour optimiser les images et pngcrush
sudo apt-get install libjpeg-progs pngcrush
Utiliser Lesscss avec Magento 2
Et pour exécuter lesscss pour magento 2, il faut d'abord installer nodejs
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs
Ensuite il faut installer grunt
npm install -g grunt-cli |
cd
npm install grunt --save-dev
L'étape suivante est d'ajouter Grunt à la configuration dans le répertoire /dev/tools/grunt/configs/themes.js et de l'ajouter dans module.exports
module.exports = {
<theme>: {
area: 'frontend',
name: '/' ,
locale: '' ,
files: [
'' , //path to root source file
''
],
dsl: 'less'
},
Installer livereload sur votre navigateur pour voir les changements en temps réel
http://livereload.com/extensions/
Je voulais remercier aussi @matt_refeo qui m'a aidé aussi ;-)
Aucun commentaire:
Enregistrer un commentaire
Merci de ne pas afficher juste un merci et un lien spammy, argumentez un minimum svp, sinon j'arrête tout, ce serait dommage.
Je modère a priori, ne vous inquiétez pas si votre message n'apparaît pas tout de suite, je fais pleins de choses en même temps.