##// END OF EJS Templates
pep8ify
pep8ify

File last commit:

r1136:93b980eb default
r1211:a7e7c0fa beta
Show More
setup.rst
530 lines | 17.7 KiB | text/x-rst | RstLexer
updated docs, added sphinx build
r568 .. _setup:
Setup
=====
merge docs in beta with those corrected by Jason Harris
r1092 Setting up RhodeCode
more docs update
r572 --------------------------
merge docs in beta with those corrected by Jason Harris
r1092 First, you will need to create a RhodeCode configuration file. Run the following
command to do this::
more docs update
r572
docs update
r1123 paster make-config RhodeCode production.ini
more docs update
r572
merge docs in beta with those corrected by Jason Harris
r1092 - This will create the file `production.ini` in the current directory. This
configuration file contains the various settings for RhodeCode, e.g proxy port,
docs update
r845 email settings, usage of static files, cache, celery settings and logging.
merge docs in beta with those corrected by Jason Harris
r1092 Next, you need to create the databases used by RhodeCode. I recommend that you
use sqlite (default) or postgresql. If you choose a database other than the
default ensure you properly adjust the db url in your production.ini
configuration file to use this other database. Create the databases by running
the following command::
more docs update
r572
docs update
r1123 paster setup-app production.ini
more docs update
r572
merge docs in beta with those corrected by Jason Harris
r1092 This will prompt you for a "root" path. This "root" path is the location where
RhodeCode will store all of its repositories on the current machine. After
entering this "root" path ``setup-app`` will also prompt you for a username and password
for the initial admin account which ``setup-app`` sets up for you.
docs update
r845
merge docs in beta with those corrected by Jason Harris
r1092 - The ``setup-app`` command will create all of the needed tables and an admin
account. When choosing a root path you can either use a new empty location, or a
location which already contains existing repositories. If you choose a location
which contains existing repositories RhodeCode will simply add all of the
repositories at the chosen location to it's database. (Note: make sure you
specify the correct path to the root).
- Note: the given path for mercurial_ repositories **must** be write accessible
for the application. It's very important since the RhodeCode web interface will
work without write access, but when trying to do a push it will eventually fail
with permission denied errors unless it has write access.
more docs update
r572
merge docs in beta with those corrected by Jason Harris
r1092 You are now ready to use RhodeCode, to run it simply execute::
more docs update
r572
docs update
r1123 paster serve production.ini
more docs update
r572
merge docs in beta with those corrected by Jason Harris
r1092 - This command runs the RhodeCode server. The web app should be available at the
more docs update
r572 127.0.0.1:5000. This ip and port is configurable via the production.ini
docs update
r845 file created in previous step
merge docs in beta with those corrected by Jason Harris
r1092 - Use the admin account you created above when running ``setup-app`` to login to the web app.
- The default permissions on each repository is read, and the owner is admin.
Remember to update these if needed.
- In the admin panel you can toggle ldap, anonymous, permissions settings. As
well as edit more advanced options on users and repositories
Try copying your own mercurial repository into the "root" directory you are
using, then from within the RhodeCode web application choose Admin >
repositories. Then choose Add New Repository. Add the repository you copied into
the root. Test that you can browse your repository from within RhodeCode and then
try cloning your repository from RhodeCode with::
docs update
r1123 hg clone http://127.0.0.1:5000/<repository name>
merge docs in beta with those corrected by Jason Harris
r1092
where *repository name* is replaced by the name of your repository.
docs: changelog + setup update
r912 Using RhodeCode with SSH
------------------------
merge docs in beta with those corrected by Jason Harris
r1092 RhodeCode currently only hosts repositories using http and https. (The addition of
ssh hosting is a planned future feature.) However you can easily use ssh in
parallel with RhodeCode. (Repository access via ssh is a standard "out of
the box" feature of mercurial_ and you can use this to access any of the
repositories that RhodeCode is hosting. See PublishingRepositories_)
docs: changelog + setup update
r912 RhodeCode repository structures are kept in directories with the same name
merge docs in beta with those corrected by Jason Harris
r1092 as the project. When using repository groups, each group is a subdirectory.
This allows you to easily use ssh for accessing repositories.
docs: changelog + setup update
r912
merge docs in beta with those corrected by Jason Harris
r1092 In order to use ssh you need to make sure that your web-server and the users login
accounts have the correct permissions set on the appropriate directories. (Note
that these permissions are independent of any permissions you have set up using
the RhodeCode web interface.)
docs: changelog + setup update
r912
merge docs in beta with those corrected by Jason Harris
r1092 If your main directory (the same as set in RhodeCode settings) is for example
set to **/home/hg** and the repository you are using is named `rhodecode`, then
to clone via ssh you should run::
docs: changelog + setup update
r912
merge docs in beta with those corrected by Jason Harris
r1092 hg clone ssh://user@server.com/home/hg/rhodecode
Using other external tools such as mercurial-server_ or using ssh key based
authentication is fully supported.
docs: changelog + setup update
r912
merge docs in beta with those corrected by Jason Harris
r1092 Note: In an advanced setup, in order for your ssh access to use the same
permissions as set up via the RhodeCode web interface, you can create an
authentication hook to connect to the rhodecode db and runs check functions for
permissions against that.
#37 fixed json imports for python2.5...
r592
Implemented whoosh index building as paster command....
r683 Setting up Whoosh full text search
----------------------------------
merge docs in beta with those corrected by Jason Harris
r1092 Starting from version 1.1 the whoosh index can be build by using the paster
command ``make-index``. To use ``make-index`` you must specify the configuration
file that stores the location of the index, and the location of the repositories
(`--repo-location`).Starting from version 1.2 it is
fixes #90 + docs update
r894 also possible to specify a comma separated list of repositories (`--index-only`)
to build index only on chooses repositories skipping any other found in repos
location
merge docs in beta with those corrected by Jason Harris
r1092 You may optionally pass the option `-f` to enable a full index rebuild. Without
the `-f` option, indexing will run always in "incremental" mode.
Implemented whoosh index building as paster command....
r683
merge docs in beta with those corrected by Jason Harris
r1092 For an incremental index build use::
docs update, added ldap section, added troubleshooting section...
r707
docs and readme update
r1062 paster make-index production.ini --repo-location=<location for repos>
Implemented whoosh index building as paster command....
r683
merge docs in beta with those corrected by Jason Harris
r1092 For a full index rebuild use::
docs update, added ldap section, added troubleshooting section...
r707
docs and readme update
r1062 paster make-index production.ini -f --repo-location=<location for repos>
more docs update
r572
fixes #90 + docs update
r894
building index just for chosen repositories is possible with such command::
paster make-index production.ini --repo-location=<location for repos> --index-only=vcs,rhodecode
more docs update
r572
fixes #90 + docs update
r894
merge docs in beta with those corrected by Jason Harris
r1092 In order to do periodical index builds and keep your index always up to date.
fixes #90 + docs update
r894 It's recommended to do a crontab entry for incremental indexing.
merge docs in beta with those corrected by Jason Harris
r1092 An example entry might look like this::
more docs update
r572
docs update
r1123 /path/to/python/bin/paster /path/to/rhodecode/production.ini --repo-location=<location for repos>
more docs update
r572
merge docs in beta with those corrected by Jason Harris
r1092 When using incremental mode (the default) whoosh will check the last
modification date of each file and add it to be reindexed if a newer file is
available. The indexing daemon checks for any removed files and removes them
from index.
Implemented whoosh index building as paster command....
r683
merge docs in beta with those corrected by Jason Harris
r1092 If you want to rebuild index from scratch, you can use the `-f` flag as above,
or in the admin panel you can check `build from scratch` flag.
more docs update
r572
docs update, added ldap section, added troubleshooting section...
r707
Setting up LDAP support
-----------------------
RhodeCode starting from version 1.1 supports ldap authentication. In order
merge docs in beta with those corrected by Jason Harris
r1092 to use LDAP, you have to install the python-ldap_ package. This package is available
via pypi, so you can install it by running
docs update, added ldap section, added troubleshooting section...
r707
::
docs update
r1123 easy_install python-ldap
docs update, added ldap section, added troubleshooting section...
r707
::
docs update
r1123 pip install python-ldap
docs update, added ldap section, added troubleshooting section...
r707
docs update
r770 .. note::
merge docs in beta with those corrected by Jason Harris
r1092 python-ldap requires some certain libs on your system, so before installing
it check that you have at least `openldap`, and `sasl` libraries.
docs update, added ldap section, added troubleshooting section...
r707
Thayne Harbaugh
Update documentation for LDAP settings (and add Active Directory information).
r992 LDAP settings are located in admin->ldap section,
merge docs in beta with those corrected by Jason Harris
r1092 Here's a typical ldap setup::
Thayne Harbaugh
Update documentation for LDAP settings (and add Active Directory information).
r992
Connection settings
Enable LDAP = checked
Host = host.example.org
Port = 389
Account = <account>
Password = <password>
Enable LDAPS = checked
Certificate Checks = DEMAND
Search settings
Base DN = CN=users,DC=host,DC=example,DC=org
LDAP Filter = (&(objectClass=user)(!(objectClass=computer)))
LDAP Search Scope = SUBTREE
docs update, added ldap section, added troubleshooting section...
r707
Thayne Harbaugh
Update documentation for LDAP settings (and add Active Directory information).
r992 Attribute mappings
Login Attribute = uid
First Name Attribute = firstName
Last Name Attribute = lastName
E-mail Attribute = mail
.. _enable_ldap:
Enable LDAP : required
Whether to use LDAP for authenticating users.
.. _ldap_host:
Host : required
LDAP server hostname or IP address.
.. _Port:
Port : required
389 for un-encrypted LDAP, 636 for SSL-encrypted LDAP.
.. _ldap_account:
docs update, added ldap section, added troubleshooting section...
r707
Thayne Harbaugh
Update documentation for LDAP settings (and add Active Directory information).
r992 Account : optional
Only required if the LDAP server does not allow anonymous browsing of
records. This should be a special account for record browsing. This
will require `LDAP Password`_ below.
.. _LDAP Password:
Password : optional
Only required if the LDAP server does not allow anonymous browsing of
records.
.. _Enable LDAPS:
Enable LDAPS : optional
Check this if SSL encryption is necessary for communication with the
LDAP server - it will likely require `Port`_ to be set to a different
value (standard LDAPS port is 636). When LDAPS is enabled then
`Certificate Checks`_ is required.
.. _Certificate Checks:
docs update, added ldap section, added troubleshooting section...
r707
Thayne Harbaugh
Update documentation for LDAP settings (and add Active Directory information).
r992 Certificate Checks : optional
How SSL certificates verification is handled - this is only useful when
`Enable LDAPS`_ is enabled. Only DEMAND or HARD offer full SSL security while
the other options are susceptible to man-in-the-middle attacks. SSL
certificates can be installed to /etc/openldap/cacerts so that the
DEMAND or HARD options can be used with self-signed certificates or
certificates that do not have traceable certificates of authority.
NEVER
A serve certificate will never be requested or checked.
ALLOW
A server certificate is requested. Failure to provide a
certificate or providing a bad certificate will not terminate the
session.
TRY
A server certificate is requested. Failure to provide a
certificate does not halt the session; providing a bad certificate
halts the session.
DEMAND
A server certificate is requested and must be provided and
authenticated for the session to proceed.
fixes #77 and adds extendable base Dn with custom uid specification
r775
Thayne Harbaugh
Update documentation for LDAP settings (and add Active Directory information).
r992 HARD
The same as DEMAND.
.. _Base DN:
Base DN : required
The Distinguished Name (DN) where searches for users will be performed.
Searches can be controlled by `LDAP Filter`_ and `LDAP Search Scope`_.
.. _LDAP Filter:
LDAP Filter : optional
A LDAP filter defined by RFC 2254. This is more useful when `LDAP
Search Scope`_ is set to SUBTREE. The filter is useful for limiting
which LDAP objects are identified as representing Users for
authentication. The filter is augmented by `Login Attribute`_ below.
This can commonly be left blank.
.. _LDAP Search Scope:
LDAP Search Scope : required
This limits how far LDAP will search for a matching object.
BASE
Only allows searching of `Base DN`_ and is usually not what you
want.
ONELEVEL
Searches all entries under `Base DN`_, but not Base DN itself.
SUBTREE
Searches all entries below `Base DN`_, but not Base DN itself.
When using SUBTREE `LDAP Filter`_ is useful to limit object
location.
.. _Login Attribute:
docs update, added ldap section, added troubleshooting section...
r707
Thayne Harbaugh
Update documentation for LDAP settings (and add Active Directory information).
r992 Login Attribute : required
The LDAP record attribute that will be matched as the USERNAME or
ACCOUNT used to connect to RhodeCode. This will be added to `LDAP
Filter`_ for locating the User object. If `LDAP Filter`_ is specified as
"LDAPFILTER", `Login Attribute`_ is specified as "uid" and the user has
connected as "jsmith" then the `LDAP Filter`_ will be augmented as below
::
(&(LDAPFILTER)(uid=jsmith))
.. _ldap_attr_firstname:
First Name Attribute : required
The LDAP record attribute which represents the user's first name.
.. _ldap_attr_lastname:
Last Name Attribute : required
The LDAP record attribute which represents the user's last name.
.. _ldap_attr_email:
Email Attribute : required
The LDAP record attribute which represents the user's email address.
docs update, added ldap section, added troubleshooting section...
r707
Thayne Harbaugh
Update documentation for LDAP settings (and add Active Directory information).
r992 If all data are entered correctly, and python-ldap_ is properly installed
users should be granted access to RhodeCode with ldap accounts. At this
time user information is copied from LDAP into the RhodeCode user database.
This means that updates of an LDAP user object may not be reflected as a
user update in RhodeCode.
If You have problems with LDAP access and believe You entered correct
information check out the RhodeCode logs, any error messages sent from LDAP
will be saved there.
Active Directory
''''''''''''''''
docs update, added ldap section, added troubleshooting section...
r707
Thayne Harbaugh
Update documentation for LDAP settings (and add Active Directory information).
r992 RhodeCode can use Microsoft Active Directory for user authentication. This
is done through an LDAP or LDAPS connection to Active Directory. The
following LDAP configuration settings are typical for using Active
Directory ::
docs update, added ldap section, added troubleshooting section...
r707
Thayne Harbaugh
Update documentation for LDAP settings (and add Active Directory information).
r992 Base DN = OU=SBSUsers,OU=Users,OU=MyBusiness,DC=v3sys,DC=local
Login Attribute = sAMAccountName
First Name Attribute = givenName
Last Name Attribute = sn
E-mail Attribute = mail
All other LDAP settings will likely be site-specific and should be
appropriately configured.
fixed cache problem,...
r777
Setting Up Celery
-----------------
merge docs in beta with those corrected by Jason Harris
r1092 Since version 1.1 celery is configured by the rhodecode ini configuration files.
Simply set use_celery=true in the ini file then add / change the configuration
fixed cache problem,...
r777 variables inside the ini file.
merge docs in beta with those corrected by Jason Harris
r1092 Remember that the ini files use the format with '.' not with '_' like celery.
So for example setting `BROKER_HOST` in celery means setting `broker.host` in
fixed cache problem,...
r777 the config file.
merge docs in beta with those corrected by Jason Harris
r1092 In order to start using celery run::
fixed changelog, and setup docs. Yeeee a 1000 commit :)
r938
fixed cache problem,...
r777 paster celeryd <configfile.ini>
docs update for celeryd
r871 .. note::
merge docs in beta with those corrected by Jason Harris
r1092 Make sure you run this command from the same virtualenv, and with the same user
docs update for celeryd
r871 that rhodecode runs.
docs and readme update
r1062
HTTPS support
-------------
merge docs in beta with those corrected by Jason Harris
r1092 There are two ways to enable https:
- Set HTTP_X_URL_SCHEME in your http server headers, than rhodecode will
recognize this headers and make proper https redirections
- Alternatively, set `force_https = true` in the ini configuration to force using
https, no headers are needed than to enable https
docs update for celeryd
r871
more docs update
r572 Nginx virtual host example
--------------------------
docs update, added ldap section, added troubleshooting section...
r707 Sample config for nginx using proxy::
more docs update
r572
merge docs in beta with those corrected by Jason Harris
r1092 server {
listen 80;
server_name hg.myserver.com;
access_log /var/log/nginx/rhodecode.access.log;
error_log /var/log/nginx/rhodecode.error.log;
location / {
root /var/www/rhodecode/rhodecode/public/;
if (!-f $request_filename){
proxy_pass http://127.0.0.1:5000;
}
#this is important if you want to use https !!!
proxy_set_header X-Url-Scheme $scheme;
include /etc/nginx/proxy.conf;
}
}
updated docs, added sphinx build
r568
merge docs in beta with those corrected by Jason Harris
r1092 Here's the proxy.conf. It's tuned so it will not timeout on long
pushes or large pushes::
more docs update
r572
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Proxy-host $proxy_host;
client_max_body_size 400m;
client_body_buffer_size 128k;
proxy_buffering off;
proxy_connect_timeout 3600;
proxy_send_timeout 3600;
proxy_read_timeout 3600;
updated setup for nginx, due to some large push issues with previous setup
r968 proxy_buffer_size 16k;
proxy_buffers 4 16k;
more docs update
r572 proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
merge docs in beta with those corrected by Jason Harris
r1092 Also, when using root path with nginx you might set the static files to false
in the production.ini file::
more docs update
r572
merge docs in beta with those corrected by Jason Harris
r1092 [app:main]
use = egg:rhodecode
full_stack = true
static_files = false
lang=en
cache_dir = %(here)s/data
more docs update
r572
merge docs in beta with those corrected by Jason Harris
r1092 In order to not have the statics served by the application. This improves speed.
more docs update
r572
Updated docs, added apache proxy example config
r881
Apache virtual host example
---------------------------
merge docs in beta with those corrected by Jason Harris
r1092 Here is a sample configuration file for apache using proxy::
Updated docs, added apache proxy example config
r881
doc fix
r929 <VirtualHost *:80>
ServerName hg.myserver.com
ServerAlias hg.myserver.com
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
#important !
#Directive to properly generate url (clone url) for pylons
ProxyPreserveHost On
#rhodecode instance
ProxyPass / http://127.0.0.1:5000/
ProxyPassReverse / http://127.0.0.1:5000/
#to enable https use line below
#SetEnvIf X-Url-Scheme https HTTPS=1
</VirtualHost>
Updated docs, added apache proxy example config
r881
Additional tutorial
docs update
r744 http://wiki.pylonshq.com/display/pylonscookbook/Apache+as+a+reverse+proxy+for+Pylons
more docs update
r572
docs update, added ldap section, added troubleshooting section...
r707
docs and readme update
r1062 Apache as subdirectory
----------------------
Apache subdirectory part::
<Location /rhodecode>
ProxyPass http://127.0.0.1:59542/rhodecode
ProxyPassReverse http://127.0.0.1:59542/rhodecode
SetEnvIf X-Url-Scheme https HTTPS=1
</Location>
merge docs in beta with those corrected by Jason Harris
r1092 Besides the regular apache setup you will need to add the following to your .ini file::
docs and readme update
r1062
filter-with = proxy-prefix
Add the following at the end of the .ini file::
[filter:proxy-prefix]
use = egg:PasteDeploy#prefix
prefix = /<someprefix>
docs update, added ldap section, added troubleshooting section...
r707 Apache's example FCGI config
----------------------------
TODO !
docs update
r591 Other configuration files
-------------------------
merge docs in beta with those corrected by Jason Harris
r1092 Some example init.d scripts can be found here, for debian and gentoo:
docs update
r591
Updated docs, added apache proxy example config
r881 https://rhodeocode.org/rhodecode/files/tip/init.d
docs update
r591
docs update, added ldap section, added troubleshooting section...
r707 Troubleshooting
---------------
merge docs in beta with those corrected by Jason Harris
r1092 :Q: **Missing static files?**
:A: Make sure either to set the `static_files = true` in the .ini file or
double check the root path for your http setup. It should point to
docs update, added ldap section, added troubleshooting section...
r707 for example:
/home/my-virtual-python/lib/python2.6/site-packages/rhodecode/public
merge docs in beta with those corrected by Jason Harris
r1092 |
docs update, added ldap section, added troubleshooting section...
r707
merge docs in beta with those corrected by Jason Harris
r1092 :Q: **Can't install celery/rabbitmq**
:A: Don't worry RhodeCode works without them too. No extra setup is required.
docs update, added ldap section, added troubleshooting section...
r707
merge docs in beta with those corrected by Jason Harris
r1092 |
docs update, added ldap section, added troubleshooting section...
r707
merge docs in beta with those corrected by Jason Harris
r1092 :Q: **Long lasting push timeouts?**
:A: Make sure you set a longer timeouts in your proxy/fcgi settings, timeouts
are caused by https server and not RhodeCode.
|
docs update, added ldap section, added troubleshooting section...
r707
merge docs in beta with those corrected by Jason Harris
r1092 :Q: **Large pushes timeouts?**
:A: Make sure you set a proper max_body_size for the http server.
|
docs update
r591
merge docs in beta with those corrected by Jason Harris
r1092 :Q: **Apache doesn't pass basicAuth on pull/push?**
:A: Make sure you added `WSGIPassAuthorization true`.
For further questions search the `Issues tracker`_, or post a message in the `google group rhodecode`_
docs update
r591
more docs update
r572 .. _virtualenv: http://pypi.python.org/pypi/virtualenv
.. _python: http://www.python.org/
.. _mercurial: http://mercurial.selenic.com/
.. _celery: http://celeryproject.org/
Thayne Harbaugh
Update documentation for LDAP settings (and add Active Directory information).
r992 .. _rabbitmq: http://www.rabbitmq.com/
.. _python-ldap: http://www.python-ldap.org/
merge docs in beta with those corrected by Jason Harris
r1092 .. _mercurial-server: http://www.lshift.net/mercurial-server.html
.. _PublishingRepositories: http://mercurial.selenic.com/wiki/PublishingRepositories
.. _Issues tracker: https://bitbucket.org/marcinkuzminski/rhodecode/issues
.. _google group rhodecode: http://groups.google.com/group/rhodecode