Introduction à WordPress
sous Nginx
Maxime Jobin
WordCamp Montréal 2014
@maximejobinWordCamp Montréal 2014 - #wcmtl
Votre situation actuelle
• Votre site plante à cause du nombre de requêtes ?
• Votre site accueille plus de 5000 visiteurs par jour ?
• Vous souhaitez augmenter l’efficacité de votre site ?
• Vous souhaitez quitter le combo cPanel / Apache ?
• Vous êtes curieux par rapport à Nginx ?
• Vous vous êtes trompés de salle ?
@maximejobinWordCamp Montréal 2014 - #wcmtl
Maxime Jobin
www.maximejobin.com
m@ximejobin.com
@maximejobin
Utilisateur, Administrateur, Développeur et Formateur
@maximejobinWordCamp Montréal 2014 - #wcmtl
Nginx (Engine X)
Nginx est un serveur web
servant à la gestion de sites
web à haut trafic.
nginx.org vs nginx.com
@maximejobinWordCamp Montréal 2014 - #wcmtl
Origine
C10k: Gestion simultanée de 10 000
connexions
Créé en 2002 par Igor Sysoev, la première
version a été lancée en 2004.
@maximejobinWordCamp Montréal 2014 - #wcmtl
Nginx vs Apache
Nginx
Event-driven
Empreinte faible
Apache
Process-based
MPM (Multi-processing module)
.htaccess
Nginx & Apache
Fichiers statiques, supporte SSL/TLS, Virtual hosts, Reverse
proxying, Load balancing, Compression, Contrôles d’accès, URL
rewriting, Custom logging, scripts Server-side, FLV streaming,
FastCGI, etc.
@maximejobinWordCamp Montréal 2014 - #wcmtl
Benchmark: Apache vs Nginx
La différence est claire au niveau de la performance. ;-)
@maximejobinWordCamp Montréal 2014 - #wcmtl
Utilisateurs de Nginx
@maximejobinWordCamp Montréal 2014 - #wcmtl
Utilisateurs de Nginx
WordPress.com
Mensuellement
14 milliards de pages vues
42 millions de nouveaux articles
51 millions de nouveaux commentaires
Chaque jour, des dizaines de milliers de
nouveaux sites y sont créés.
Source: WordPress.com
@maximejobinWordCamp Montréal 2014 - #wcmtl
Objectifs
• Installation Nginx
• Installation de PHP
• Installation de PHP-FPM
• Installation de MySQL
• Installation de WordPress
Environnement utilisé: Ubuntu 14.04 via DigitalOcean.com
@maximejobinWordCamp Montréal 2014 - #wcmtl
Preparation
Achat de « monsite.com » et redirection
vers l’adresse IP du serveur.
> apt-get update
> apt-get upgrade
@maximejobinWordCamp Montréal 2014 - #wcmtl
Installation de Nginx
> apt-get install nginx
Répertoires pour Nginx
/etc/nginx
nginx.conf
/etc/nginx/sites-available
/etc/nginx/sites-enabled
Validation via adresse IP: http://66.77.88.99
@maximejobinWordCamp Montréal 2014 - #wcmtl
Commandes pour Nginx
> service nginx start  Démarre Nginx
> service nginx stop  Arrête Nginx
> service nginx restart  Relance Nginx
> service nginx reload  Recharge config
> /usr/sbin/nginx -t  Test config
@maximejobinWordCamp Montréal 2014 - #wcmtl
Creation MonSite.com
> useradd -d /home/monsite -m monsite
> su monsite
> mkdir –p ~/www
> echo "Mon site!" > ~/www/index.html
> exit
@maximejobinWordCamp Montréal 2014 - #wcmtl
Configuration pour Nginx
À placer dans /etc/nginx/sites-available/monsite.com
server {
listen 80;
server_name www.monsite.com;
root /home/monsite/www;
index index.html index.php;
}
ifs are ev
@maximejobinWordCamp Montréal 2014 - #wcmtl
Tester Nginx pour monsite.com
> /usr/sbin/nginx -t
> service nginx reload
http://www.monsite.com
@maximejobinWordCamp Montréal 2014 - #wcmtl
Installation de PHP et MySQL
> apt-get install php5-cli
> apt-get install mysql-server mysql-
client php5-mysql
@maximejobinWordCamp Montréal 2014 - #wcmtl
PHP-FPM
PHP-FPM sert d’intermédiaire pour que la requête
reçue par Nginx soit interprétée par PHP.
> apt-get install php5-fpm
/etc/php5/fpm/php.ini
@maximejobinWordCamp Montréal 2014 - #wcmtl
Configuration de PHP-FPM
Créer un fichier monsite.conf dans /etc/php5/fpm/pool.d/ :
[monsite]
user = monsite
group = monsite
listen = /var/run/php5-fpm.monsite.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 75
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500
@maximejobinWordCamp Montréal 2014 - #wcmtl
Configuration pour Nginx (suite!)
À placer dans /etc/nginx/sites-available/monsite.com à
l’intérieur de server { … }
# Gestion des fichiers PHP (envoi vers PHP-FPM)
location ~ .php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.monsite.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
@maximejobinWordCamp Montréal 2014 - #wcmtl
On repart le tout…
> service php-fpm restart
> service nginx restart
Ajout d’un fichier pi.php dans
/home/monsite/www
<?php phpinfo(); ?>
Test: http://www.monsite.com/pi.php
@maximejobinWordCamp Montréal 2014 - #wcmtl
Base de données MySQL
> mysql -u root -p
> CREATE DATABASE monsite;
> CREATE USER 'umonsite'@'localhost' IDENTIFIED BY 'abcd';
> GRANT ALL PRIVILEGES ON monsite.* TO 'umonsite'@'localhost';
> FLUSH PRIVILEGES;
> quit
@maximejobinWordCamp Montréal 2014 - #wcmtl
Installons WordPress !!
> su monsite
> cd ~/www
> wget http://wordpress.org/latest.zip
> unzip latest.zip
> cd wordpress
> mv * ../
> cd ..
> rm –Rf wordpress latest.zip
http://www.monsite.com
@maximejobinWordCamp Montréal 2014 - #wcmtl
Pour plus d’informations
http://www.maximejobin.com/wcmtl-2014
@maximejobinWordCamp Montréal 2014 - #wcmtl
Fin
Des questions ?

