Mercurial > kallithea
diff docs/setup.rst @ 1092:8af52e1224ff beta
merge docs in beta with those corrected by Jason Harris
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sat, 26 Feb 2011 23:40:55 +0100 |
parents | 053983a464e4 |
children | 9472a0150bf0 |
line wrap: on
line diff
--- a/docs/setup.rst Sat Feb 26 17:49:52 2011 +0100 +++ b/docs/setup.rst Sat Feb 26 23:40:55 2011 +0100 @@ -4,101 +4,117 @@ ===== -Setting up the application +Setting up RhodeCode -------------------------- -First You'll need to create RhodeCode config file. Run the following command -to do this - -:: +First, you will need to create a RhodeCode configuration file. Run the following +command to do this:: paster make-config RhodeCode production.ini -- This will create `production.ini` config inside the directory - this config contains various settings for RhodeCode, e.g proxy port, +- This will create the file `production.ini` in the current directory. This + configuration file contains the various settings for RhodeCode, e.g proxy port, email settings, usage of static files, cache, celery settings and logging. -Next we need to create the database. I'll recommend to use sqlite (default) -or postgresql. Make sure You properly adjust the db url in the .ini file to use -other than the default sqlite database - - -:: +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:: paster setup-app production.ini -- This command will create all needed tables and an admin account. - When asked for a path You can either use a new location of one with already - existing ones. RhodeCode will simply add all new found repositories to - it's database. Also make sure You specify correct path to repositories. -- Remember that the given path for mercurial_ repositories must be write - accessible for the application. It's very important since RhodeCode web - interface will work even without such an access but, when trying to do a - push it'll eventually fail with permission denied errors. +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. -You are ready to use RhodeCode, to run it simply execute +- 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. -:: +You are now ready to use RhodeCode, to run it simply execute:: paster serve production.ini -- This command runs the RhodeCode server the app should be available at the +- This command runs the RhodeCode server. The web app should be available at the 127.0.0.1:5000. This ip and port is configurable via the production.ini file created in previous step -- Use admin account you created to login. -- Default permissions on each repository is read, and owner is admin. So - 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 - +- 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:: + + hg clone http://127.0.0.1:5000/<repository name> + +where *repository name* is replaced by the name of your repository. + Using RhodeCode with SSH ------------------------ +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_) + RhodeCode repository structures are kept in directories with the same name -as the project, when using repository groups, each group is a a subdirectory. -This will allow You to use ssh for accessing repositories quite easy. There -are some exceptions when using ssh for accessing repositories. +as the project. When using repository groups, each group is a subdirectory. +This allows you to easily use ssh for accessing repositories. -You have to make sure that the webserver as well as the ssh users have unix -permission for directories. Secondly when using ssh rhodecode will not -authenticate those requests and permissions set by the web interface will not -work on the repositories accessed via ssh. There is a solution to this to use -auth hooks, that connects to rhodecode db, and runs check functions for -permissions. +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.) -TODO: post more info on this ! +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:: -if Your main directory (the same as set in RhodeCode settings) is set to -for example `\home\hg` and repository You are using is `rhodecode` + 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. -The command runned should look like this:: - hg clone ssh://user@server.com/home/hg/rhodecode - -Using external tools such as mercurial server or using ssh key based auth is -fully supported. +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. Setting up Whoosh full text search ---------------------------------- -Starting from version 1.1 whoosh index can be build using paster command. -You have to specify the config file that stores location of index, and -location of repositories (`--repo-location`). Starting from version 1.2 it is +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 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 -There is possible also to pass `-f` to the options -to enable full index rebuild. Without that indexing will run always in in -incremental mode. +You may optionally pass the option `-f` to enable a full index rebuild. Without +the `-f` option, indexing will run always in "incremental" mode. -incremental mode:: +For an incremental index build use:: paster make-index production.ini --repo-location=<location for repos> - - -for full index rebuild You can use:: +For a full index rebuild use:: paster make-index production.ini -f --repo-location=<location for repos> @@ -108,29 +124,27 @@ paster make-index production.ini --repo-location=<location for repos> --index-only=vcs,rhodecode -In order to do periodical index builds and keep Your index always up to date. +In order to do periodical index builds and keep your index always up to date. It's recommended to do a crontab entry for incremental indexing. -An example entry might look like this - -:: +An example entry might look like this:: /path/to/python/bin/paster /path/to/rhodecode/production.ini --repo-location=<location for repos> -When using incremental (default) mode whoosh will check last modification date -of each file and add it to reindex if newer file is available. Also indexing -daemon checks for removed files and removes them from index. +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. -Sometime You might want to rebuild index from scratch. You can do that using -the `-f` flag passed to paster command or, in admin panel You can check -`build from scratch` flag. +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. Setting up LDAP support ----------------------- RhodeCode starting from version 1.1 supports ldap authentication. In order -to use LDAP, You have to install python-ldap_ package. This package is available -via pypi, so You can install it by running +to use LDAP, you have to install the python-ldap_ package. This package is available +via pypi, so you can install it by running :: @@ -141,12 +155,12 @@ pip install python-ldap .. note:: - python-ldap requires some certain libs on Your system, so before installing - it check that You have at least `openldap`, and `sasl` libraries. + python-ldap requires some certain libs on your system, so before installing + it check that you have at least `openldap`, and `sasl` libraries. LDAP settings are located in admin->ldap section, -This is a typical LDAP setup:: +Here's a typical ldap setup:: Connection settings Enable LDAP = checked @@ -323,31 +337,32 @@ Setting Up Celery ----------------- -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 +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 variables inside the ini file. -Remember that the ini files uses format with '.' not with '_' like celery -so for example setting `BROKER_HOST` in celery means setting `broker.host` in +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 the config file. -In order to make start using celery run:: +In order to start using celery run:: paster celeryd <configfile.ini> .. note:: - Make sure You run this command from same virtualenv, and with the same user + Make sure you run this command from the same virtualenv, and with the same user that rhodecode runs. HTTPS support ------------- -There are two ways to enable https, first is to set HTTP_X_URL_SCHEME in -Your http server headers, than rhodecode will recognise this headers and make -proper https redirections, another way is to set `force_https = true` -in the ini cofiguration to force using https, no headers are needed than to -enable https +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 Nginx virtual host example @@ -355,24 +370,24 @@ Sample config for nginx using proxy:: - 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; - } - } + 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; + } + } -Here's the proxy.conf. It's tuned so it'll not timeout on long -pushes and also on large pushes:: +Here's the proxy.conf. It's tuned so it will not timeout on long +pushes or large pushes:: proxy_redirect off; proxy_set_header Host $host; @@ -391,23 +406,23 @@ proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; -Also when using root path with nginx You might set the static files to false -in production.ini file:: +Also, when using root path with nginx you might set the static files to false +in the production.ini file:: - [app:main] - use = egg:rhodecode - full_stack = true - static_files = false - lang=en - cache_dir = %(here)s/data + [app:main] + use = egg:rhodecode + full_stack = true + static_files = false + lang=en + cache_dir = %(here)s/data -To not have the statics served by the application. And improve speed. +In order to not have the statics served by the application. This improves speed. Apache virtual host example --------------------------- -Sample config for apache using proxy:: +Here is a sample configuration file for apache using proxy:: <VirtualHost *:80> ServerName hg.myserver.com @@ -448,7 +463,7 @@ SetEnvIf X-Url-Scheme https HTTPS=1 </Location> -Besides the regular apache setup You'll need to add such part to .ini file:: +Besides the regular apache setup you will need to add the following to your .ini file:: filter-with = proxy-prefix @@ -467,7 +482,7 @@ Other configuration files ------------------------- -Some example init.d script can be found here, for debian and gentoo: +Some example init.d scripts can be found here, for debian and gentoo: https://rhodeocode.org/rhodecode/files/tip/init.d @@ -475,29 +490,34 @@ Troubleshooting --------------- -- missing static files ? - - - 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 +: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 for example: /home/my-virtual-python/lib/python2.6/site-packages/rhodecode/public -- can't install celery/rabbitmq +| - - don't worry RhodeCode works without them too. No extra setup required - -- long lasting push timeouts ? +:Q: **Can't install celery/rabbitmq** +:A: Don't worry RhodeCode works without them too. No extra setup is required. - - make sure You set a longer timeouts in Your proxy/fcgi settings, timeouts - are caused by https server and not RhodeCode - -- large pushes timeouts ? +| - - make sure You set a proper max_body_size for the http server +: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. + +| -- Apache doesn't pass basicAuth on pull/push ? +:Q: **Large pushes timeouts?** +:A: Make sure you set a proper max_body_size for the http server. + +| - - Make sure You added `WSGIPassAuthorization true` +: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`_ .. _virtualenv: http://pypi.python.org/pypi/virtualenv .. _python: http://www.python.org/ @@ -505,3 +525,7 @@ .. _celery: http://celeryproject.org/ .. _rabbitmq: http://www.rabbitmq.com/ .. _python-ldap: http://www.python-ldap.org/ +.. _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 \ No newline at end of file