culabs / deployment
部署 Symfony 应用程序的系统
v7.7.1
2015-07-20 17:45 UTC
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-09-14 17:21:25 UTC
README
摘要
本项目旨在自动化应用程序的部署。它最初是为 symfony2 创建的,但也可以用于任何其他框架。项目应运而生,以解决以下问题:有一个 symfony 应用程序,通过环境变量注入数据库配置。然后,使用同一个应用程序实例,通过不同的域名(每个域名都有一个不同的数据库配置),应用程序表现得像独立的应用程序。采用这种理念,可以为多个客户创建工作环境。
安装
php composer.phar global require "culabs/deployment:dev-master" --prefer-dist
将目录 ~/.composer/vendor/bin/
添加到变量 $PATH 中,以便能够执行命令。
使用
在应用程序内部创建一个名为 deployment
的文件夹,并在其中创建以下文件结构
deployment
- data
- schema.sql
- config.yml
- config_base.yml
- site_test.yml
请注意,这是一个示例,您可以自由配置所需的设置。
在 config_base.yml
中,您可以设置如下内容
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
然后 site_test.yml
将包含以下内容
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
使用此配置后,可以通过执行命令中的 up
选项来安装新应用程序
culabs-deployment deployment up --config-file=site_test.yml
要执行更新,执行 update
选项的操作
culabs-deployment deployment update --config-file=site_test.yml
最后,可以使用以下命令卸载应用程序
culabs-deployment deployment down --config-file=site_test.yml
如果已配置多个应用程序,并希望对所有应用程序执行更新,则必须创建包含以下内容的 config.yml
文件
deployment: batch: - site_test.yml - site_test_1.yml - site_test_2.yml
然后执行命令
culabs-deployment deployment batch