Varnish : tester la configuration avant reload

Pour éviter un downtime lors d’une modification de configuration il faut utiliser le flag -C 

Exemple avec une configuration cassée :

$ /usr/local/sbin/varnishd -C -f /usr/local/etc/varnish/default.vcl
Message from VCC-compiler:
Expected ';' got 'unset'
(program line 174), at
('input' Line 75 Pos 9)
 unset req.http.cookie;
--------#####-----------------
Running VCC-compiler failed, exit 1
VCL compilation failed

Lorsque la configuration est correcte, elle est alors affichée en langage C.

 

Symfony : profiler et debugger introuvables (404 Not Found)

Sur une nouvelle installation, il arrive que la route pour appeler le profiler soit introuvable.

La première chose à vérifier est la configuration Apache. Il faut que la directive AcceptPathInfo soit active. Par exemple, dans une balise <Directory> :

<VirtualHost *:8080>
    DocumentRoot "/var/www/symfony/web"
    ServerName www.acme.com

    <Directory /var/www/750g/web>
        AcceptPathInfo On
    </Directory>
<VirtualHost>

La seconde chose est de vérifier si mod_rewrite est bien activé si vous utilisez une réécriture pour cache app_dev.php ou app.php des urls.

 

Linux: changer la locale (langue) par défaut

Cet article décrit comment la langue par défaut d’un système Linux peut-être configurée ou re-configurée.
Les commandes suivantes ont été testées sur Debian et Ubuntu.

La locale par défaut du sytème est configurée dans /etc/default/locale

$ cat /etc/default/locale
# File generated by update-locale
LANG="fr_FR.UTF-8"

Vous pouvez voir les variables d’environnement actuelles en tapant la commande suivante :

$ locale
LANG=fr_FR.UTF-8
LANGUAGE=
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=

 

Pour la changer, il faut utiliser dpkg-reconfigure locales qui permet de configurer les locales disponibles sur le système ainsi que la locale par défaut.

Une fois reconfigurées, le nouveau fichier locale :

# File generated by update-locale
LANG=en_US.UTF-8
LC_ALL="C"

Pour vérifier la locale dans votre session courante :

$ echo $LANG
en_US.UTF-8

 

$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Vim: désactiver l’indentation automatique quand on colle

Je viens de trouver une commande très pratique par annuler l’auto-indentation lorsqu’on colle du code dans un fichier.

Il y a un mode spécial « collage ». Pour l’activer :

:set paste

Notez que lorsque vous êtes maintenant en mode édition, le message suivante apparaît :

-- INSERTION (collage) --

Pour désactiver l’option :

:set nopaste

 

Ruby : installer des gems pour l’utilisateur courant

Il est parfois utile d’ajouter des gems spécifiques pour l’utilisateur courant, soit parce que vous n’avez pas les droits administrateur, soit parce que vous avez besoin d’une version précise.

Pour cela il faut utiliser l’option –user-install :

$ gem install capistrano -v "=2.15.5" --user-install

Les gems seront installées dans votre répertoire $HOME dans le sous-répertoire .gem/ruby/x_y_z 

Si des « binaires » sont associés à la gem, ils seront dans le répertoire .gem/ruby/x_y_z/bin

Pour pouvoir les utiliser, il faut rajouter ce chemin dans votre $PATH. Par exemple dans votre .bashrc :

if which ruby >/dev/null && which gem >/dev/null; then
    PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH"
fi

Exemple pour capistrano :

$ which cap
/var/www/.gem/ruby/1.9.1/bin/cap

 

Git : Utiliser une clé ssh spécifique

Lorsque l’on travaille avec Github, on ne peut pas ajouter la même clé ssh sur plusieurs dépôts. Il faut alors générer plusieurs clés et indiquer à git en ligne de commande quelle clé utiliser pour l’opération.

Disons que votre clé liée à votre dépôt se trouve dans .ssh/id_dsa_github_deploy 

Configurer alors ssh de la manière suivante dans .ssh/config :

Host gitops
Hostname github.com
User git
IdentityFile ~/.ssh/id_dsa_github_deploy
IdentitiesOnly yes

Alors qu’habituellement vous utilisez la commande suivante pour cloner votre dépôt :

$ git clone git@github.com:acme/ops.git

Maintenant, utilisez la commande suivante :

git clone gitops:acme/ops.git

 

Apache: gérer les logs avec cronolog

Cronolog est un outil qui lit les données depuis l’entrée standard pour les écrire dans des fichiers de sortie dont les noms sont dynamiques en fonction du temps. Par exemple, il est souvent utile de pouvoir séparer les logs Apache dans des fichiers quotidiens.

Exemple classique d’utilisation :

CustomLog "|/usr/sbin/cronolog /var/log/apache2/%Y-%m-%d_domain.com_access.log" combined

Ici, les logs de votre vhost domain.com seront dans des fichiers quotidiens bien séparés.  Le fichier de sortie sera du type 2015-08-05_domain.com_access.log

D’autres exemples :

  • Un fichier par heure :
CustomLog "|/usr/sbin/cronolog /home/log/apache2/%H_domain.com_access.log" combined
  • Un dossier par année, mois et un fichier par jour :
CustomLog "|/usr/sbin/cronolog /home/log/apache2/%Y/%m/%d_domain.com_access.log" combined

Git: changer le dépôt principal de son projet (remote origin)

Si vous avez besoin de transférer votre projet sur un nouveau repository vierge, voici les instructions à suivre.

La configuration actuelle :

$ git remote -v
origin  git@github.com:CharlyBr/projet.git (fetch)
origin  git@github.com:CharlyBr/projet.git (push)

Tout d’abord, supprimer l’origine actuelle.

git remote rm origin

Ajouter le nouveau dépôt :

$ git remote add origin git@github.com:CharlyBr/gros.git

Mettre à jour le code sur le dépôt distant :

git fetch
git branch --set-upstream-to=origin/master master
git push -u origin master

Apache: redirect permanent avec mod_rewrite

Avant d’écrire des règles de ré-écriture, il faut activer mod_rewrite dans la configuration apache et activer le moteur de ré-écriture dans votre contexte (fichier de configuration apache ou htaccess).

Ré-écrire une url vers une autre :

RewriteEngine On
RewriteRule /oldurl  /newurl [R=301,L]

Pour rediriger un domaine vers un autre, par exemple un domaine sans les « www » vers la version avec les « www » ou le contraire :

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.tipun\.ch$ [NC]
RewriteRule ^(.*)$ http://tipun.ch/$1 [R=301,L]

L’url http://www.tipun.ch est redirigée vers http://tipun.ch

Bash: afficher la date d’une commande dans l’historique

L’historique du shell par défaut est affiché avec le numéro de la commande dans l’hitorique et la commande elle-même.

Exemple :

 $ history
 ...
 650 unzip favicon.zip
 651 more browserconfig.xml
 652 rm favicon.zip
 653 cd wp-content/
 654 ls -l
 655 cd themes/casper-master/
 656 ls -l
 657 vim footer.php
 658 vim footer.php
 659 man history
 660 history

Il peut être pratique de retrouver quand une commande a été exécutée. Pour cela, il faut changer le format d’affichage de la commande via une variable d’environnement.

Pour changer le format dans la session courante :

HISTTIMEFORMAT="%d/%m/%y %T "

Pour changer le format à chaque ouverture de session, il faut mettre son fichier .bash_profile :

echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bash_profile

L’historique après la mise à jour du format :

 $ history
  ...
  650  03/08/15 18:12:55 unzip favicon.zip
  651  03/08/15 18:12:59 more browserconfig.xml
  652  03/08/15 18:13:05 rm favicon.zip
  653  03/08/15 18:15:14 cd wp-content/
  654  03/08/15 18:15:14 ls -l
  655  03/08/15 18:15:18 cd themes/casper-master/
  656  03/08/15 18:15:19 ls -l
  657  03/08/15 18:15:21 vim footer.php
  658  03/08/15 18:17:28 vim footer.php
  659  03/08/15 18:19:28 man history
  660  03/08/15 18:21:14 history
  661  03/08/15 18:23:16 HISTTIMEFORMAT="%d/%m/%y %T "
  662  03/08/15 18:23:19 history