una - Capistrano-¿Cómo poner archivos en la carpeta compartida?
configurar dropbox para compartir archivos (5)
Capistrano 3.5+
Capistrano 3.5 introdujo append
para campos de matriz. De los documentos oficiales , debe usar estos:
Para archivos compartidos:
append :linked_files, %w{config/database.yml}
Para directorios compartidos:
append :linked_dirs, %w{bin log public/uploads vendor/bundle}
Soy nuevo en Capistrano
y vi que hay una carpeta compartida y también una opción :linked_files
. Creo que la carpeta compartida se usa para mantener los archivos entre lanzamientos. Pero mi pregunta es, ¿cómo terminan los archivos en la carpeta compartida?
Además, si quiero enlazar otro directorio con el directorio actual, por ejemplo, carpeta estática en alguna ruta, ¿cómo lo coloco en los linked_dirs
?
Por último, cómo configurar chmod 755
en linked_files y linked_dirs.
Gracias.
Hay 3 pasos simples que puede seguir para colocar un archivo que no desea cambiar en versiones consecutivas; agregue su archivo a la lista linked_files.
set :linked_files, fetch(:linked_files, []).push(''config.php'')
Seleccione todos los archivos que desea compartir. Coloque este archivo desde su servidor local a remoto a través de scp
scp config.php deployer@amazon:~/capistrano/shared/config.php
Ahora, despliega a través del comando dado a continuación:
bundle exec cap staging deploy
por supuesto, la puesta en escena se puede cambiar según los requisitos de producción, recinto de seguridad, etc.
Una cosa más, porque no quieres que los miembros de tu equipo envíen esos archivos. Por lo tanto, ponga este archivo en su archivo .gitignore. Y empujarlo a GIT Remote Repo.
He escrito una tarea para Capistrano 3 para que cargue sus archivos de configuración en la carpeta compartida de cada uno de sus servidores, verificará estos directorios en orden:
- config / deploy / config /: stage / *. yml
- config / deploy / config / *. yml
Y cargue todos los archivos de configuración encontrados. Solo cargará los archivos si han cambiado. Tenga en cuenta también que si tiene el mismo archivo en ambos directorios, el segundo será ignorado.
Aquí está el código: https://gist.github.com/Jesus/448d618c83fb0445ebbf
Una última cosa, esta tarea es simplemente cargar la configuración. archivos a su carpeta compartida remota, aún necesita establecer linked_files
en config/deploy.rb
, por ejemplo:
set :linked_files, %w{config/database.yml config/aws.yml}
ACTUALIZAR:
Si está usando Git, probablemente quiera ignorar estos archivos:
echo "config/deploy/config/*" >> .gitignore
Las carpetas dentro de su aplicación son enlaces simbólicos a las carpetas en el directorio compartido. Si su aplicación escribe en log/production.log
, realmente escribirá en ../shared/log/production.log
. Así es como los archivos terminan en la carpeta compartida.
Puede ver cómo funciona esto mirando las especificaciones de características o las pruebas en Capistrano .
Si desea modificar estos archivos compartidos, puede hacerlo una vez directamente sobre ssh, ya que Capistrano nunca los modificará después de haberlos creado.
Para agregar un directorio vinculado, en su deploy.rb
:
set :linked_dirs, %w{bin log tmp/backup tmp/pids tmp/cache tmp/sockets vendor/bundle}
o
set :linked_dirs, fetch(:linked_dirs) + %w{public/system}
Para Capistrano 3.5+ , como se especifica en el documento oficial :
append :linked_dirs, ".bundle", "tmp"