Deploying Zend Framework applications with zend-framework-deploy
Tired to manually deploy your Zend Framework projects, this gem is for you. It will use the Capistrano framework adapted to fit ZF structure and files and removes Rails specific tasks.
$ gem install zend-framework-deploy
$ cd your-zf-project-root && zf-capify .
This command will create the required files inside your ZF project. You can also use
-m switch to
use the multistage extension
of capistrano. The
-m switch accepts a comma separated list of stages to create.
It depends on
capistrano gem. If you want multistage support you should also install
capistano-ext gem (it's not listed as dependency). RVM is
strongly advised to install Ruby and RubyGems.
What tasks are included in the gem?
These are the tasks adapted for Zend Framework projects included in my gem
cap deploy # Deploys your project. cap deploy:check # Test deployment dependencies. cap deploy:cleanup # Clean up old releases. cap deploy:install_zf # Install Zend Framework in library path for the dep... cap deploy:pending # Displays the commits since your last deploy. cap deploy:pending:diff # Displays the `diff' since your last deploy. cap deploy:rollback # Rolls back to a previous version and restarts. cap deploy:rollback:code # Rolls back to the previously deployed version. cap deploy:setup # Prepares one or more servers for deployment. cap deploy:symlink # Updates the symlink to the most recently deployed ... cap deploy:update # Copies your project and updates the symlink. cap deploy:update_code # Copies your project to the remote servers. cap deploy:upload # Copy files to the currently deployed version. cap invoke # Invoke a single command on the remote servers. cap shell # Begin an interactive Capistrano session. cap web:disable # Present a maintenance page to visitors. cap web:enable # Makes the application web-accessible again.
Zend Framework installation
This gem provides a task named deploy:install_zf which is called by default deploy. This task relies on
zf_path capistrano variable, so you must provide it in your
deploy.rb file. This variable should contain
the path for the ZF release, or if you have more than one version of ZF in your server, the base path for the
installations. In the latter case you should have a dir structure like this one (in my case
zf_path is set
$ ls /var/zend/ ZendFramework-1.11.0 ZendFramework-1.11.5
When you're following this convention you can use a file in your scm to control what version of ZF is copied
in the library folder. To achieve this simply drop a file named
zf.version in your
containing the required ZF version and the corresponding version is linked in your library folder.
This approach works as far as your
index.php contains the code generated from the zf tool, i.e. the following
snippet of code is executed before requiring any ZF class.
// Ensure library/ is on include_path set_include_path(implode(PATH_SEPARATOR, array( realpath(APPLICATION_PATH . '/../library'), get_include_path(), )));
I prepared a sample empty zf-capified application on github, you can fork it here
- Lee Hambley for his Railsless Deploy Gem
Contributing to zend-framework-deploy
- Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
- Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
- Fork the project
- Start a feature/bugfix branch
- Commit and push until you are happy with your contribution
- Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
- Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
Copyright (c) 2011 Fabio Napoleoni. See LICENSE.txt for further details.