Optimiser Apache gestion RAM
bossboss
22/02/2014, 11h19
Envoyé par
shirokoweb
Pour te logger en root à ISPCONFIG, tu dois saisir l'adresse de ton vps et ajouter le port 8080 à la fin (si tu n'y a pas touché) : vps123456.ovh.net:8080
Les logins && pawwsord sont : admin && admin.
D'ailleurs, PHPMyAdmin est installé sur le port 8081 normalement, tout comme SquirrelMail
As-tu fait un lien symbolique comme expliqué plutôt ?
Il est toujours préférable de reload nginx après :
Code:
/etc/init.d/nginx reload
/etc/init.d/nginx restart
OK via webmin ça marche
Merci.
Je vais tester tout cela
shirokoweb
21/02/2014, 22h59
Pour te logger en root à ISPCONFIG, tu dois saisir l'adresse de ton vps et ajouter le port 8080 à la fin (si tu n'y a pas touché) : vps123456.ovh.net:8080
Les logins && pawwsord sont : admin && admin.
D'ailleurs, PHPMyAdmin est installé sur le port 8081 normalement, tout comme SquirrelMail
As-tu fait un lien symbolique comme expliqué plutôt ?
Il est toujours préférable de reload nginx après :
Code:
/etc/init.d/nginx reload
/etc/init.d/nginx restart
bossboss
21/02/2014, 18h51
Manuellement
Je vais retenter une install minimum pour essayer.
Dois pas avoir les yeux bien placé moi LOL. ---> ISPCONFIG : En root on ne sais pas se loguer normal?
shirokoweb
21/02/2014, 17h24
as-tu installé ISPConfig3 également ? Si oui, as-tu ajouté ton domaine via ISP ou as-tu créé ton .vhost manuellement ?
Ton .vhost est-il présent dans /etc/nginx/sites-enabled ?
Sinon, tu dois créer un lien symbolique entre /etc/nginx/sites-available/site.com.vhost et /etc/nginx/sites-enabled/
Code:
ln -s /etc/nginx/sites-available/site.com.vhost /etc/nginx/sites-enabled/
bossboss
21/02/2014, 15h40
Code:
server {
listen *:80;
server_name www.site.com site.com
root /var/www/site.com/web;
access_log /var/www/logs/site.com.pro.access.log;
error_log /var/www/logs/site.com.pro.error.log;
index index.html index.htm index.php index.cgi index.pl index.xhtml;
# On va rendre pagespeed encore plus rapide en passant par memcached
pagespeed MemcachedThreads 1;
pagespeed MemcachedServers "localhost:11211";
# Ensuite on définit les filtres pagespeed que l'on veut utiliser :
pagespeed RewriteLevel CoreFilters;
pagespeed EnableFilters collapse_whitespace,remove_comments;
# On s'assure que les requêtes vont bien vers le contenu optimiés par pagespeed et non pas vers des entêtes externes
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }
location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; }
location /ngx_pagespeed_global_statistics { allow 127.0.0.1; deny all; }
location /ngx_pagespeed_message { allow 127.0.0.1; deny all; }
location /pagespeed_console { allow 127.0.0.1; deny all; }
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { allow all; log_not_found off; access_log off; }
# Rejet tout accès à .htaccess, .htpasswd, .DS_Store (Mac).
location ~ /\. { deny all; access_log off; log_not_found off; }
# Règles de réécriture
rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last;
rewrite ^/([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$1$2$3.jpg last;
rewrite ^/([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$1$2$3$4.jpg last;
rewrite ^/([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$1$2$3$4$5.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg last;
rewrite ^/c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2$3.jpg last;
rewrite ^/c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2.jpg last;
rewrite ^/images_ie/?([^/]+)\.(jpe?g|png|gif)$ /js/jquery/plugins/fancybox/images/$1.$2 last;
try_files $uri $uri/ /index.php$is_args$args;
error_page 404 /index.php?controller=404;
# Epirations
location ~* \.(gif)$ { expires 2592000s; }
location ~* \.(jpeg|jpg)$ { expires 2592000s; }
location ~* \.(png)$ { expires 2592000s; }
location ~* \.(css)$ { expires 604800s; }
location ~* \.(js|jsonp)$ { expires 604800s; }
location ~* \.(js)$ { expires 604800s; }
location ~* \.(ico)$ { expires 31536000s; }
# PHP
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
}
# phpmyadmin
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
}
J'ai simplement remplacé le ND par le mien, je n'ai fait aucune adaptation par rapport à ta version
shirokoweb
21/02/2014, 10h43
@bossboss, tu peux m'envoyer par mp ton fichier de configuration de vhost si tu veux.
bossboss
20/02/2014, 17h33
@Shirokoweb
Hello,
J'ai pris ton script d'install automatique
Non j'ai bien pris NGINX tout a bien été
C'est en voulant tester un domaine en virtual host que ça ne fonctionne pas.
Ne connaissant pas NGINX, j'ai repris ton exemple de Vhost dans un tuto mais j'avais une erreur quand je relancais NGINX, en modifiant quelques lignes quand dans mon post plus haut, il n'a plus indiqué d'erreur mais le VHOST ne fonctionne pas, il ne redirige pas le ND.
shirokoweb
20/02/2014, 15h56
@bossboss tu as suivi quel tuto ? celui
optimisé petit VPS ou
le script d'auto-installation ?
edit 1 : Tu rencontres le problème à quelle étape ?
edit 2 : Je pense que tu as du utiliser le script d'installation et que tu as sélectionné Apache au lieu de nginx... si c'est le cas, je n'ai pas ajouté l'installation de pagespeed avec cette option (pagespeed est compilé avec nginx) avec Apache il faut télécharger le module :
mod pagespeed
Code:
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_amd64.deb
dpkg -i mod-pagespeed-*.deb
apt-get -f install
Sans oublier de nettoyer ensuite
Code:
rm mod-pagespeed-*.deb
Tiens moi au courant si ça a solutionné ton problème
edit 3 : J'ai modifié le script pour automatiser l'action :
#Installation de mod pagespeed
cd /tmp
wget
https://dl-ssl.google.com/dl/linux/d...rent_amd64.deb
dpkg -i mod-pagespeed-*.deb
apt-get -f install
rm mod-pagespeed-*.deb
Je le mets dans le package aussitôt que j'ai vérifié qu'il s'installe bien sur mon petit VPS de test.
gaboul49
20/02/2014, 10h26
Envoyé par
shirokoweb
je pense refaire les tests avec sysbench et DBT2 en complément de mysqlslap pour faire un joli post avec des graphiques.
Ne fais pas ça que pour moi, je te demandais ça à titre informatif sans plus. Je pense qu'il y a déjà pas mal de bench sur internet.
bossboss
19/02/2014, 19h49
je teste ta config
mais j'ai un soucis en me basant sur ton tuto pour créer le vhost.
j'ai l'erreur suivant quand je relance nginx
"try_files" directive FileCachePath must be set in /etc/nginx/nginx.conf:64
Aurais tu une idée de l'erreur que j'ai commise? ( il faut désactiver memcache peut être)?
Merci
Je m'auto répond
Il faut ajouter ça à nginx.conf
##
#ngx_pagespeed module settings
##
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
J'ai pu relancer mais le virtual host ne fonctionne pas..... bizarre
shirokoweb
19/02/2014, 12h53
@mfavps, non j'ai fait le script pour debian, je peux essayer de faire un script pour une autre release si besoin. votre base MySQL est tout à fait importable dans MariaDB.
@gaboul49, ayant fait les tests pour un usage privé à l'origine, je n'ai conservé que quelques gribouillis sur mon bloc-notes de résultats avec mysqlslap 4.5.7, qui ne sont pas objectifs si pris seuls.
Cependant, il me reste quelques jours de location sur un VPS cloud 1 et un VPS cloud 3, je pense refaire les tests avec sysbench et DBT2 en complément de mysqlslap pour faire un joli post avec des graphiques. Je suis depuis passé à un dédié SYS...
gaboul49
19/02/2014, 11h53
@mfavps : Tu vas gagner 90% en passant de apache à nginx et 10% de Mysql à MariaDb donc concentre toi sur le serveur web.
@shirokoweb : Combien gagnes-tu en passant de Mysql à MariaDb ?
@shirokoweb
Merci je tenterai peut etre ca plus tard.
Est ce que ce script fonctionnerai avec ubuntu ?
une preference entre varnish ou memcached ?
ça passerai sur un VPS à 5€ ? (Classic 1 1 vCore (2.0 GHz+) 512 Mo 25 Go 100 Mbps 4,99€ HT)
moi qui ai déjà mysql et apache, pourrai je tranférer mon backup mon site et de ma bdd sur sur Nginx et Mariadb sans sousis de compatibilité ?
laurentm
18/02/2014, 22h38
Une question bête : est ce qu'Ubuntu est installé sous sa version Server ou Desktop ? est ce que le serveur graphique X ne serait pas lancé (runlevel 5 au lieu de 3 normalement pour un serveur). Pour ma part, j'adore OpenSuse qui est une véritable formule 1 dans ses dernières versions, quand il tourne en ligne de commande (j'ai des serveurs sous XenServer (gratuit) avec des machines virtuelles Apache et des sites qui n'ont pas un très gros trafic mais qui contiennent des vidéos très lourdes ainsi que d'autres machines virtuelles pour Postfix et Asterisk), très peu de consommation de RAM. En VPS, j'ai un Prestashop installé par OVH et je trouve qu'il tourne très correctement.
shirokoweb
18/02/2014, 21h54
@mfavps :
J'ai fait des centaines de benchmarks pour comparer les architectures serveur afin de faire tourner un PrestaShop.
J'ai testé toutes les combinaisons possibles et imaginables (apache, nginx, mysql, mariadb etc etc) du plus petit VPS au moyen, à chaque fois sur 2 simultanément avec le même site et le même template de thème (custom) bien bien gourmand.
La meilleure configuration pour les VPS OVH est celle pour laquelle j'ai fait un tuto accessible via ce
Lien
Voici le résultat que j'obtiens sur google page speed pour un de mes prestashop (offre VPS1 à 9€) :
Lien Sans même avoir touché au code du CMS / template (css / JS / HTML...)
Ainsi que sur GTMetrix :
Lien
J'en ai tellement eu assez d'installer / réinstaller que j'ai fait 1 script pour installer un serveur au complet en 1 seule ligne de commande, accessible à cette adresse :
Lien
Avec quelques options supplémentaires.
Les hébergeurs eux-mêmes font des benchmarks entre les différents serveurs web :
Lien
Comparez sur le web : Apache vs nginx / lighttpd / ou autre
pagespeed + apc (varnish ou memcached) + nginx + MariaDB = best config VPS à 9€
Pour ce qui est de l'utilisation de htop, il se peut que vous ayez à configurer l'affichage en fonction des réglages de votre écran :
Lancez htop :
Code:
htop
F2
Naviguez dans (à l'aide des flèches du clavier) Setup > Colors > Sélectionnez [ * ] Black night avec la barre d'espace.
Naviguez dans Setup > Display options > Cochez tout (toujours à l'aide de la barre d'espace) sauf : Shadow other users'... Hide kernel... Hide userland
F10 pour sortir de la configuration
cdt
Merci beaucoup de prendre un peu de temps pour m'aider? je vais essayer de répondre aux questions dans l'ordre.
Je précise que je suis un peu débutant, je précise que j'ai tout monté moi-même sauf pour ce qui est de l'envoi des mails (un ami s'en est occupé).
- Comment vous savez que c'est la RAM qui flanche ?
avec free -m le swap est utiliser à 100% et mon site web ne répond plus, j'essaye differentes config d'apache et de mysql mais soit mysql plante, soit le site est lent...
- Avez vous identifié ce qui consommait le plus de ressources ? Genre un htop ?
je viens d'installer htop mais je ne sais pas trop l'interpreter (quand je tri par RES ou CPU ou MEM c'est apache et mysql qui sont en tete ^^)
- Quelle sont les ressources consommées en idle ?
comment puis je voir ca ?
- Avez-vous fait des tests de charge ? Genre loadrunner ?
non je n'en ai pas fais
- Qu'est ce qui est installé sur votre serveur ? L'avez-vous configuré vous-même ou avez vous installé une distribution performancovore (Plesk, Cpanel, ISpconfig)
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.4 LTS"
LAMP apache mysql php
- Utilisez-vous un CMS ?
Oui Wordpress, j'ai 1 seul site.
- Combien d'espace disque disponible vous reste-t-il ?
df -m
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/simfs 25600 4415 21186 18% /
none 52 1 52 1% /run
none 5 0 5 0% /run/lock
none 256 0 256 0% /run/shm
- Est-ce indispensable de faire tourner un serveur de courrier (pop / smtp je présume); sur un si petit VPS ? est-il envisageable d'utiliser ceux proposés par OVH avec le nom de domaine ?
mon site a besoin d'envoyer des mails, si je peux me passer d'un serveur de mail et utiliser ovh oui bien sur mais je ne saurai le configuré sans tuto...
- y-a-t-il un serveur FTP sur le serveur? Et-ce vraiment indispensable sachant que vous pouvez connecter un root en SFTP (Secure File Transfer Protocole) via WinSCP par exemple. Ca fonctionne un peu comme FileZilla, mais en SSH
pas de ftp, j'utilise Putty pour me connecter en SSH
- Est-ce que je compte vendre de l'hébergement sur mon petit VPS et faire de la gestion de DNS ? Si la réponse est non, alors vous n'avez certainement pas besoin de BIND par exemple qui doit être installé d'office avec plesk, cpanel etc
non je ne compte pas en vendre
On peut ainsi énumérer des centaines de questions qui vous feront perdre votre temps sans pour autant vous apporter de solution de fond.
La véritable question à se poser c'est :
- J'ai entre x et y visites par jour
Je reçoi entre 1000 et 1500 visiteurs/jour, deja eu une pointe 4500.
- Mon site tourne sous ... Wordpress apache mysql php
- De quoi ais-je besoin vraiment (le minimum) pour faire tourner mon site de façon optimale sans avoir à changer d'offre d'hébergement ?
je suis passé du mutualisé au vps, car javais trop de visiteurs et des plantages si me souviens bien. mais aussi ça m'apprend à mettre les mains dans un serveur.
Dans un premier temps, je dirais :
1. Installer la distribution nue de votre choix (Debian, ubuntu, CentOS), oui ubuntu c'est fait
2. Installer un serveur HTTP : nginx (de préférence avec pagespeed) jai apache
3. Installer une base de données : MariaDB + PHPMyAdmin jai mysql
4. Installer quelques outils de sécurité tels que Fail2Ban c'est fait jai suivi un tuto
jai aussi suivi un tuto pour installer un cache APC
j'utilise mysltuner pour regler mysql
je trouve que mon site est lent c'est pour ca c'est pour ca que j'essaye d'optimiser les config apache et mysql
merci pour votre patience
shirokoweb
18/02/2014, 10h50
@gaboul49
Apache est un serveur HTTP basé sur les processus tandis que nginx sur les évènements.
Ce n'est pas pour rien que les services de CDN tournent sous nginx pour délivrer du contenu static
Rien ne vaut mieux qu'un bon petit benchmark :
Benchmark
Une brève comparaison :
Lien
gaboul49
18/02/2014, 09h15
Je suis passé de apache 2.2 à nginx + PHP5_FPM et je dois dire que je vois la différence. C'est plus réactif et ça bouffe moins de RAM.
Apache 2.4 est rapide également mais je n'ai pas testé.
shirokoweb
18/02/2014, 00h16
Bonjour,
Pour répondre précisément à votre question il faudrait faire un audit complet
Mais sinon,
- Comment vous savez que c'est la RAM qui flanche ?
- Avez vous identifié ce qui consommait le plus de ressources ? Genre un htop ?
- Quelle sont les ressources consommées en idle ?
- Avez-vous fait des tests de charge ? Genre loadrunner ?
- Qu'est ce qui est installé sur votre serveur ? L'avez-vous configuré vous-même ou avez vous installé une distribution performancovore (Plesk, Cpanel, ISpconfig)
- Utilisez-vous un CMS ? Joomla, Prestashop ou que sais-je...
- Combien d'espace disque disponible vous reste-t-il ?
- Est-ce indispensable de faire tourner un serveur de courrier (pop / smtp je présume); sur un si petit VPS ? est-il envisageable d'utiliser ceux proposés par OVH avec le nom de domaine ?
- y-a-t-il un serveur FTP sur le serveur? Et-ce vraiment indispensable sachant que vous pouvez connecter un root en SFTP (Secure File Transfer Protocole) via WinSCP par exemple. Ca fonctionne un peu comme FileZilla, mais en SSH
- Est-ce que je compte vendre de l'hébergement sur mon petit VPS et faire de la gestion de DNS ? Si la réponse est non, alors vous n'avez certainement pas besoin de BIND par exemple qui doit être installé d'office avec plesk, cpanel etc
On peut ainsi énumérer des centaines de questions qui vous feront perdre votre temps sans pour autant vous apporter de solution de fond.
La véritable question à se poser c'est :
- J'ai entre x et y visites par jour
- Mon site tourne sous ...
- De quoi ais-je besoin vraiment (le minimum) pour faire tourner mon site de façon optimale sans avoir à changer d'offre d'hébergement ?
Dans un premier temps, je dirais :
1. Installer la distribution nue de votre choix (Debian, ubuntu, CentOS)
2. Installer un serveur HTTP : nginx (de préférence avec pagespeed)
3. Installer une base de données : MariaDB + PHPMyAdmin
4. Installer quelques outils de sécurité tels que Fail2Ban
Personnellement, je pense qu'avoir un accès root à un VPS c'est fait pour mettre les mains dedans, si c'est pour installer des trucs pré-configurés, ça sert à rien, autant rester sur du mutualisé et passer à du performance.
Le problème c'est que les distributions pré-installées sont fait pour correspondre à un panel de client le plus large possible et contiennent un nombre de "modules" important dont on ne se sert absolument pas mais qui consomment des ressources pour rien.
N'installez que ce dont vous avez besoin les VPS sont faits pour ça
Cdt,
Bonjour,
J'ai un VPS Classic le plus petit :
Modèle CPU (Fréq.) RAM Espace Disque Bande passante
Classic 1 1 vCore (2.0 GHz+) 512 Mo 25 Go 100 Mbps
Je souhaite seulement faire tourner 1 site (+mails)
Je reçoi entre 1000 et 1500 visiteurs/jour, deja eu une pointe 4500.
J'aimerai savoir quelle configuration adopter pour apache car mon serveur swap à MORT !
il faut peut etre otpimiser mysql aussi ?
De quelles infos avez vous besoin en plus pour me guider ?