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 .