2016-10-29 1 views
0

Symfony 2.8Symfony Apache et Deployer - modifier l'emplacement des actifs sous Symfony Web Directory vers un autre emplacement du système de fichiers

Apache 2,4

Deployer 3.3

utilisateur Apache: www-data

Actuellement, les actifs Le répertoire dans lequel les images sont téléchargées se trouve dans le répertoire Web de Symfony: /var/www/html/project/current/web/assets/items.

Lorsque je déploie de nouvelles versions à l'aide de Deployer, je dois déplacer toutes les images dans le nouveau répertoire des ressources. Bien que ce ne soit pas une grosse tâche en ce moment (il y a plus de 16 000 images), à mesure que nous grandissons, cela causera probablement des problèmes. De plus, étant donné que le répertoire current dans le chemin est un lien symbolique, il semble qu'apache/php conserve l'ancien emplacement en mémoire et en tire des données, ce qui signifie que les requêtes pour ces images génèrent 404 erreurs. Déplacer ce répertoire vers un autre emplacement (et même un autre disque dur) résoudrait ces problèmes. Je ne pense pas avoir l'expérience pour le faire en toute sécurité sans d'abord consulter quelques bonnes pratiques. Je suis sûr que je pourrais comprendre comment ajouter un Alias dans la configuration apache, mais je suis préoccupé par la sécurité et comment les choses vont fonctionner avec Symfony.

Ma question est alors où le répertoire des ressources devrait aller dans le système de fichiers avec quelles autorisations et quelle configuration Apache devrait être appliquée afin que Symfony ne soit pas affecté négativement?

Merci

Répondre

1

Vous pouvez ajouter vos actifs répertoire à la variable "shared_dirs", qui est utilisé pour garder vos fichiers partagés/communs et des répertoires entre les versions. Dans ce cas, le répertoire de vos assets sera stocké dans le dossier/var/www/html/project/shared et le lien symbolique vers chaque version. En ce qui concerne le problème de symlink Apache, essayez de recharger la configuration du serveur Apache dans le processus de déploiement.

// Reload Apache configuration to avoid symlink issue 
task('apache:reload', function() { 
    run('sudo /etc/init.d/apache2 reload'); 
})->desc('Reload Apache configuration'); 
after('cleanup', 'apache:reload');