Le fourre tout des commandes utiles

Compter le nombre de fichers présents dans chaque répertoire de l'emplacement courant ( lien origine ) :

find -maxdepth 1 -type d | while read -r dir; do printf "%s:\t" "$dir"; find "$dir" -type f | wc -l; done

 

 

Tuning apache 2.4: OPcache, SSL, MemCached …

 
 

Après s'être attelé à avoir un apache 2.4 fonctionnel sur notre serveur debian, on peut pousser un peu plus loin la configuration, notamment sur deux points:

  • la sécurité SSL
  • la gestion du cache OPCache
  • La mise en cache mémoire avec memcached

 

SECURITE SSL

Je considère ici que vous avez déjà un site opérationnel et que le mode SSL est déjà actif.
Afin d'assurer une sécurité correcte de votre site, il est nécessaire d'autoriser/interdire certains protocoles devenus obsolètes/dangeureux ainsi que certains cryptages. Dans votre VirtualHost, vous pouvez alors ajouter les lignes suivantes:

SSLProtocol ALL -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCompression off
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;

  • La première lignes autorise tous les protocoles SSL/TLS sauf les versions 2 et 3. Si vous le souhaitez, vous pouvez interdire aussi le TLSv1, à voir avec les visites effectuées sur votre site (plusieurs versions d'android et d'internet explorer ne pourront plus accéder à votre site!)
  • La seconde ligne demande de respecter l'ordre de la Suite Cipher en ligne 4.
  • La troisième ligne parle d'elle même
  • La quatrième ligne correspond la liste des cryptages autorisés/interdits pour notre site.

Il est également possible d'ajouter deux commandes supplémentaires, tout en n'oubliant pas d'activer le module header a2enmod headers:

Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
Header always set X-Frame-Options DENY

 

OPCACHE

La bonne nouvelle, c'est qu'OPcache est activé par défaut par debian lors de l'installation d'apache 2.4 / php 5.6.
Pour le vérifier je me suis inspiré d'un lien dans l'article de ce site pour le vérifier:

cd /var/www
wget https://raw.githubusercontent.com/rlerdorf/opcache-status/master/opcache.php

Il ne vous reste plus qu'à aller sur l'adresse suivante http://adresse_de_mon_serveur/opcache.php pour vérifier qu'OPcache est fonctionnel.

On peut encore améliorer les choses en ajoutant les lignes suivantes au fichier /etc/php5/mods-available/opcache.ini:

opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.max_wasted_percentage=5
opcache.use_cwd=1
opcache.validate_timestamps=1
opcache.revalidate_freq=1
opcache.fast_shutdown=1
opcache.enable_cli=1

Ne pas oublier de relancer le service lié: service php5-fpm restart

 

MEMCACHED

Si ce n'est déjà fait, installez les paquets suivants:

apt-get install memcached php5-memcached

On peut maintenant éditer le fichier /etc/memcached.conf et modifier/ajouter les paramètres suivants:

-m 128
# Custom – decrease wasted slab space
-f 1.05 -I 128k

Reste à redémarrer le serveur apache, service apache2 restart

Sources:

 
 

Gestion des permaliens WordPress avec apache

 
 

Les permaliens correspondent à une réécriture d'adresse internet rendant plus facile la gestion des liens d'un site.
Wordpress gère les permaliens et permet plusieurs choix de "présentation" pour l'utilisateur.
Si votre site wordpress est situé dans le dossier /var/www/blog, il suffit d'ajouter dans la section virtualhost de votre site (N'oubliez pas la partie ssl si vous l'utilisez aussi !)

<Directory /var/www/blog>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
</Directory>

Si toutefois votre wordpress est à la racine (/var/www), il faut alors modifier votre configuration de site apache

    <Directory />
            Options FollowSymLinks Indexes
            AllowOverride FileInfo
    </Directory>

Il vous suffit ensuite de recharger apache:

service apache2 reload

Enfin, dans l'interface d'administration de wordpress (Réglages – Permaliens), vous n'avez plus qu'à choisir le permalien qui vous convient le mieux, et le tour est joué.

 

 

Migration apache 2.2 vers 2.4 sous debian wheezy (stable)

 
 

Voilà un sujet brûlant et qui demande un peu de concentration et de patience. En effet, il ne s'agit pas que d'effectuer une mise à jour des packages pour que tout fonctionne.

En effet, les modifications sont telles que certains autres packages comme munin, owncloud, et plus généralement le php ne fonctionneront pas nativement.

