@@ -199,237 +199,237 @@ So for example setting `BROKER_HOST` in
the config file.
In order to start using celery run::
paster celeryd <configfile.ini>
.. note::
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:
- 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
--------------------------
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;
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;
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;
proxy_buffer_size 16k;
proxy_buffers 4 16k;
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 the production.ini file::
[app:main]
use = egg:rhodecode
full_stack = true
static_files = false
lang=en
cache_dir = %(here)s/data
In order to not have the statics served by the application. This improves speed.
Apache virtual host example
---------------------------
Here is a sample configuration file for apache using proxy::
<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>
Additional tutorial
http://wiki.pylonshq.com/display/pylonscookbook/Apache+as+a+reverse+proxy+for+Pylons
Apache as subdirectory
----------------------
Apache subdirectory part::
<Location /<someprefix> >
ProxyPass http://127.0.0.1:5000/<someprefix>
ProxyPassReverse http://127.0.0.1:5000/<someprefix>
SetEnvIf X-Url-Scheme https HTTPS=1
</Location>
Besides the regular apache setup you will need to add the following to your .ini file::
filter-with = proxy-prefix
Add the following at the end of the .ini file::
[filter:proxy-prefix]
use = egg:PasteDeploy#prefix
prefix = /<someprefix>
then change <someprefix> into your choosen prefix
Apache's example WSGI+SSL config
--------------------------------
virtual host example::
<VirtualHost *:443>
ServerName hg.domain.eu:443
DocumentRoot /var/www
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/hg.domain.eu.cert
SSLCertificateKeyFile /etc/apache2/ssl/hg.domain.eu.key
SSLCertificateChainFile /etc/apache2/ssl/ca.cert
SetEnv HTTP_X_URL_SCHEME https
Alias /css /home/web/virtualenvs/hg/lib/python2.6/site-packages/rhodecode/public/css
Alias /images /home/web/virtualenvs/hg/lib/python2.6/site-packages/rhodecode/public/images
Alias /js /home/web/virtualenvs/hg/lib/python2.6/site-packages/rhodecode/public/js
WSGIDaemonProcess hg user=web group=web processes=1 threads=10 display-name=%{GROUP} python-path=/home/web/virtualenvs/hg/lib/python2.6/site-packages
WSGIPassAuthorization On
WSGIProcessGroup hg
WSGIApplicationGroup hg
WSGIScriptAlias / /home/web/apache/conf/hg.wsgi
<Directory /home/web/apache/conf>
Order deny,allow
</Directory>
<Directory /var/www>
ServerName hg.domain.eu
Redirect permanent / https://hg.domain.eu/
HG.WSGI::
import os
os.environ["HGENCODING"] = "UTF-8"
from paste.deploy import loadapp
from paste.script.util.logging_config import fileConfig
fileConfig('/home/web/virtualenvs/hg/config/production.ini')
application = loadapp('config:/home/web/virtualenvs/hg/config/production.ini'
Other configuration files
-------------------------
Some example init.d scripts can be found here, for debian and gentoo:
https://rhodeocode.org/rhodecode/files/tip/init.d
https://rhodecode.org/rhodecode/files/tip/init.d
Troubleshooting
---------------
: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
|
:Q: **Can't install celery/rabbitmq**
:A: Don't worry RhodeCode works without them too. No extra setup is required.
: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.
:Q: **Large pushes timeouts?**
:A: Make sure you set a proper max_body_size for the http server.
: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/
.. _mercurial: http://mercurial.selenic.com/
.. _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
Status change: