Skip to content

Evolistrano is a small tool for source code deployment on several WWW servers.

Notifications You must be signed in to change notification settings

Evolix/evolistrano

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Evolistrano
~~~~~~~~~~~

Evolistrano is a small tool for source code deployment on several WWW servers.
It's more a "proof of concept" to show that an home-made shell script is often
better that generic tool like Capistrano (great tool) or Fredistrano.
Evolistrano has killer-features like deployment on several WWW servers
with *instant* deployment if you have a load-balancer like HAProxy,
incremental storage on WWW server to keep multiples version of your code,
calculate available space before uploading, etc.


                                  ____ WWW server 0 (preprod & prod)
                                 /  ___WWW server 1 (preprod & prod)
                                /  / __WWW server 2 (preprod & prod)
Dev server                     /  / /
(SVN, SSH, --> Evolistrano -->--------
 etc.)                                \ ___WWW static server 0
                                       \___WWW static server 1 
                                         

svn:// -> $subdocroot/{prod,preprod}/current
svn:// $staticfilesdir -> $subdocroot/static


INSTALLATION
------------

On dev server
~~~~~~~~~~~~~

* Download Evolistrano from git://git.evolix.org/git/evolistrano.git

* Copy evolistrano/ where you want and secure rights
  (for example, add "deploy" group, and authorize
  only this group to access it => to allow deployment,
  we just had the user on this group!)

* Generate an SSH key, for example:
  ssh-keygen -f deploy.key
  ... and ajust rights because SSH is very strict:
  chown root:deploy deploy.key*
  chmod 640 deploy.key.*

* Read and configure evolistrano.conf file

* You have probably specific files which are not in repository
  (for example conf file)... then centralize them here and
  edit section "Deploy conf files" in evolistrano.sh

* You need also probably specific rights on you source code
  (for example adding write permission)... then
  edit section "UNIX rights" in evolistrano.sh

* If you need specific actions on WWW servers or whatever
  (SQL updates, etc.)... just edit sectionS "ADD SPECIFIC ACTIONS"

On remote servers
~~~~~~~~~~~~~~~~~

* Add "deploy" et "deploy-preprod" users on your WWW servers
  and "deploy" user on your static servers. Users should
  be in www group for adding easily write permissions!
  And add with authorization for new SSH key.

* Point DocumentRoot to $subdocroot/prod/current
  on your WWW servers for production and to
  $subdocrootpre/prod/current for preproduction

* Point DocumentRoot to $subdocroot/static
  on your static servers



USAGE
-----

Deploy for preproduction:
% evolistrano.sh <SVN revision>

Deploy for production:
% evolistrano.sh -P <SVN revision>



FAQ
---

Q: Can I have remote SVN?
A: Probably, but we don't test it. If you do, let us know if it works.

Q: Which language is used for Evolistrano?
A: Shell.

Q: What are the depends for Evolistrano?
A: Shell, SVN client, SSH client, rsync.
    Written for Linux, but you can use it on *BSD with few changes.

Q: Your tool is just 1% of Capistrano, why you do this crap?
A: Use Capistrano.

Q: Is your tool production-ready?
A: We use it on production environment, but you can't use it without read source code
   to be sure it will do the job.

Q: Evolistrano lacks of foo feature.
A: Send us patch.

About

Evolistrano is a small tool for source code deployment on several WWW servers.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages