Ce tutoriel montre comment vous pouvez installer et exécuter un site Web concret5 sur un système Debian Squeeze ou Ubuntu 12.10 sur lequel nginx est installé à la place d'Apache (LEMP =L inux + nginx (prononcé "e moteur x") + M ySQL + P HP). nginx est un serveur HTTP qui utilise beaucoup moins de ressources qu'Apache et fournit des pages beaucoup plus rapides, en particulier des fichiers statiques. concrete5 est un système de gestion de contenu (CMS) gratuit et open-source.
Je n'émets aucune garantie que cela fonctionnera pour vous !
1 Remarque préliminaire
Je veux installer concrete5 dans un vhost appelé www.example.com/example.com ici avec la racine du document /var/www/www.example.com/web.
Vous devriez avoir une installation LEMP fonctionnelle, comme indiqué dans ces tutoriels :
- Installation de Nginx avec prise en charge de PHP5 et MySQL sur Debian Squeeze
- Installation de Nginx avec PHP5 (et PHP-FPM) et la prise en charge de MySQL sur Ubuntu 12.10
Remarque pour les utilisateurs d'Ubuntu :
Étant donné que nous devons exécuter toutes les étapes de ce didacticiel avec les privilèges root, nous pouvons soit ajouter la chaîne sudo à toutes les commandes de ce didacticiel, soit nous devenons root dès maintenant en tapant
sudo su
2 Installer APC
APC est un cache d'opcode PHP gratuit et ouvert pour la mise en cache et l'optimisation du code intermédiaire PHP. Il est similaire à d'autres cacheurs d'opcodes PHP, tels que eAccelerator et XCache. Il est fortement recommandé d'en installer un pour accélérer votre page PHP.
APC peut être installé comme suit :
apt-get install php-apc
Si vous utilisez PHP-FPM comme démon FastCGI (comme dans Installer Nginx avec PHP5 (et PHP-FPM) et le support MySQL sur Ubuntu 12.10), redémarrez-le comme suit :
/etc/init.d/php5-fpm restart
Si vous utilisez le programme spawn-fcgi de lighttpd comme démon FastCGI (comme dans Installer Nginx avec PHP5 et le support MySQL sur Debian Squeeze), nous devons tuer le processus spawn-fcgi actuel (fonctionnant sur le port 9000) et en créer un nouveau. Exécuter
netstat -tap
pour connaître le PID du processus spawn-fcgi en cours :
[email protected]:~# netstat -tap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:sunrpc *:* LISTEN 734/portmap
tcp 0 0 *:www *:* LISTEN 2987/nginx
tcp 0 0 *:ssh *:* LISTEN 1531/sshd
tcp 0 0 *:57174 *:* LISTEN 748/rpc.statd
tcp 0 0 localhost.localdom:smtp *:* LISTEN 1507/exim4
tcp 0 0 localhost.localdom:9000 *:* LISTEN 1542/php5-cgi
tcp 0 0 localhost.localdo:mysql *:* LISTEN 1168/mysqld
tcp 0 52 server1.example.com:ssh 192.168.0.198:2462 ESTABLISHED 1557/0
tcp6 0 0 [::]:www [::]:* LISTEN 2987/nginx
tcp6 0 0 [::]:ssh [::]:* LISTEN 1531/sshd
tcp6 0 0 ip6-localhost:smtp [::]:* LISTEN 1507/exim4
[email protected]:~#
Dans la sortie ci-dessus, le PID est 1542, nous pouvons donc arrêter le processus en cours comme suit :
kill -9 1542
Ensuite, nous créons un nouveau processus spawn-fcgi :
/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
3 Pose du béton5
La racine du document de mon site Web www.example.com est /var/www/www.example.com/web - si elle n'existe pas, créez-la comme suit :
mkdir -p /var/www/www.example.com/web
Étant donné que concrete5 se présente sous la forme d'un fichier .zip, nous devons installer unzip :
apt-get install unzip
Ensuite, nous téléchargeons concrete5 (http://www.concrete5.org/developers/downloads/) et le plaçons dans notre racine de document :
cd /tmp
mkdir concrete5
cd concrete5
wget -O concrete5.6.0.2.zip http://www.concrete5.org/download_file/-/view/44326/8497/
unzip concrete5.6.0.2.zip
rm -f concrete5.6.0.2.zip
cd concrete5.6.0.2/
mv * /var/www/www.example.com/web/
Il est recommandé de rendre la racine du document et les fichiers concrete5 qu'il contient accessibles en écriture par le démon nginx qui s'exécute en tant qu'utilisateur www-data et groupe www-data :
chown -R www-data:www-data /var/www/www.example.com/web
Si vous n'avez pas encore créé de base de données MySQL pour concrete5 (y compris un utilisateur MySQL concrete5), vous pouvez le faire comme suit (je nomme la base de données concrete5 dans cet exemple, et l'utilisateur s'appelle concrete5_admin, et son mot de passe est concrete5_admin_password) :
mysqladmin -u root -p create concrete5
mysql -u root -p
GRANT ALL PRIVILEGES ON concrete5.* TO 'concrete5_admin'@'localhost' IDENTIFIED BY 'concrete5_admin_password';
GRANT ALL PRIVILEGES ON concrete5.* TO 'concrete5_admin'@'localhost.localdomain' IDENTIFIED BY 'concrete5_admin_password';
FLUSH PRIVILEGES;
quit;
Ensuite, nous créons une configuration nginx vhost pour notre vhost www.example.com dans le répertoire /etc/nginx/sites-available/ comme suit (j'ai ajusté l'emplacement de l'emplacement PHP ~ \.php($|/) {} selon à http://www.justasysadmin.net/en/practical/configuration-concrete-5-nginx/) :
vi /etc/nginx/sites-available/www.example.com.vhost
server { listen 80; server_name www.example.com example.com; root /var/www/www.example.com/web; if ($http_host != "www.example.com") { rewrite ^ http://www.example.com$request_uri permanent; } index index.php index.html index.htm default.html default.htm; location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac). location ~ /\. { deny all; access_log off; log_not_found off; } location / { try_files $uri $uri/ /index.php$request_uri /index.php; } location ~ \.php($|/) { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; # use this if PHP-FPM is running on Unix socket /var/run/php5-fpm.sock (Ubuntu 12.10 default) #fastcgi_pass 127.0.0.1:9000; # use this if PHP-FPM is running on TCP port 9000 (Debian Squeeze default) include /etc/nginx/fastcgi_params; fastcgi_index index.php; set $script $uri; set $path_info ""; if ($uri ~ "^(.+\.php)(/.+)") { set $script $1; set $path_info $2; } fastcgi_param URI $uri; fastcgi_param PATH_INFO $path_info; fastcgi_param SCRIPT_NAME $script; fastcgi_param SCRIPT_FILENAME $document_root$script; } } |
Pour activer ce vhost, nous créons un lien symbolique vers celui-ci à partir du répertoire /etc/nginx/sites-enabled/ :
cd /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/www.example.com.vhost www.example.com.vhost
Rechargez nginx pour que les modifications prennent effet :
/etc/init.d/nginx reload
Nous pouvons maintenant lancer le programme d'installation Web de Concrete5 en accédant à http://www.example.com - assurez-vous que votre système répond à toutes les exigences et cliquez ensuite sur Continuer vers l'installation :
Spécifiez ensuite un nom de site, une adresse e-mail d'administrateur et un mot de passe, puis remplissez les détails de la base de données MySQL. Faites ensuite défiler vers le bas :
Au bas de la page, vous pouvez choisir d'installer du contenu de démonstration ou un site vide. Faites votre choix et cliquez sur Installer concrete5 :
concrete5 est en cours d'installation :
Après une installation réussie, vous verrez ce message. Cliquez sur Continuer sur votre site pour accéder à votre page d'accueil concrete5 :
Lorsque vous visitez la page d'accueil pour la première fois, il y a une superposition Javascript qui contient des liens utiles. Vous pouvez cliquer dessus :
Voici à quoi ressemble votre page d'accueil (avec contenu de démonstration). Les vraies URL devraient fonctionner immédiatement.
Voici le tableau de bord de conrete5 :
Et voici à quoi ressemble le site de démonstration pour un visiteur normal :
4 liens
- concrete5 :http://www.concrete5.org/
- nginx :http://nginx.org/
- Wiki de nginx :http://wiki.nginx.org/
- Debian :http://www.debian.org/
- Ubuntu :http://www.ubuntu.com/
À propos de l'auteur
Falko Timme est le propriétaire de Timme Hosting (hébergement web nginx ultra-rapide). Il est le mainteneur principal de HowtoForge (depuis 2005) et l'un des principaux développeurs d'ISPConfig (depuis 2000). Il a également contribué au livre O'Reilly "Linux System Administration".