You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bloodhound.apache.org by Apache Bloodhound <bl...@incubator.apache.org> on 2012/11/15 04:46:48 UTC

[Apache Bloodhound] Proposals/BEP-0003/MultienvParentDir added

Page "Proposals/BEP-0003/MultienvParentDir" was added by olemis
Comment: [BEP-0003] Reference multi-environment setup
Content:
-------8<------8<------8<------8<------8<------8<------8<------8<--------

= Reference Multi-environment setup for Multi-product architecture #introduction

[BEP:0003 Multi-product architecture] emphasizes on [BEP:0003#backwards-copatibility backwards compatibiilty] whenever possible in order to make possible smooth upgrade paths from previous installations. This is particularly important for plugins to work out-of-the-box under the new circumstances or at least to make easier the upgrade development process for hack authors . Therefore a well-known setup using multiple environments has been considered as the starting point to design the current proposal . The main idea behind [BEP:0003 BEP 3] consist in replicating this scenario inside a single environment and a single database. This document serves to the purpose of illustrating how much similar is the novel multi-product specification to the former approach , and is a crucial resource to assert that the impact on plugins will be relatively minimal .

== Installation details #setup

Before multi-product support , managing multiple projects with ''Bloodhound'' means to create one environment for each particular case. An ''easy'' way to administer them may be achieved by considering the instructions explained below

  - [=#setup-config-global] Create a global configuration file 
    containing default settings for all environments.
  - [=#setup-folders] Layout environment directories as siblings 
    i.e. having the same parent directory. This way it will only be 
    necessary to run and configure a single instance to publish them 
    all using a web server.
  - [=#setup-db] Create multiple databases , one for each project .
  - [=#setup-config] For each environment either add 
    `--inherit=/path/to/global/trac.ini` option to 
    [TracAdmin#initenv trac-admin's initenv] command when creating 
    it or specify the path to the global configuration file in `file` option 
    in [TracIni#inherit-section inherit section] .
  - [=#setup-plugins] Place all plugins in a folder and configure 
    `plugins_dir` option in [TracIni#inherit-section inherit section] 
    accordingly. 
  - Do not install any plugins in environment's `plugin`
    folder.

== Discussion #discussion

The following figure offers a graphical representation of the situation after following the installation steps mentioned above. 

[[Image(Multienv.png)]]

Notice that there will be multiple instances of `trac.env.Environment` class , representing each project/directory . The set of plugins installed in every environment will be the same, each one contributing the same set of components . However there is a single instance of any component classes per environment due to the fact that components are [http://www.jot.fm/issues/issue_2007_03/column2/ parametric singletons]. They will interact with different databases , not necessarily of the same type.

On the other hand , changes performed in global configuration file will affect all environments. Nonetheless each environment will have its own configuration file and global options may be overriden on a per project basis. That has many implications including , but not limited to , different sets of components enabled.

-------8<------8<------8<------8<------8<------8<------8<------8<--------

--
Page URL: <https://issues.apache.org/bloodhound/wiki/Proposals/BEP-0003/MultienvParentDir>
Apache Bloodhound <https://issues.apache.org/bloodhound/>
The Apache Bloodhound (incubating) issue tracker

This is an automated message. Someone added your email address to be
notified of changes on 'Proposals/BEP-0003/MultienvParentDir' page.
If it was not you, please report to .