De plus, vous devez savoir que:

  • le répertoire /etc/apache2/conf.d n'est plus utilisé. A la place, deux dossiers conf-available et conf-enabled sont créés, sur le même mode de fonctionnement que mods et sites. Pensez à copier vos fichiers dans conf-available avec l'extension .conf, vous pourrez ensuite les activer/désactiver avec a2enconf a2disconf/a2enconf.
  • Vous devrez renommer tous vos fichiers/sites présents dans sites-available/sites-enabled avec l'extension .conf sinon ils ne seront pas pris en compte.
  • Il est nécessaire d'effectuer une configuration supplémentaire pour le php, ainsi que pour les scripts cgi.
  • Ne pas oublier la mise à jour de openssl en lien avec celle d'apache !

Allez, maintenant que l'on sait cela, passons aux choses sérieuses. Et comme je n'ai peur de rien, voici comment j'ai procédé:

  1. Ajouter les dépots testing. Oui, autant utiliser les packages debian, les dépendances seront correctement gérées et le moindre conflit pourra être facilement résolu. Ajoutons alors à /etc/apt/souces.list la ligne suivante:

    deb http://ftp.fr.debian.org/debian/ testing main contrib non-free

  2. Après avoir mis à jours la liste des paquets avec apt-get update, il reste à installer les packages suivants:

    apt-get -t testing install apache2 openssl libapache2-mod-fastcgi php5-fpm libssl1.0.0 openssl-blacklist openssl-blacklist-extra memcached php5-memcached

    Vous pourrez remarquer qu'un bon nombre de paquets seront mis à jour, de façon à satisfaire les dépendances, le plus important est de constater que apache2.2-bin apache2.2-common et libapache2-mod-php5 font partie des paquets marqués en suppression.
    Vérifiez que tout se passe bien lors du processus de mise à jour, notamment si vous n'avez pas des messages du genre:

    dpkg: warning: unable to delete old directory '/etc/php5/conf.d': Directory not empty
    [warn] The apache2 configtest failed (ce qui est normal vu que pas mal de fichiers de configuration sont encore écrits pour apache 2.2, munin, phpmyadmin …)

  3. Vérifier que le fichier /etc/php5/fpm/pool.d/www.conf contient la ligne suivante:

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

    Si ce n'est pas le cas, modifiez le fichier en conséquence, et redémarrez le service: service php5-pfm restart

  4. Nous allons maintenant configurer le module fastcgi pour qu'il puisse se connecter à php5-pfm. Pour cela, il est nécessaire d'éditer le fichier /etc/apache2/mods-enabled/fastcgi.conf et contenir:

    <IfModule mod_fastcgi.c>
            AddType application/x-httpd-fastphp5 .php
            Action application/x-httpd-fastphp5 /php5-fcgi
            Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
            FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
            <Directory /usr/lib/cgi-bin>
                    Require all granted
            </Directory>
    </IfModule>

    On avance bien, non ?

  5. Il faut maintenant passer à une phase de renommage de vos fichiers de configuration de sites pour qu'ils soient pris en compte par apache.
    Pour cela, rendez vous dans le dossier /etc/apache2/sites-available et ajouter l'extension .conf à tous vos sites.
    Ensuite, il faudra effacer tous vos liens symboliques situés dans /etc/apache2/sites-enabled et activer de nouveau ces derniers avec la commande a2ensite. Exemple:

    cd /etc/apache2/sites-available
    mv 01mysite 01mysite.conf
    mv 01mysite-ssl 01mysite-ssl.conf
    rm /etc/apache2/sites-enabled/*
    a2ensite 01mysite.conf
    a2ensite 01mysite-ssl.conf

  6. On pourrait presque redémarrer le serveur apache, mais si vous aviez déjà une configuration en place, il est pratiquement sûr que l'on rencontrera des erreurs. On va maintenant s'intéresser aux scripts cgi.
    Pour cela, rien de plus simple, un fichier de configuration est présent dans /etc/apache2/conf-available:
    Vous avez alors deux possibilités:
    – ajouter dans les virtualhost concernés la ligne suivante: Include conf-available/serve-cgi-bin.conf
    – activer par défault pour tous vos sites la config cgi: a2enconf serve-cgi-bin.conf
    Attention ! Pensez à éditer tous vos fichiers sites utilisés et supprimez les lignes ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ et blocks <Directory "/usr/lib/cgi-bin">
  7. Il va falloir maintenant basculer certains fichiers présents dans /etc/apache2/conf.d dans /etc/apache2/conf-available avec l'extension .conf, et les activer avec la commande a2enconf. Exemple:

    cd /etc/apache2/conf.d
    cp cp backuppc.conf ../conf-available/
    cp munin.conf ../conf-available/
    cp phpmyadmin.conf ../conf-available/
    cp phpsysinfo ../conf-available/phpsysinfo.conf
    a2enconf backuppc munin phpmyadmin phpsysinfo
    Il nous restera à adapter ces fichiers pour pouvoir accéder aux services concernés.

  8. Nous allons activer le module actions:

    a2enmod actions

  9. On regarde les éventuelles erreurs de configuration. Vous pouvez alors utiliser 2 commandes:
    apache2 -t
    apache2ctl configtest
    Si vous obtenez Syntax OK à cette dernière, c'est que l'on a déjà fait un grand pas !
  10. Allez, on redémarre le serveur apache !
    service apache2 restart
    Allez on croise les doigts pour avoir [ ok ] ! Mais çà ne veut pas dire que tout est accessible !
  11. Vérifier le fonctionnement du php. Pour cela, il faut créer un fichier dans /var/www (ou votre dossier racine de site web) nommé phpinfo.php contenant:

    <?php
    phpinfo();
    ?>

    Maintenant dans un navigateur, il suffit de taper:

    http://ip_de_mon_serveur/phpinfo.php

    vous devriez voir afficher l'écran suivant:phpinfo

  12. Reste à corriger les problèmes des applications "tierces". Normalement, les applications web telles que phpmyadmin, backuppc fonctionneront sna problème. Pour munin, il est nécessaire de modifier le fichier /etc/apache2/conf-available/munin.conf:
    Remplacer les lignes suivantes (pensez à adapter à votre config):

    Order allow,deny
    Allow from localhost 127.0.0.0/8 ::1 192.168.x.x/24

    Par:

    Require local
    Require ip 127.0.0.0/8 ::1 192.168.x.x/24

    Recharger la nouvelle configuration par service apache2 reload et munin fonctionnera de nouveau.

  13. Retirer les dépôts testing, inutile de tenter le diable pour l'instant.
  14. Pour le fun, on peut enfin passer à un module différent de celui activé par défaut avec la version 2.2

    a2dismod mpm-prefork
    a2dismod mpm-worker
    a2enmod mpm-event
    service apache2 restart

Cà y est, on a un apache 2.4 fonctionnel ! Une migration toute simple, non ?

sources: https://www.linode.com/docs/websites/apache/running-fastcgi-php-fpm-on-debian-7-with-apache

 

Redirection apache root folder vers un répertoire

Objectif: toutes les demandes qui arrivent sur mondomaine.com sont redirigées vers le répertoire « blog ».

Pour cela, rien de plus simple, il suffit:

  1. d’ajouter dans la partie VirtualHost de /etc/apache2/sites-enabled/default (ou autre suivant votre config):

    RedirectMatch ^/$ /blog/

  2. de recharcher le serveur apache: service apache2 reload

Voilà le tour est joué !

Redirection apache et owncloud sur un serveur local

Cette manipulation consiste à rendre disponible au web un serveur owncloud présent sur une machine en local, qui n’est pas le serveur web par défaut.

Exemple de Configuration:

Serveur A: serveur web, avec apache accessible depuis internet. Adresse locale: 192.168.x.1
Serveur B: serveur web, apache uniquement accessible en intranet, avec owncloud fonctionnel. Adresse locale: 192.168.x.2

  1. Connectez vous sur le serveur A en ssh; passez en root (su ou sudo)
  2. Editez le fichier /etc/apache2/sites-enabled/default (ou le fichier correspondant au site principal actif)
  3. Ajoutez les lignes suivantes dans votre VirtualHost:

    ProxyRequests off
    ProxyPreserveHost On
    ProxyPass /owncloud http://192.168.x.2/owncloud
    ProxyPassReverse /owncloud http://192.168.x.2/owncloud
    SetOutputFilter INFLATE;proxy-html;DEFLATE
    ProxyHTMLURLMap http://192.168.x.2/owncloud /owncloud

  4. Effectuez les mêmes modifications si nécessaire pour la partie ssl
  5. Attention! il se peut qu’en mode sécurisé, la redirection ne se fasse pas, pensez alors à décocher l’option « Force SSL » dans l’interface admin d’owncloud sur le serveur B.
  6. il ne reste plus qu’à recharger apache: service apache2 reload

Ouverture du blog

Après pas mal de temps en sommeil, je me suis enfin décidé à remettre un blog en route, destiné notamment à l’environnement linux, mais aussi d’autres sujets qui pourraient vous intéresser.