Comment installer un serveur web NginX ?


Ne pas faire ce tutoriel si vous avez déjà installé un serveur web (lamp).

Connectez-vous en local sur votre raspberry ou par ssh avec l'utilisateur pi. Vous pouvez aussi prendre n'importe quel utilisateur avec les droits sudo.

Faites les mises à jours du système :

sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade

Installation de MySql :

sudo apt-get install mysql-server mysql-client

Veuillez choisir un mot de passe :

Nouveau mot de passe du superutilisateur de MySQL : Password
Confirmation du mot de passe du superutilisateur de MySQL : Password

Installation de NginX :

sudo apt-get install nginx

Démarrage de nginx :

sudo service nginx start
Starting nginx: nginx.

Ouvrez votre nanigateur internet favoris et allez sur l'adresse ip de votre Raspberry.

Dans mon cas : http://192.168.1.21/

Si vous voyez ce méssage nginx est bien installé :

Welcome to nginx!

Création du répertoire www :

sudo mkdir /var/www
sudo chown www-data:www-data /var/www

Installation de php5 :

sudo apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Modification du ficher php.ini :

sudo nano /etc/php5/cgi/php.ini

Cherchez la ligne cgi.fix_pathinfo=1 :

ctrl+w : cgi.fix_pathinfo=1
entrer

Décommantez la ligne :

Avant :

;cgi.fix_pathinfo=1

Après :

cgi.fix_pathinfo=1

Installation de lighttpd :

sudo apt-get install lighttpd

Pendant l'installation, il est normal d'avoir ces message d'erreur car nginx utilise déjà le port 80:

Paramétrage de lighttpd (1.4.31-3) ...
[....] Starting web server: lighttpd2012-12-05 17:35:03: (network.c.379) can't bind to port:  80 Address already in use 
 failed!
invoke-rc.d: initscript lighttpd, action "start" failed.
Failed to start Lighttpd. Maybe another webserver is already listening on port 80?

Suppréssion de lighttpd au démarrage du raspberry pour ne plus avoir de conflis entre nginx et lighttpd :

sudo update-rc.d -f lighttpd remove

Démarrage du service php :

sudo /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

Démarrage automatique du service php :

sudo nano /etc/rc.local

Ajoutez juste avant exit 0 :

[...]
sudo /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
exit 0

Configuration de nginX :

sudo nano /etc/nginx/nginx.conf

Modifiez ces deux lignes avec comme valeur :

worker_processes 1;
keepalive_timeout 2;

Suppression du fichier default :

sudo rm -f /etc/nginx/sites-available/default

Création du fichier default :

sudo nano /etc/nginx/sites-available/default

Copiez collez le contenu dans votre fichier et sauvegardez :

server {
        listen   80;
        server_name localhost;
        root /var/www;
        index index.html index.htm index.php;

        location / {
                root   /var/www;
                index  index.php index.html index.htm;
        }

        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www$fastcgi_script_name;
                include         fastcgi_params;
        }
}

Redémarrage du service nginx :

sudo service nginx restart

Vous ne devriez pas avoir de méssage d'erreur :

Restarting nginx: nginx.

Installation de phpMyAdmin :

sudo apt-get install phpmyadmin
Serveur web à reconfigurer automatiquement : aucun 
Faut-il configurer la base de données de phpmyadmin avec dbconfig-common ? : Oui
Mot de passe de l'administrateur de la base de données : Password

Mettez le même mot de passe que celui de la configuration Mysql-server

Mot de passe de connexion MySQL pour phpmyadmin : 

Laissez vide pour un mot de passe généré aléatoirement, ou tapez votre propre mot de passe.

Création d'un lien symbolique pour phpMyAdmin :

sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin

Vous pouvez maintenant utiliser votre dossier /var/www pour stocker votre site internet et l'adresse :

http://ip-raspberry/phpmyadmin pour gérer vos bases MySql avec phpMyAdmin.

Comments

Chris
2012/12/10 09:00 reply

Salut, Quelques petites remarques/questions : - Pourquoi mettre l'installation de mysql avec Nginx ? - Au niveau de la gestion du PHP quelle différence entre fastcgi et php5-fpm ? J'ai pas trouvé un bon comparatif entre les deux alors si tu as des pistes … :) - Coté fastcgi, est-ce que tu peux régler le nombre de thread pour limiter les ressources ?

Je viens aussi de faire un tuto pour installer Nginx mais le tien me donne des doutes :)

Chris http://pihomeserver.wordpress.com/

Sharka
2012/12/11 16:38 reply

Salut,

Pourquoi l'installation de mysql avec nginx : pour faire comme une installation lamp mais avec nginx.

Différences entre fastcgi et php5-fpm : Aucune idée

Est-t-il possible de régler le nombre de thread : Aucune idée

Qu'as tu comme doutes ?

Je l'ai installé sur ma raspberry avant et ça fonctionne a merveille. mon phpinfo : http://w1p.fr/84716

Si tu as des conseils pour modifier ma note nginx, n'hésites pas tu as l'air bien informé ;)

A+

Chris
2012/12/11 20:00 reply

Salut, Pour le nombre de thread ca peut etre pratique si tu n'as pas bcp de mémoire et/ou pas beaucoup de connexions. Ca limite l'occupation. Ca se règle dans le fichier nginx.conf avec la ligne “worker_processes 1;” A priori (avis aux pros) le nombre à mettre doit pour etre optimal correspondre au nombre de core sur le CPU. Mes doutes c'est sur la qualité de mon installation ;-) Après je ne cherche pas un gros serveur web mais plus un afficheur de page. Autre question : tu pourras expliquer pourquoi tu installes lighttpd pour le désactiver ? le frapper CGI ?

Sharka
2012/12/11 21:24 reply

Salut,

Tu as parfaitement raison, le worker_processes doit être à 1 (nombre de thread que le cpu gère) comme je l'indique dans mon tutoriel.

Après je suis dans le même cas de figure que toi ^^ je cherches pas à faire un outil de prod mais plutôt un environnement de dev ^^.

Ensuite fastcgi n'a pas de daemon pour debian alors on utilise celui de lighttpd (spawn-fcgi) d'ou sont installation et désactivation.

a+

GilDev
2012/12/14 20:56 reply

J'ai tout suivi comme il faut mais apprès avoir créé le lien symbolique, quand je vais sur “http://ipdurpi/phpMyAdmin” il me met un joli “404 Not Found” et je ne peux pas accéder à phpMyAdmin… Une solution ?

Sharka
2012/12/14 23:20 reply

Salut,

Quand tu as fait ton lien symbolique l'as tu écrit phpMyAdmin ou phpmyadmin ??

Attention à la casse

fais un :

sudo ls -ali /var/www/

Si ton lien symbolique est correct tu devrais trouver :

[...]
140680 lrwxrwxrwx  1 root     root         21 déc.   5 18:48 phpMyAdmin -> /usr/share/phpmyadmin

a+

GilDev
2012/12/15 11:45 reply

Merci de cette rapide réponse. J'ai bien respecté la casse, quand je fais un “sudo ls -ali /var/www/” j'ai bien ceci : “140403 lrwxrwxrwx 1 root root 22 Dec 14 20:42 phpMyAdmin → /user/share/phpmyadmin”. Le serveur marche, mes pages HTML s'affichent, mais impossible d'accéder à phpMyAdmin…

Loquilo
2012/12/16 16:58 reply

Salut,

Je crois que c'est plutôt :

sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin

Avec user sans e.

Sharka
2012/12/17 10:41 reply

Merci Loguilo, c'est effectivement ça petite coquille de ma pars ^^

GilDev
2012/12/19 23:37 reply

Super, merci ! =)

Fidoboulette
2013/01/12 16:53 reply

superbe tuto…. a fonctionné sans problèmes sur mon RPI…. y plus qu'a réinstaller Owncloud et j'espère que cela s'affichera plus rapidement que précédement…. en attendant que tu propose un tuto pour installer du webdav comme demandé en mp….. ;-) merci à toi

2013/03/19 07:00 reply

[…] raspberry-pi:comment-installer-un-serveur-web-nginx [TropFacile.NeT] […]

kais
2013/04/05 20:08 reply

à propos lighttpd j'ai l'installer sans aucune message d'erreur , bon jai continuer le tuto c'est super .

adelghouari
2013/04/06 16:31 reply

salut, merci pour ce toto, j'ai suivi touts les étape sans erreurs, mais quand je lance mon navigateur web, et je tape xx.xx.xx.xx/phpmyadmin/ ou xx.xx.xx.xx/index.php, ici j'ai changé le fichier index.lighttpd.html par index.php, juste pour tester mon server php, mais ça marche pas car dans tout les cas il ma affiche ce message; 502 Bad Gateway

Lovegiver
2013/04/07 01:30 reply

Bonjour Sharka,

j'ai tout bien suivi le manuel mais quand je souhaite atteindre la page Web de mon RasPi, j'ai un beau : 403 Forbidden qui s'affiche

Je peux en revanche atteindre la page d'admin de phpMyAdmin, donc le serveur Web fonctionne et c'est bien NGinx qui est affiché dans la page d'admin de phpMyAdmin

J'ai vérifié tous les fichiers de conf, c'est tout OK.

