Despliegue de Rails 4.2 capistrano 3

Soy totalmente nuevo en el deployment de Rails. Después de search en Google, todavía me cuesta entender cómo implementar aplicaciones de Rails.

Entonces, mis preguntas son:

  1. Después de configurar el VPS con todas las dependencies de los carriles, ¿dónde almaceno mi base de código? El directory raíz del VPS o algunas ubicaciones específicas, por ejemplo, www/ or public/ ?

  2. ¿Debo cargar toda la carpeta de la aplicación Rails o solo una parte? Tengo clip en mi aplicación de Rails, y paperclip crea un system/ directory en la carpeta public/ , entonces ¿debería upload el system/ ?

  3. En Capistrano 3, hay un campo repo_url, sé que soportan file://, https://, ssh://, or svn+ssh:// , pero la mayoría de los artículos sobre capistrano ponen los repositorys de github en eso. Sin embargo, no tengo un repo de Github. ¿Qué debo ingresar entonces?

Gracias por su atención.

Puedes configurar tu propio server privado de git , luego en deploy.rb puedes poner algo así como

set :repo_url, 'ssh://user@server_ip/path/to/your_git_repo.git'

Cuando compromete sus cambios al repository git, no tiene que cargar la aplicación en el server. Capistrano cargará la aplicación cuando se deployment.

¿Dónde pongo mi código base? Esto está determinado por lo que pones en deploy.rb ej.

set :deploy_to, '/path/to/my_codebase'

Si cargar el directory /system dependerá de si desea que las imágenes del clip en su control de versión. Si no, puede agregar el directory a gitignore . Aquí hay un tutorial sobre cómo implementar en ubuntu 14.04 pasajeros y NGINX. si no está utilizando Passenger y Nginx, puede pasar directamente a la configuration de Capistrano y realizar ajustes según su configuration.

EDITAR

Necesita instalar git en su máquina de desarrollo y configurar un server git en su VPS como se explica en el enlace anterior, agregue su server remoto a su máquina local usando

git remote add origin <server>

donde 'server' es la url de tu git repo en el VPS, por ejemplo

ssh://VPS_user@VPS_ip/path/to/your_git_repo.git

Ahora cuando se compromete y envía sus cambios al server, capistrano implementará la última versión en su server git.

Aquí hay un enlace con una guía sobre cómo comenzar a usar git

Respuestas a las preguntas específicas planteadas:

Después de configurar el VPS con todas las dependencies de los carriles, ¿dónde almaceno mi base de código? El directory raíz del VPS o algunas ubicaciones específicas, por ejemplo, www / or public /?

Se desplegará en la carpeta señalada por :deploy_to parameter. Si no se especifica :deploy_to pnetworkingeterminada en /var/www/#{fetch(:application) Ver: https://github.com/capistrano/capistrano/blob/05f63f5f333bb261f2a4c4497174361c48143252/lib/capistrano/defaults.rb#L3

¿Debo cargar toda la carpeta de la aplicación Rails o solo una parte? Tengo clip en mi aplicación de Rails, y paperclip crea un sistema / directory en la carpeta pública /, entonces ¿debería upload el sistema /?

La carpeta del system Paperclip es específica del entorno; cada entorno (desarrollo, producción, …) tendrá su propia carpeta de system que almacenará los files cargados en ese entorno específico. Esta carpeta no debe ser parte del código que se está implementando.

La forma recomendada de entregar dichas carpetas es mantenerlas en una carpeta compartida en el server y crear enlaces simbólicos en la versión actual del código para que la misma carpeta se use para almacenar / recuperar files adjuntos. Consulte la Section 3. Update custom links sección de Section 3. Update custom links en http://robmclarty.com/blog/how-to-deploy-a-rails-4-app-with-git-and-capistrano para get más detalles sobre esto.

Como se menciona allí, lo mismo se aplica al file config/database.yml y a cualquier otro file que contenga configuraciones específicas del entorno.

En Capistrano 3, hay un campo repo_url, sé que soportan file: //, https: //, ssh: //, o svn + ssh: //, pero la mayoría de los artículos sobre capistrano ponen los repositorys de github en eso. Sin embargo, no tengo un repo de Github. ¿Qué debo ingresar entonces?

Depende de dónde está almacenado el código que está implementando. Si está en una carpeta local, use el formatting file::// para especificar dónde se encuentran los files.