guide:installation_serveurs_2014

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

guide:installation_serveurs_2014 [2014/07/15 12:26] – [20.3. Installation / Configuration PHP 5 FPM sur les VM middle / back] viviguide:installation_serveurs_2014 [2021/04/18 22:24] (Version actuelle) – modification externe 127.0.0.1
Ligne 2764: Ligne 2764:
  
     # Misc configuration     # Misc configuration
-    sendfile        on;+    sendfile        off;
     keepalive_timeout  65;     keepalive_timeout  65;
-    gzip  on;+ 
 + 
 +    # 
 +    # Enable gzip compression 
 +    # See : http://www.nginxtips.com/how-to-configure-nginx-gzip-compression/ 
 +    # 
 +    gzip on; 
 +    gzip_comp_level 6; 
 +    gzip_proxied any; 
 +    gzip_min_length  1100; 
 +    gzip_buffers  4 32k; 
 +    gzip_types    text/plain application/x-javascript text/xml text/css; 
 +    gzip_vary on
 + 
 + 
 +    # 
 +    # Set client body size to 5M # 
 +    # See : http://www.cyberciti.biz/faq/linux-unix-bsd-nginx-413-request-entity-too-large/ 
 +    # 
 +    client_max_body_size 5M;
  
  
Ligne 2787: Ligne 2806:
 } }
 </code> </code>
 +
 +**Note :** L'option sendfile est souvent présentée à on. [[http://t37.net/optimisations-nginx-bien-comprendre-sendfile-tcp-nodelay-et-tcp-nopush.html|Cet article]] explique très bien l'utilité de cette option. Sauf qu'elle pose visiblement souci (pas confirmé mais j'en ai fortement l'impression) pour l'utilisation de liens symboliques. Par exemple sur phpmyadmin on se retrouve a avoir les fonctions jquery désactivées... (ou encore d'autres trucs corrigé autrement mais bon..). Exemple de souci sur [[http://serverfault.com/questions/502498/nginx-doesnt-follow-symlink-properly|cette page]]
  
 Et enfin nous configurons nos sites (ici je fais celui par defaut mais le travail est le même pour chaque site et à adapter) : Et enfin nous configurons nos sites (ici je fais celui par defaut mais le travail est le même pour chaque site et à adapter) :
Ligne 2798: Ligne 2819:
 <code> <code>
 server { server {
-    listen       80; +    listen 80; 
-    server_name  localhost;+    server_name localhost;
  
  
     # Proxy to the backend     # Proxy to the backend
     location / {     location / {
-        proxy_pass             http://192.168.100.21;+        proxy_pass http://192.168.100.21; 
 + 
 +        # To enable cache : carefull php will be cached too ! 
 +        # proxy_cache cache; 
 +        # proxy_cache_valid 12h; 
 +        # expires 12h; 
 +        # proxy_cache_use_stale error timeout invalid_header updating; 
 +    } 
 + 
 + 
 +    # Cache of static content 
 +    location ~*^.+(swf|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ { 
 +        proxy_pass http://192.168.100.21; 
         proxy_cache cache;         proxy_cache cache;
-        proxy_cache_valid 12h+        proxy_cache_valid 2d
-        expires 12h; +        expires 7d;
-        proxy_cache_use_stale error timeout invalid_header updating;+
     }     }
  
Ligne 2862: Ligne 2895:
  
 <code> <code>
-open_basedir = /var/www:/tmp:/usr/share/phpmyadmin+open_basedir = /var/www:/tmp:/usr/share/phpmyadmin:/var/lib/phpmyadmin:/usr/share/javascript
  
 disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,exec,system,popen,proc_open,shell_exec disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,exec,system,popen,proc_open,shell_exec
Ligne 2881: Ligne 2914:
 </code> </code>
  
-Enfin, avec la dernière version de PHP, APC semble ne plus fonctionner... C'est remplacé par un module built in comme expliqué sur [[https://www.digitalocean.com/community/questions/how-to-install-alternative-php-cache-apc-on-ubuntu-14-04|cette page]] et [[https://www.digitalocean.com/community/questions/enable-php-5-5-opcache-on-ubuntu-14-04-with-nginx-and-php-fpm|cette page]]+**Enfin, avec la dernière version de PHP, APC semble ne plus fonctionner...** C'est remplacé par un module built in comme expliqué sur [[https://www.digitalocean.com/community/questions/how-to-install-alternative-php-cache-apc-on-ubuntu-14-04|cette page]] et [[https://www.digitalocean.com/community/questions/enable-php-5-5-opcache-on-ubuntu-14-04-with-nginx-and-php-fpm|cette page]]
  
 <code bash> <code bash>
Ligne 2887: Ligne 2920:
 </code> </code>
  
-Et modifier ainsi +Et modifier ainsi (la taille de mémoire est a adapter en fonction de votre serveur)
  
 <code> <code>
 opcache.enable=1  opcache.enable=1 
-opcache.memory_consumption=128 +opcache.memory_consumption=1024
 opcache.max_accelerated_files=4000 opcache.max_accelerated_files=4000
 opcache.revalidate_freq=60 opcache.revalidate_freq=60
Ligne 2901: Ligne 2934:
 sudo service php5-fpm restart sudo service php5-fpm restart
 </code> </code>
 +
 +Et pour avoir un petit visu sur l'état de votre configuration de cache je vous recommande [[https://github.com/rlerdorf/opcache-status|ce petit outil]].
 +
 +Et pour les optimisations, j'ai [[http://www.guillaume-leduc.fr/gestion-caches-nginx-php-fpm.html|cet article]] me semble très bien (j'y ai trouvé l'outil ci dessus).
 +
 +**Si votre phpmyadmin vous fait un truc dans ce style :**
 +
 +<code>
 +PHP message: PHP Fatal error:  require_once(): Failed opening required './libraries/php-gettext/gettext.inc'
 +</code>
 +
 +Alors la solution se trouve sur [[http://superuser.com/questions/590208/phpmyadmin-symlinks-error-after-ubuntu-upgrade|cette page]].
 +
 +<code bash>
 +sudo rm /usr/share/phpmyadmin/libraries/php-gettext/*
 +sudo ln /usr/share/php/php-gettext/* /usr/share/phpmyadmin/libraries/php-gettext
 +</code>
 +
 +**Si votre phpmyadmin rale sur mcrypt :**
 +
 +[[http://stackoverflow.com/questions/19446679/mcrypt-not-present-after-ubuntu-upgrade-to-13-10|Cette page pourrait vous aider]]
 +
 +<code bash>
 +sudo php5enmod mcrypt
 +sudo service php5-fpm restart
 +</code>
 +
 +**Pour améliorer vos logs (attention si ya de la charge déjà sur les serv' c'est a éviter) sur php fpm ** (sinon c'est un peu light comme indiqué sur [[http://stackoverflow.com/questions/8677493/php-fpm-doesnt-write-to-error-log|cette page]]) :
 +
 +<code bash>
 +sudo nano /etc/php5/fpm/pool.d/www.conf
 +</code>
 +
 +Activer ceci :
 +
 +<code>
 +catch_workers_output = yes
 +</code>
 +
 +
 ===== 20.4. Installation / Configuration NGINX sur les VM middle / back ===== ===== 20.4. Installation / Configuration NGINX sur les VM middle / back =====
  
 Ici il s'agit d'installer NGINX sur les VM middle. La procédure est la même que pour les front. Par contre concernant la configuration on n'est plus sur de serveur proxy mais du serveur web classique. Ici il s'agit d'installer NGINX sur les VM middle. La procédure est la même que pour les front. Par contre concernant la configuration on n'est plus sur de serveur proxy mais du serveur web classique.
  
-Il suffira de le faire communiquer avec PHP FPM via le sock mis en place précédemment.+Un exemple de configuration générale : 
 + 
 +<code bash> 
 +sudo nano /etc/nginx/nginx.conf 
 +</code> 
 + 
 +<code> 
 +user  www-data www-data; 
 +worker_processes  1; 
 + 
 +error_log  /var/log/nginx/error.log warn; 
 +pid        /var/run/nginx.pid; 
 + 
 + 
 +events { 
 +    worker_connections  1024; 
 +
 + 
 + 
 +http { 
 +    include       /etc/nginx/mime.types; 
 +    default_type  application/octet-stream; 
 + 
 + 
 +    # Get real ip from front server 
 +    set_real_ip_from 192.168.100.12; 
 +    real_ip_header X-Forwarded-For; 
 + 
 + 
 +    # Log configuration 
 +    log_format  main  '$remote_addr - $remote_user [$time_local] "$request"
 +                      '$status $body_bytes_sent "$http_referer"
 +                      '"$http_user_agent" "$http_x_forwarded_for"'; 
 +    access_log  /var/log/nginx/access.log  main; 
 + 
 + 
 +    # Misc configuration 
 +    sendfile        on; 
 +    keepalive_timeout  65; 
 + 
 + 
 +    # 
 +    # Enable gzip compression 
 +    # See : http://www.nginxtips.com/how-to-configure-nginx-gzip-compression/ 
 +    # 
 +    gzip on; 
 +    gzip_comp_level 6; 
 +    gzip_proxied any; 
 +    gzip_min_length  1100; 
 +    gzip_buffers  4 32k; 
 +    gzip_types    text/plain application/x-javascript text/xml text/css; 
 +    gzip_vary on; 
 + 
 + 
 +    # 
 +    # Set client body size to 5M # 
 +    # See : http://www.cyberciti.biz/faq/linux-unix-bsd-nginx-413-request-entity-too-large/ 
 +    # 
 +    client_max_body_size 5M; 
 + 
 + 
 +    # Include configuration files for differents sites 
 +    include /etc/nginx/conf.d/*.conf; 
 +
 +</code> 
 + 
 +Il suffira ensuite de le faire communiquer avec PHP FPM via le sock mis en place précédemment.
  
 Par exemple : Par exemple :
Ligne 2939: Ligne 3078:
         include        fastcgi_params;         include        fastcgi_params;
     }     }
 +    
 +    # Security deny .ht* files like htaccess
 +    location ~ /\.ht {
 +      deny  all;
 +    }
 +    
 +    # Rewrites rules
 +    location / {
 +        try_files $uri $uri/ /index.php?$args;
 +    }
 +
 } }
 </code> </code>
  
 +**Note 1 :** La partie .ht est pour éviter que des .htaccess et compagnie trainent en visible alors qu'ils ne sont utilisés que par apache et pas par nginx (certaines appli en laissent trainer partout).
  
 +**Note 2 :** La partie rewrite est proposée a titre d'exemple mais est à adapter ou a enlever selon votre application. Elle propose un remplacement des règles de rewrite habituellement vues avec apache.
 ===== 20.5. Installation / Configuration MySQL sur les VM middle / back ===== ===== 20.5. Installation / Configuration MySQL sur les VM middle / back =====
  
  • guide/installation_serveurs_2014.1405420016.txt.gz
  • Dernière modification : 2021/04/18 22:24
  • (modification externe)