Introduction à WordPress sous Nginx

  • 1.
    Introduction à WordPress sousNginx Maxime Jobin WordCamp Montréal 2014
  • 2.
    @maximejobinWordCamp Montréal 2014- #wcmtl Votre situation actuelle • Votre site plante à cause du nombre de requêtes ? • Votre site accueille plus de 5000 visiteurs par jour ? • Vous souhaitez augmenter l’efficacité de votre site ? • Vous souhaitez quitter le combo cPanel / Apache ? • Vous êtes curieux par rapport à Nginx ? • Vous vous êtes trompés de salle ?
  • 3.
    @maximejobinWordCamp Montréal 2014- #wcmtl Maxime Jobin www.maximejobin.com m@ximejobin.com @maximejobin Utilisateur, Administrateur, Développeur et Formateur
  • 4.
    @maximejobinWordCamp Montréal 2014- #wcmtl Nginx (Engine X) Nginx est un serveur web servant à la gestion de sites web à haut trafic. nginx.org vs nginx.com
  • 5.
    @maximejobinWordCamp Montréal 2014- #wcmtl Origine C10k: Gestion simultanée de 10 000 connexions Créé en 2002 par Igor Sysoev, la première version a été lancée en 2004.
  • 6.
    @maximejobinWordCamp Montréal 2014- #wcmtl Nginx vs Apache Nginx Event-driven Empreinte faible Apache Process-based MPM (Multi-processing module) .htaccess Nginx & Apache Fichiers statiques, supporte SSL/TLS, Virtual hosts, Reverse proxying, Load balancing, Compression, Contrôles d’accès, URL rewriting, Custom logging, scripts Server-side, FLV streaming, FastCGI, etc.
  • 7.
    @maximejobinWordCamp Montréal 2014- #wcmtl Benchmark: Apache vs Nginx La différence est claire au niveau de la performance. ;-)
  • 8.
    @maximejobinWordCamp Montréal 2014- #wcmtl Utilisateurs de Nginx
  • 9.
    @maximejobinWordCamp Montréal 2014- #wcmtl Utilisateurs de Nginx WordPress.com Mensuellement 14 milliards de pages vues 42 millions de nouveaux articles 51 millions de nouveaux commentaires Chaque jour, des dizaines de milliers de nouveaux sites y sont créés. Source: WordPress.com
  • 10.
    @maximejobinWordCamp Montréal 2014- #wcmtl Objectifs • Installation Nginx • Installation de PHP • Installation de PHP-FPM • Installation de MySQL • Installation de WordPress Environnement utilisé: Ubuntu 14.04 via DigitalOcean.com
  • 11.
    @maximejobinWordCamp Montréal 2014- #wcmtl Preparation Achat de « monsite.com » et redirection vers l’adresse IP du serveur. > apt-get update > apt-get upgrade
  • 12.
    @maximejobinWordCamp Montréal 2014- #wcmtl Installation de Nginx > apt-get install nginx Répertoires pour Nginx /etc/nginx nginx.conf /etc/nginx/sites-available /etc/nginx/sites-enabled Validation via adresse IP: http://66.77.88.99
  • 13.
    @maximejobinWordCamp Montréal 2014- #wcmtl Commandes pour Nginx > service nginx start  Démarre Nginx > service nginx stop  Arrête Nginx > service nginx restart  Relance Nginx > service nginx reload  Recharge config > /usr/sbin/nginx -t  Test config
  • 14.
    @maximejobinWordCamp Montréal 2014- #wcmtl Creation MonSite.com > useradd -d /home/monsite -m monsite > su monsite > mkdir –p ~/www > echo "Mon site!" > ~/www/index.html > exit
  • 15.
    @maximejobinWordCamp Montréal 2014- #wcmtl Configuration pour Nginx À placer dans /etc/nginx/sites-available/monsite.com server { listen 80; server_name www.monsite.com; root /home/monsite/www; index index.html index.php; } ifs are ev
  • 16.
    @maximejobinWordCamp Montréal 2014- #wcmtl Tester Nginx pour monsite.com > /usr/sbin/nginx -t > service nginx reload http://www.monsite.com
  • 17.
    @maximejobinWordCamp Montréal 2014- #wcmtl Installation de PHP et MySQL > apt-get install php5-cli > apt-get install mysql-server mysql- client php5-mysql
  • 18.
    @maximejobinWordCamp Montréal 2014- #wcmtl PHP-FPM PHP-FPM sert d’intermédiaire pour que la requête reçue par Nginx soit interprétée par PHP. > apt-get install php5-fpm /etc/php5/fpm/php.ini
  • 19.
    @maximejobinWordCamp Montréal 2014- #wcmtl Configuration de PHP-FPM Créer un fichier monsite.conf dans /etc/php5/fpm/pool.d/ : [monsite] user = monsite group = monsite listen = /var/run/php5-fpm.monsite.sock listen.owner = www-data listen.group = www-data pm = dynamic pm.max_children = 75 pm.start_servers = 10 pm.min_spare_servers = 5 pm.max_spare_servers = 20 pm.max_requests = 500
  • 20.
    @maximejobinWordCamp Montréal 2014- #wcmtl Configuration pour Nginx (suite!) À placer dans /etc/nginx/sites-available/monsite.com à l’intérieur de server { … } # Gestion des fichiers PHP (envoi vers PHP-FPM) location ~ .php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.monsite.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
  • 21.
    @maximejobinWordCamp Montréal 2014- #wcmtl On repart le tout… > service php-fpm restart > service nginx restart Ajout d’un fichier pi.php dans /home/monsite/www <?php phpinfo(); ?> Test: http://www.monsite.com/pi.php
  • 22.
    @maximejobinWordCamp Montréal 2014- #wcmtl Base de données MySQL > mysql -u root -p > CREATE DATABASE monsite; > CREATE USER 'umonsite'@'localhost' IDENTIFIED BY 'abcd'; > GRANT ALL PRIVILEGES ON monsite.* TO 'umonsite'@'localhost'; > FLUSH PRIVILEGES; > quit
  • 23.
    @maximejobinWordCamp Montréal 2014- #wcmtl Installons WordPress !! > su monsite > cd ~/www > wget http://wordpress.org/latest.zip > unzip latest.zip > cd wordpress > mv * ../ > cd .. > rm –Rf wordpress latest.zip http://www.monsite.com
  • 24.
    @maximejobinWordCamp Montréal 2014- #wcmtl Pour plus d’informations http://www.maximejobin.com/wcmtl-2014
  • 25.
    @maximejobinWordCamp Montréal 2014- #wcmtl Fin Des questions ?