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 .

Reply via email to