Du coup, je sèche.

Sharka
2013/04/07 12:14 reply

@ adelghouari

As tu éssayé de reload nginx ?

sudo service nginx reload

Tu n'as pas besoin de taper le xx.xx.xx.xx/index.php juste xx.Xx.xx.xx suffit largement il va automatiquement détecter le fichier index.html / php et le charger. a+

Sharka
2013/04/07 12:16 reply

@ Lovegiver :

As mon avis ça vient du chmod de ton dossier /var/www

tapes :

sudo ls -ali /var/www

Sans le / après le www

Tu devrais avoir ça normalement :

139685 drwxr-xr-x  2 www-data www-data 4096 mars  26 00:26 .
  8193 drwxr-xr-x 12 root     root     4096 mars  26 00:26 ..

a+

adelghouari
2013/04/07 15:46 reply

salut Sharka, voila la sortie de cette commande; sudo ls -ali /var/www total 16 138425 drwxrwxr-x 2 www-data www-data 4096 avr 7 09:52 .

8193 drwxr-xr-x 12 root     root     4096 avr  5 20:40 ..

131701 -rw-r–r– 1 root root 240 avr 6 14:11 index.php 131694 -rw-r–r– 1 root root 410 avr 7 09:52 memwatch.php 140631 lrwxrwxrwx 1 root root 21 avr 5 23:09 phpmyadmin → /usr/share/phpmyadmin esq on peut revenir en arriere pour refaire toutes ces étapes?

adelghouari
2013/04/07 16:27 reply

salut Sharka, c'est bon ça marche après l'installation du l'apache2, et donc je peut acceder au phpmyadmin, sans probleme, merci +++ a+

Lovegiver
2013/04/07 18:09 reply

@Sharka:

J'obtiens ceci :

sudo ls -ali /var/www
total 12
133428 drwxr-xr-x  2 www-data www-data 4096 avril  7 00:51 .
  8193 drwxr-xr-x 12 root     root     4096 avril  7 00:28 ..
134393 -rw-r--r--  1 root     root     3585 avril  7 00:35 index.lighttpd.html
135708 lrwxrwxrwx  1 root     root       21 avril  7 00:51 phpmyadmin -> /usr/share/phpmyadmin
Sharka
2013/04/07 19:15 reply

@ Lovegiver

Les balises de code : <.code bash><./code>sans les .

Ensuite tu dois avoir un soucis car normalement ton fichier index.php doit être dans le dossier www et la il ne l'est pas.

Fait maintenant un :

sudo ls -ali /var/www/

voir le contenu de ton dossier www

a+

Lovegiver
2013/04/07 23:08 reply

@Sharka:

pi@raspberrypi ~ $ sudo ls -ali /var/www/
 
total 12
 
133428 drwxr-xr-x  2 www-data www-data 4096 avril  7 00:51 .
  8193 drwxr-xr-x 12 root     root     4096 avril  7 00:28 ..
134393 -rw-r--r--  1 root     root     3585 avril  7 00:35 index.lighttpd.html
135708 lrwxrwxrwx  1 root     root       21 avril  7 00:51 phpmyadmin -> /usr/share/phpmyadmin

Le fichier 'index.php se trouve ici : /usr/share/phpmyadmin/index.php

et ici : /usr/share/phpmyadmin/setup/index.php

Dans /var/www/, on a un lien symbolique vers /usr/share/phpmyadmin, on doit donc pointer vers le 'index.php' non ?

Dois-je réinstaller phpMyAdmin ? (peut-être que c'est l'install qui a merdé, parce que moi non je te l'assure)

++

Sharka
2013/04/08 11:37 reply

@ Lovegiver

Peux tu vérifier que tu as bien le fait l'étape : Configuration de nginX :

en particulier la suppression et lea création du fichier default

essaye de faire une page html standard

sudo nano /var/www/index.html

met le contenu :

<html>
<head>
<title>Test</title>
</head>
<body>
<h1>Salut</h1>
</body>
</html>

Normalement tu devrais voir salut quand tu vas sur l'ip de ton raspberry http://192.168.1.x

Lovegiver
2013/04/10 19:44 reply

Sharka, peut-être que le problème se résume à la disparition du index.php. En tout cas, le fichier html de test fonctionne nickel.

Conclusion : le serveur NGINX interdit l'accès à une racine vide. CQFD.

Sharka, si je pouvais je te ferais plein de bisous.

/kiss ;)

vinok
2013/04/21 23:30 reply

Bonjour, j'essaie d'installer phpmyadmin sur une vm qui ne contient que php (nginx et mysql étant installés sur 2 autres vms distinctes. Quelqu'un aurait-il une piste pour pouvoir réaliser ça sans que j'ai à installer apache et mysql sur la même vm ? Merci :)

Bencici
2013/05/01 21:13 reply

Au top !

Nosirus
2013/05/05 18:06 reply

Bonjour et merci pour tout t'es tuto qui m'aide beaucoup a débuté ;)

par contre j'ai un petit soucis avec le serveur, avec raspcontrol ou owncloud j'ai des erreur 404 et owncloud même pas les images d'ailleurs, l'écran principal des deux marche c'est des que je clique sur un lien que boum

d'ailleurs peu être lier je ne sais pas mais la commande Starting nginx: nginx. est inconnu quand je la tape

Sinon pour phpmyadmin aucun problème lui

Si quelqu'un a une piste je suis preneur :)

Bencici
2013/05/05 22:33 reply

@Nosirus: Sur la note à propos de Raspcontrol il donne des lignes pour l'url rewriting qui normalement règlent les problèmes de 404

Sharka
2013/05/05 23:51 reply

@Nosirus: Salut,

normal que la commande Starting nginx: nginx. est inconnu car ce n'est pas une commande :D juste un retour écran ^^

Ensuite pour owncloud je n'ai pas fais la version nginx que la version apache ^^

a+

Nosirus
2013/05/06 00:24 reply

Je pensé bêtement que owncloud marcherait sans faire de bidouille mais en faite si plein apparement xD

Pour Raspcontrol c'est de m'a faute j'avais écrit en minuscule le dossier mais pas dans le fichier nginx (mode boulet)

Guillaume
2013/05/12 01:04 reply

Bonjour,

Tout d'abord, merci pour ces tutoriaux.

J'ai un message d'erreur au lancement de l'installation nginx.

pi@raspweb:/$ sudo apt-get install mysql-server mysql-client

/usr/bin/apt-get: 1: /usr/bin/apt-get: Ԡ??=S

????????o,?p???: not found Г

/usr/bin/apt-get: 2: /usr/bin/apt-get: Syntax error: ”(” unexpected

frenesik
2013/05/12 10:56 reply

Salut, Regarde si tu le paquet apt est tjrs installé, visiblement il ne trouve pas la commande apt-get, aurais tu supprimé le paquet apt ?

Alexx
2013/05/14 22:21 reply

Salut, bien fait le tuto :) tout fonctionne mais je n'arrive pas à afficher des pages .php , cela me renvoi sur la page welcome to nginx! j'ai testé les .html et ils fonctionnent.

Problème dans l'install de php ?

Merci:

Alexx
2013/05/14 23:10 reply

Edit: c'est bon j'ai trouvé, j'ai changé le root /var/www par root /var/www/

par contre, comment enlever la page “welcome to nginx!” qui apparait souvent ?

:)

Doz3n
2013/05/17 06:55 reply

Bonjours, j'aimerais savoir pourquoi avoir installé ngnix puis ensuite lighttpd pour ensuite stopper lighttpd ? ngnix = lighttpd nan? cela ne fait pas double emplois? merci pour une réponse, je débute dans Linux, et on m'a dit que Apache=ngnix=lighttpd.

Sharka
2013/05/18 10:19 reply

@Doz3n:

Salut,

Nginx ; Lighttpd ; Apache2 sont des serveurs web indépendants.

Ils font le même résultat, mais de différentes façons. Pour plus performances sur les raspberry qui ne sont pas très puissants, on choisira plutôt Nginx.

Ensuite, j'ai installé Lighttpd pour utiliser son spawn-fcgi qui nous sert ensuite pour php.

a+

Bernard
2013/06/14 00:26 reply

Bonjour, Merci pour ce tuto. L'installation s'est bien passée tout fonctionnait super. J'ai installé PluXml pour tester .. tout ok. Mais voila qu'après un redémarrage du pi j'obtiens maintenant 502 bad gateway. Impossible de m'en sortir même après un reload de nginx.

Merci d'avance pour une info. Cordialement.

Janusz
2013/06/14 12:08 reply

J'ai rencontré le même problème concernant le message “502 bad gateway”. Après étude, cela concerne le module php5-fpm.

En modifiant le fichier

sudo vim /etc/php5/fpm/pool.d/www.conf

Remplacer la ligne :

listen = /var/run/php5-fpm.sock

par :

listen = 127.0.0.1:9000

Après un redémmarage des services,

sudo service php5-fpm restart
sudo service nginx restart

Ca fonctionne à nouveau.

Bernard
2013/06/14 19:15 reply

Bonjour,

Merci pour la réponse. En fait , au temps pour moi j'avais oublié le démarrage automatique du service php. Tout est rentré dans l'ordre. Merci à tous les contributeurs. Cordialement