##// END OF EJS Templates
release: Finish preparation for 4.4.1
release: Finish preparation for 4.4.1

File last commit:

r759:4e97ef26 default
r866:8dd86b41 v4.4.1 stable
Show More
vcs-server.rst
429 lines | 12.9 KiB | text/x-rst | RstLexer
project: added all source files and assets
r1 .. _vcs-server:
VCS Server Management
---------------------
The VCS Server handles |RCM| backend functionality. You need to configure
a VCS Server to run with a |RCM| instance. If you do not, you will be missing
the connection between |RCM| and its |repos|. This will cause error messages
on the web interface. You can run your setup in the following configurations,
currently the best performance is one VCS Server per |RCM| instance:
* One VCS Server per |RCM| instance.
* One VCS Server handling multiple instances.
.. important::
If your server locale settings are not correctly configured,
|RCE| and the VCS Server can run into issues. See this `Ask Ubuntu`_ post
which explains the problem and gives a solution.
For more information, see the following sections:
* :ref:`install-vcs`
* :ref:`config-vcs`
* :ref:`vcs-server-options`
* :ref:`vcs-server-versions`
* :ref:`vcs-server-maintain`
* :ref:`vcs-server-config-file`
docs: moving svn http docs to vcs server management
r759 * :ref:`svn-http`
project: added all source files and assets
r1
.. _install-vcs:
VCS Server Installation
^^^^^^^^^^^^^^^^^^^^^^^
To install a VCS Server, see
:ref:`Installing a VCS server <control:install-vcsserver>`.
.. _config-vcs:
Hooking |RCE| to its VCS Server
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
To configure a |RCE| instance to use a VCS server, see
:ref:`Configuring the VCS Server connection <control:manually-vcsserver-ini>`.
.. _vcs-server-options:
|RCE| VCS Server Options
^^^^^^^^^^^^^^^^^^^^^^^^
The following list shows the available options on the |RCM| side of the
connection to the VCS Server. The settings are configured per
instance in the
:file:`/home/{user}/.rccontrol/{instance-id}/rhodecode.ini` file.
.. rst-class:: dl-horizontal
\vcs.backends <available-vcs-systems>
Set a comma-separated list of the |repo| options available from the
web interface. The default is ``hg, git, svn``,
which is all |repo| types available.
\vcs.connection_timeout <seconds>
Set the length of time in seconds that the VCS Server waits for
requests to process. After the timeout expires,
the request is closed. The default is ``3600``. Set to a higher
number if you experience network latency, or timeout issues with very
large push/pull requests.
\vcs.server.enable <boolean>
Enable or disable the VCS Server. The available options are ``true`` or
``false``. The default is ``true``.
\vcs.server <host:port>
Set the host, either hostname or IP Address, and port of the VCS server
you wish to run with your |RCM| instance.
.. code-block:: ini
##################
### VCS CONFIG ###
##################
# set this line to match your VCS Server
vcs.server = 127.0.0.1:10004
# Set to False to disable the VCS Server
vcs.server.enable = True
vcs.backends = hg, git, svn
vcs.connection_timeout = 3600
.. _vcs-server-versions:
VCS Server Versions
^^^^^^^^^^^^^^^^^^^
An updated version of the VCS Server is released with each |RCE| version. Use
the VCS Server number that matches with the |RCE| version to pair the
appropriate ones together. For |RCE| versions pre 3.3.0,
VCS Server 1.X.Y works with |RCE| 3.X.Y, for example:
* VCS Server 1.0.0 works with |RCE| 3.0.0
* VCS Server 1.2.2 works with |RCE| 3.2.2
For |RCE| versions post 3.3.0, the VCS Server and |RCE| version numbers
match, for example:
* VCS Server |release| works with |RCE| |release|
.. _vcs-server-maintain:
VCS Server Memory Optimization
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
To configure the VCS server to manage the cache efficiently, you need to
configure the following options in the
:file:`/home/{user}/.rccontrol/{vcsserver-id}/vcsserver.ini` file. Once
configured, restart the VCS Server.
.. rst-class:: dl-horizontal
\beaker.cache.repo_object.type = memorylru
Configures the cache to discard the least recently used items.
This setting takes the following valid options:
* ``memorylru``: The default setting, which removes the least recently
used items from the cache.
* ``memory``: Runs the VCS Server without clearing the cache.
* ``nocache``: Runs the VCS Server without a cache. This will
dramatically reduce the VCS Server performance.
\beaker.cache.repo_object.max_items = 100
Sets the maximum number of items stored in the cache, before the cache
starts to be cleared.
As a general rule of thumb, running this value at 120 resulted in a
5GB cache. Running it at 240 resulted in a 9GB cache. Your results
will differ based on usage patterns and |repo| sizes.
Tweaking this value to run at a fairly constant memory load on your
server will help performance.
To clear the cache completely, you can restart the VCS Server.
.. important::
While the VCS Server handles a restart gracefully on the web interface,
it will drop connections during push/pull requests. So it is recommended
you only perform this when there is very little traffic on the instance.
Use the following example to restart your VCS Server,
for full details see the :ref:`RhodeCode Control CLI <control:rcc-cli>`.
.. code-block:: bash
$ rccontrol status
.. code-block:: vim
- NAME: vcsserver-1
- STATUS: RUNNING
- TYPE: VCSServer
- VERSION: 1.0.0
- URL: http://127.0.0.1:10001
$ rccontrol restart vcsserver-1
Instance "vcsserver-1" successfully stopped.
Instance "vcsserver-1" successfully started.
.. _vcs-server-config-file:
VCS Server Configuration
^^^^^^^^^^^^^^^^^^^^^^^^
You can configure settings for multiple VCS Servers on your
system using their individual configuration files. Use the following
properties inside the configuration file to set up your system. The default
location is :file:`home/{user}/.rccontrol/{vcsserver-id}/vcsserver.ini`.
For a more detailed explanation of the logger levers, see :ref:`debug-mode`.
.. rst-class:: dl-horizontal
\host <ip-address>
Set the host on which the VCS Server will run.
\port <int>
Set the port number on which the VCS Server will be available.
\locale <locale_utf>
Set the locale the VCS Server expects.
\threadpool_size <int>
Set the size of the threadpool used to communicate
with the WSGI workers. This should be at least 6 times the number of
WSGI worker processes.
\timeout <seconds>
Set the timeout for RPC communication in seconds.
.. note::
After making changes, you need to restart your VCS Server to pick them up.
.. code-block:: ini
################################################################################
# RhodeCode VCSServer - configuration #
# #
################################################################################
[DEFAULT]
host = 127.0.0.1
port = 9900
locale = en_US.UTF-8
# number of worker threads, this should be set based on a formula threadpool=N*6
# where N is number of RhodeCode Enterprise workers, eg. running 2 instances
# 8 gunicorn workers each would be 2 * 8 * 6 = 96, threadpool_size = 96
threadpool_size = 16
timeout = 0
# cache regions, please don't change
beaker.cache.regions = repo_object
beaker.cache.repo_object.type = memorylru
beaker.cache.repo_object.max_items = 1000
# cache auto-expires after N seconds
beaker.cache.repo_object.expire = 10
beaker.cache.repo_object.enabled = true
################################
### LOGGING CONFIGURATION ####
################################
[loggers]
keys = root, vcsserver, pyro4, beaker
[handlers]
keys = console
[formatters]
keys = generic
#############
## LOGGERS ##
#############
[logger_root]
level = NOTSET
handlers = console
[logger_vcsserver]
level = DEBUG
handlers =
qualname = vcsserver
propagate = 1
[logger_beaker]
level = DEBUG
handlers =
qualname = beaker
propagate = 1
[logger_pyro4]
level = DEBUG
handlers =
qualname = Pyro4
propagate = 1
##############
## HANDLERS ##
##############
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = DEBUG
formatter = generic
[handler_file]
class = FileHandler
args = ('vcsserver.log', 'a',)
level = DEBUG
formatter = generic
[handler_file_rotating]
class = logging.handlers.TimedRotatingFileHandler
# 'D', 5 - rotate every 5days
# you can set 'h', 'midnight'
args = ('vcsserver.log', 'D', 5, 10,)
level = DEBUG
formatter = generic
################
## FORMATTERS ##
################
[formatter_generic]
format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %Y-%m-%d %H:%M:%S
docs: moving svn http docs to vcs server management
r759 .. _svn-http:
project: added all source files and assets
r1
docs: moving svn http docs to vcs server management
r759 |svn| With Write Over HTTP
^^^^^^^^^^^^^^^^^^^^^^^^^^
To use |svn| with read/write support over the |svn| HTTP protocol, you have to
configure the HTTP |svn| backend.
Prerequisites
=============
- Enable HTTP support inside the admin VCS settings on your |RCE| instance
- You need to install the following tools on the machine that is running an
instance of |RCE|:
``Apache HTTP Server`` and
``mod_dav_svn``.
Using Ubuntu Distribution as an example you can run:
.. code-block:: bash
$ sudo apt-get install apache2 libapache2-mod-svn
Once installed you need to enable ``dav_svn``:
.. code-block:: bash
$ sudo a2enmod dav_svn
Configuring Apache Setup
========================
.. tip::
It is recommended to run Apache on a port other than 80, due to possible
conflicts with other HTTP servers like nginx. To do this, set the
``Listen`` parameter in the ``/etc/apache2/ports.conf`` file, for example
``Listen 8090``.
.. warning::
Make sure your Apache instance which runs the mod_dav_svn module is
only accessible by RhodeCode. Otherwise everyone is able to browse
the repositories or run subversion operations (checkout/commit/etc.).
It is also recommended to run apache as the same user as |RCE|, otherwise
permission issues could occur. To do this edit the ``/etc/apache2/envvars``
.. code-block:: apache
export APACHE_RUN_USER=rhodecode
export APACHE_RUN_GROUP=rhodecode
1. To configure Apache, create and edit a virtual hosts file, for example
:file:`/etc/apache2/sites-available/default.conf`. Below is an example
how to use one with auto-generated config ```mod_dav_svn.conf```
from configured |RCE| instance.
.. code-block:: apache
<VirtualHost *:8080>
ServerAdmin rhodecode-admin@localhost
DocumentRoot /var/www/html
ErrorLog ${'${APACHE_LOG_DIR}'}/error.log
CustomLog ${'${APACHE_LOG_DIR}'}/access.log combined
Include /home/user/.rccontrol/enterprise-1/mod_dav_svn.conf
</VirtualHost>
2. Go to the :menuselection:`Admin --> Settings --> VCS` page, and
enable :guilabel:`Proxy Subversion HTTP requests`, and specify the
:guilabel:`Subversion HTTP Server URL`.
3. Open the |RCE| configuration file,
:file:`/home/{user}/.rccontrol/{instance-id}/rhodecode.ini`
4. Add the following configuration option in the ``[app:main]``
section if you don't have it yet.
This enables mapping of the created |RCE| repo groups into special |svn| paths.
Each time a new repository group is created, the system will update
the template file and create new mapping. Apache web server needs to be
reloaded to pick up the changes on this file.
It's recommended to add reload into a crontab so the changes can be picked
automatically once someone creates a repository group inside RhodeCode.
.. code-block:: ini
##############################################
### Subversion proxy support (mod_dav_svn) ###
##############################################
## Enable or disable the config file generation.
svn.proxy.generate_config = true
## Generate config file with `SVNListParentPath` set to `On`.
svn.proxy.list_parent_path = true
## Set location and file name of generated config file.
svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
## File system path to the directory containing the repositories served by
## RhodeCode.
svn.proxy.parent_path_root = /path/to/repo_store
## Used as a prefix to the <Location> block in the generated config file. In
## most cases it should be set to `/`.
svn.proxy.location_root = /
This would create a special template file called ```mod_dav_svn.conf```. We
used that file path in the apache config above inside the Include statement.
Using |svn|
===========
Once |svn| has been enabled on your instance, you can use it with the
following examples. For more |svn| information, see the `Subversion Red Book`_
.. code-block:: bash
# To clone a repository
svn checkout http://my-svn-server.example.com/my-svn-repo
# svn commit
svn commit
.. _Subversion Red Book: http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.ref.svn
.. _Ask Ubuntu: http://askubuntu.com/questions/162391/how-do-i-fix-my-locale-issue