culabs / deployment
System for deployment Symfony application
Requires
- guzzle/guzzle: 3.9.*
- symfony/config: 2.7.*
- symfony/console: 2.7.*
- symfony/dependency-injection: 2.7.*
- symfony/filesystem: 2.7.*
- symfony/finder: 2.7.*
- symfony/options-resolver: 2.7.*
- symfony/process: 2.7.*
- symfony/templating: 2.7.*
- symfony/twig-bridge: 2.7.*
- symfony/yaml: 2.7.*
This package is not auto-updated.
Last update: 2024-11-09 18:06:24 UTC
README
Resumen
Este proyecto es con el objetivo de automatizar el despleigue de aplicaciones. Fue creado para symfony2, pero puede ser utilizado para cualquier otro framework. El proyecto surigió para dar respuesta al siguiente problemática: Se cuenta con una aplicación symfony, donde a través de variables de entornos se le inyectan la configuración de la base de datos. Luego con una misma instancia de la aplicación, utilizando distintos dominios (cada uno con una configuración de base datos diferentes) la aplicación se comporta como aplicaciones independientes. Con esta filosofía se puede crera un ambiente trabajo para varios clientes.
Instalación
php composer.phar global require "culabs/deployment:dev-master" --prefer-dist
Incluir el directorio ~/.composer/vendor/bin/
en la variable $PATH para poder ejecutar el comando.
Uso
Detro de la aplicación crear una carpeta con el nombre deployment
y dentro crear una estructura de ficheros como esta:
deployment
- data
- schema.sql
- config.yml
- config_base.yml
- site_test.yml
Aclarar que esto es un ejemplo, eres libre de hacer la configuración que desees.
Dentro de config_base.yml
se pondría algo como esto:
parameters: DocumentRoot: %APP_DIR%/web database_user: root database_password: root vars_environment: SYMFONY__DATABASE__NAME: %database_name% SYMFONY__DATABASE__USER: %database_user% SYMFONY__DATABASE__PASSWORD: %database_password% supervisor_options: autorestart: 'true' user: www-data redirect_stderr: 'false' stdout_logfile: %APP_DIR%/app/logs/supervisor_%database_name%.log stdout_logfile_maxbytes: 10MB deployment: up: database_create: service: command command: php app/console doctrine:database:create -n env: %vars_environment% schema_create: service: command command: mysql --user=%database_user% --password=%database_password% %database_name% < %APP_DIR%/deployment/data/schema.sql database_migrations: service: command command: php app/console doctrine:migrations:migrate -n env: %vars_environment% cache_clear: service: command command: php app/console cache:clear -e=prod env: %vars_environment% supervisor_command1: service: supervisor key: %database_name%_command1 filename: %APP_DIR%/app/supervisor/%database_name%.conf command: 'php %APP_DIR%/app/console app:command1 -e=prod' options: %supervisor_options% vars_environment: %vars_environment% supervisor_command2: service: supervisor append: true key: %database_name%_command2 filename: %APP_DIR%/app/supervisor/%database_name%.conf command: 'php %APP_DIR%/app/console app:command2 -e=prod' options: %supervisor_options% vars_environment: %vars_environment% supervisor_restart: service: command command: service supervisor restart vhost: SetEnv: %vars_environment% DocumentRoot: %DocumentRoot% ServerName: %ServerName% update: database_update: service: command command: php app/console doctrine:migrations:migrate -n env: %vars_environment% cache_clear: service: command command: php app/console cache:clear -e=prod env: %vars_environment% down: vhost: ServerName: %ServerName% database_drop: service: command command: php app/console doctrine:database:drop --force -n env: %vars_environment% supervisor: filename: %APP_DIR%/app/supervisor/%database_name%.conf supervisor_restart: service: command command: service supervisor restart
Luego site_test.yml
tendría este contenido
imports: - { resource: config_base.yml } parameters: ServerName: dev.sittest.com database_name: sittest.com supervisor_options: stdout_logfile: %APP_DIR%/app/logs/supervisor_%database_name%.log
Ya con esta configuración se puede instalar una nueva aplicación ejecutando las operaciones de la opción up
a través del comando:
culabs-deployment deployment up --config-file=site_test.yml
Para ejecutar actualizaciones se ejecutan las operaciones de la opción update
culabs-deployment deployment update --config-file=site_test.yml
Finalmente se puede desintalar una aplicación con el comando:
culabs-deployment deployment down --config-file=site_test.yml
En el caso que se tenga varias aplicaciones configuradas y se desee hacer un update a todas ellas, se debe crear el fichero config.yml
con lo siguiente:
deployment: batch: - site_test.yml - site_test_1.yml - site_test_2.yml
Luego se ejecuta el comando:
culabs-deployment deployment batch