Nous utilisons capistrano pour les déploiements de sites web et notre document root Apache est un lien symbolique vers une version de code particulière. La procédure de déploiement bascule le lien symbolique de l'ancienne version vers la nouvelle version en tant que dernière étape du déploiement.
Nous migrons nos serveurs web de vrai serveurs exécutant RHEL 5.6 à des machines virtuelles Amazon EC2 exécutant Ubuntu 11.10 et les nouveaux serveurs rencontrent un problème où Apache ne remarque pas immédiatement le changement de son document root lorsque le lien symbolique est basculé. Cela peut prendre une seconde ou deux (et je crois même avoir vu que cela prenait quelques minutes). C'est un peu comme si Apache avait mis en cache le chemin physique du lien symbolique pendant un certain temps.
Est-ce que quelqu'un connaît des paramètres Apache auxquels je pourrais jeter un œil pour le pousser à "scanner" les changements de fichiers servis plus rapidement?
Pensées:
- J'ai lu que les disques sur les machines virtuelles sont beaucoup plus lents (car ils sont stockés sur un réseau). Peut-être que le cache du système de fichiers fonctionne différemment aussi? Si c'est le cas, y a-t-il quelque chose à faire?
- Le site web exécute du code PHP. Peut-être y a-t-il des différences de configuration PHP entre RHEL et Ubuntu? J'ai vérifié
realpath_cache_ttl
mais les deux serveurs ont des commentaires à ce sujet:
par exemple
; Durée, en secondes, pendant laquelle les informations realpath doivent être mises en cache pour un fichier ou un répertoire donné. Pour les systèmes avec des fichiers peu modifiés, envisagez d'augmenter cette valeur.
; http://www.php.net/manual/en/ini.core.php#ini.realpath-cache-ttl
;realpath_cache_ttl = 120
- Nous utilisons la mémoire cache d'opcode APC mais ne pensons pas que ce soit le problème en raison de l'expérimentation. Le code PHP se trouve dans des chemins de fichiers différents pour chaque déploiement et nous assurons
stat=1
. - Voici une question similaire qui est très intéressante: 294107 - mais ne fournit pas de réponse pour moi.
- Une solution serait de recharger Apache à chaque fois que nous modifions le lien symbolique du document root. Je le ferai si nous ne trouvons pas d'autre solution.