##// END OF EJS Templates
Rename paster command setup-rhodecode to setup-db
Bradley M. Kuhn -
r4185:aaa7c333 kallithea-2.2.5-r...
parent child Browse files
Show More
@@ -1,292 +1,292 b''
1 1 .. _installation_win:
2 2
3 3
4 4 Step by step Installation for Windows
5 5 =====================================
6 6
7 7
8 8 RhodeCode step-by-step install Guide for Windows
9 9
10 10 Target OS: Windows XP SP3 32bit English (Clean installation)
11 11 + All Windows Updates until 24-may-2012
12 12
13 13 .. note::
14 14
15 15 This installation is for 32bit systems, for 64bit windows you might need
16 16 to download proper 64bit versions of the different packages(Windows Installer, Win32py extensions)
17 17 plus some extra tweaks.
18 18 These extra steps haven been marked as "64bit".
19 19 Tested on Windows Server 2008 R2 SP1, 9-feb-2013.
20 20 If you run into any 64bit related problems, please check these pages:
21 21 - http://blog.victorjabur.com/2011/06/05/compiling-python-2-7-modules-on-windows-32-and-64-using-msvc-2008-express/
22 22 - http://bugs.python.org/issue7511
23 23
24 24 Step1 - Install Visual Studio 2008 Express
25 25 ------------------------------------------
26 26
27 27
28 28 Optional: You can also install MingW, but VS2008 installation is easier
29 29
30 30 Download "Visual C++ 2008 Express Edition with SP1" from:
31 31 http://www.microsoft.com/visualstudio/en-us/products/2008-editions/express
32 32 (if not found or relocated, google for "visual studio 2008 express" for
33 33 updated link)
34 34
35 35 You can also download full ISO file for offline installation, just
36 36 choose "All - Offline Install ISO image file" in the previous page and
37 37 choose "Visual C++ 2008 Express" when installing.
38 38
39 39 .. note::
40 40
41 41 Using other versions of Visual Studio will lead to random crashes.
42 42 You must use Visual Studio 2008!"
43 43
44 44 .. note::
45 45
46 46 Silverlight Runtime and SQL Server 2008 Express Edition are not
47 47 required, you can uncheck them
48 48
49 49 .. note::
50 50
51 51 64bit: You also need to install the Microsoft Windows SDK for .NET 3.5 SP1 (.NET 4.0 won't work).
52 52 Download from: http://www.microsoft.com/en-us/download/details.aspx?id=3138
53 53
54 54 .. note::
55 55
56 56 64bit: You also need to copy and rename a .bat file to make the Visual C++ compiler work.
57 57 I am not sure why this is not necessary for 32bit.
58 58 Copy C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat to C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat
59 59
60 60
61 61 Step2 - Install Python
62 62 ----------------------
63 63
64 64 Install Python 2.x.y (x >= 5) x86 version (32bit). DO NOT USE A 3.x version.
65 65 Download Python 2.x.y from:
66 66 http://www.python.org/download/
67 67
68 68 Choose "Windows Installer" (32bit version) not "Windows X86-64
69 69 Installer". While writing this guide, the latest version was v2.7.3.
70 70 Remember the specific major and minor version installed, because it will
71 71 be needed in the next step. In this case, it is "2.7".
72 72
73 73 .. note::
74 74
75 75 64bit: Just download and install the 64bit version of python.
76 76
77 77 Step3 - Install Win32py extensions
78 78 ----------------------------------
79 79
80 80 Download pywin32 from:
81 81 http://sourceforge.net/projects/pywin32/files/
82 82
83 83 - Click on "pywin32" folder
84 84 - Click on the first folder (in this case, Build 217, maybe newer when you try)
85 85 - Choose the file ending with ".win32-py2.x.exe" -> x being the minor
86 86 version of Python you installed (in this case, 7)
87 87 When writing this guide, the file was:
88 88 http://sourceforge.net/projects/pywin32/files/pywin32/Build%20217/pywin32-217.win32-py2.7.exe/download
89 89
90 90 .. note::
91 91
92 92 64bit: Download and install the 64bit version.
93 93 At the time of writing you can find this at:
94 94 http://sourceforge.net/projects/pywin32/files/pywin32/Build%20218/pywin32-218.win-amd64-py2.7.exe/download
95 95
96 96 Step4 - Python BIN
97 97 ------------------
98 98
99 99 Add Python BIN folder to the path
100 100
101 101 You have to add the Python folder to the path, you can do it manually
102 102 (editing "PATH" environment variable) or using Windows Support Tools
103 103 that came preinstalled in Vista/7 and can be installed in Windows XP.
104 104
105 105 - Using support tools on WINDOWS XP:
106 106 If you use Windows XP you can install them using Windows XP CD and
107 107 navigating to \SUPPORT\TOOLS. There, execute Setup.EXE (not MSI).
108 108 Afterwards, open a CMD and type::
109 109
110 110 SETX PATH "%PATH%;[your-python-path]" -M
111 111
112 112 Close CMD (the path variable will be updated then)
113 113
114 114 - Using support tools on WINDOWS Vista/7:
115 115
116 116 Open a CMD and type::
117 117
118 118 SETX PATH "%PATH%;[your-python-path]" /M
119 119
120 120 Please substitute [your-python-path] with your Python installation path.
121 121 Typically: C:\\Python27
122 122
123 123
124 124 Step5 - RhodeCode folder structure
125 125 ----------------------------------
126 126
127 127 Create a RhodeCode folder structure
128 128
129 129 This is only a example to install RhodeCode, you can of course change
130 130 it. However, this guide will follow the proposed structure, so please
131 131 later adapt the paths if you change them. My recommendation is to use
132 132 folders with NO SPACES. But you can try if you are brave...
133 133
134 134 Create the following folder structure::
135 135
136 136 C:\RhodeCode
137 137 C:\RhodeCode\Bin
138 138 C:\RhodeCode\Env
139 139 C:\RhodeCode\Repos
140 140
141 141
142 142 Step6 - Install virtualenv
143 143 ---------------------------
144 144
145 145 Install Virtual Env for Python
146 146
147 147 Navigate to: http://www.virtualenv.org/en/latest/index.html#installation
148 148 Right click on "virtualenv.py" file and choose "Save link as...".
149 149 Download to C:\\RhodeCode (or whatever you want)
150 150 (the file is located at
151 151 https://raw.github.com/pypa/virtualenv/master/virtualenv.py)
152 152
153 153 Create a virtual Python environment in C:\\RhodeCode\\Env (or similar). To
154 154 do so, open a CMD (Python Path should be included in Step3), navigate
155 155 where you downloaded "virtualenv.py", and write::
156 156
157 157 python virtualenv.py C:\RhodeCode\Env
158 158
159 159 (--no-site-packages is now the default behaviour of virtualenv, no need
160 160 to include it)
161 161
162 162
163 163 Step7 - Install RhodeCode
164 164 -------------------------
165 165
166 166 Finally, install RhodeCode
167 167
168 168 Close previously opened command prompt/s, and open a Visual Studio 2008
169 169 Command Prompt (**IMPORTANT!!**). To do so, go to Start Menu, and then open
170 170 "Microsoft Visual C++ 2008 Express Edition" -> "Visual Studio Tools" ->
171 171 "Visual Studio 2008 Command Prompt"
172 172
173 173 .. note::
174 174
175 175 64bit: For 64bit you need to modify the shortcut that is used to start the
176 176 Visual Studio 2008 Command Prompt. Use right-mouse click to open properties.
177 177
178 178 Change commandline from::
179 179
180 180 %comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" x86
181 181
182 182 to::
183 183
184 184 %comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" amd64
185 185
186 186
187 187 In that CMD (loaded with VS2008 PATHs) type::
188 188
189 189 cd C:\RhodeCode\Env\Scripts (or similar)
190 190 activate
191 191
192 192 The prompt will change into "(Env) C:\\RhodeCode\\Env\\Scripts" or similar
193 193 (depending of your folder structure). Then type::
194 194
195 195 pip install rhodecode
196 196
197 197 (long step, please wait until fully complete)
198 198
199 199 Some warnings will appear, don't worry as they are normal.
200 200
201 201
202 202 Step8 - Configuring RhodeCode
203 203 -----------------------------
204 204
205 205
206 206 steps taken from http://packages.python.org/RhodeCode/setup.html
207 207
208 208 You have to use the same Visual Studio 2008 command prompt as Step7, so
209 209 if you closed it reopen it following the same commands (including the
210 210 "activate" one). When ready, just type::
211 211
212 212 cd C:\RhodeCode\Bin
213 213 paster make-config RhodeCode production.ini
214 214
215 215 Then, you must edit production.ini to fit your needs (ip address, ip
216 216 port, mail settings, database, whatever). I recommend using NotePad++
217 217 (free) or similar text editor, as it handles well the EndOfLine
218 218 character differences between Unix and Windows
219 219 (http://notepad-plus-plus.org/)
220 220
221 221 For the sake of simplicity lets run it with the default settings. After
222 222 your edits (if any), in the previous Command Prompt, type::
223 223
224 paster setup-rhodecode production.ini
224 paster setup-db production.ini
225 225
226 226 (this time a NEW database will be installed, you must follow a different
227 227 step to later UPGRADE to a newer RhodeCode version)
228 228
229 229 The script will ask you for confirmation about creating a NEW database,
230 230 answer yes (y)
231 231 The script will ask you for repository path, answer C:\\RhodeCode\\Repos
232 232 (or similar)
233 233 The script will ask you for admin username and password, answer "admin"
234 234 + "123456" (or whatever you want)
235 235 The script will ask you for admin mail, answer "admin@xxxx.com" (or
236 236 whatever you want)
237 237
238 238 If you make some mistake and the script does not end, don't worry, start
239 239 it again.
240 240
241 241
242 242 Step9 - Running RhodeCode
243 243 -------------------------
244 244
245 245
246 246 In the previous command prompt, being in the C:\\RhodeCode\\Bin folder,
247 247 just type::
248 248
249 249 paster serve production.ini
250 250
251 251 Open yout web server, and go to http://127.0.0.1:5000
252 252
253 253 It works!! :-)
254 254
255 255 Remark:
256 256 If it does not work first time, just Ctrl-C the CMD process and start it
257 257 again. Don't forget the "http://" in Internet Explorer
258 258
259 259
260 260
261 261 What this Guide does not cover:
262 262
263 263 - Installing Celery
264 264 - Running RhodeCode as Windows Service. You can investigate here:
265 265
266 266 - http://pypi.python.org/pypi/wsgisvc
267 267 - http://ryrobes.com/python/running-python-scripts-as-a-windows-service/
268 268 - http://wiki.pylonshq.com/display/pylonscookbook/How+to+run+Pylons+as+a+Windows+service
269 269
270 270 - Using Apache. You can investigate here:
271 271
272 272 - https://groups.google.com/group/rhodecode/msg/c433074e813ffdc4
273 273
274 274
275 275 Upgrading
276 276 =========
277 277
278 278 Stop running RhodeCode
279 279 Open a CommandPrompt like in Step7 (VS2008 path + activate) and type::
280 280
281 281 easy_install -U rhodecode
282 282 cd \RhodeCode\Bin
283 283
284 284 { backup your production.ini file now} ::
285 285
286 286 paster make-config RhodeCode production.ini
287 287
288 288 (check changes and update your production.ini accordingly) ::
289 289
290 290 paster upgrade-db production.ini (update database)
291 291
292 292 Full steps in http://packages.python.org/RhodeCode/upgrade.html
@@ -1,745 +1,745 b''
1 1 .. _setup:
2 2
3 3 =====
4 4 Setup
5 5 =====
6 6
7 7
8 8 Setting up RhodeCode
9 9 --------------------
10 10
11 11 First, you will need to create a RhodeCode configuration file. Run the
12 12 following command to do this::
13 13
14 14 paster make-config RhodeCode production.ini
15 15
16 16 - This will create the file `production.ini` in the current directory. This
17 17 configuration file contains the various settings for RhodeCode, e.g proxy
18 18 port, email settings, usage of static files, cache, celery settings and
19 19 logging.
20 20
21 21
22 22 Next, you need to create the databases used by RhodeCode. I recommend that you
23 23 use postgresql or sqlite (default). If you choose a database other than the
24 24 default ensure you properly adjust the db url in your production.ini
25 25 configuration file to use this other database. RhodeCode currently supports
26 26 postgresql, sqlite and mysql databases. Create the database by running
27 27 the following command::
28 28
29 paster setup-rhodecode production.ini
29 paster setup-db production.ini
30 30
31 31 This will prompt you for a "root" path. This "root" path is the location where
32 32 RhodeCode will store all of its repositories on the current machine. After
33 entering this "root" path ``setup-rhodecode`` will also prompt you for a username
34 and password for the initial admin account which ``setup-rhodecode`` sets
33 entering this "root" path ``setup-db`` will also prompt you for a username
34 and password for the initial admin account which ``setup-db`` sets
35 35 up for you.
36 36
37 37 setup process can be fully automated, example for lazy::
38 38
39 paster setup-rhodecode production.ini --user=nn --password=secret --email=nn@your.kallithea.server --repos=/home/nn/my_repos
39 paster setup-db production.ini --user=nn --password=secret --email=nn@your.kallithea.server --repos=/home/nn/my_repos
40 40
41 41
42 - The ``setup-rhodecode`` command will create all of the needed tables and an
42 - The ``setup-db`` command will create all of the needed tables and an
43 43 admin account. When choosing a root path you can either use a new empty
44 44 location, or a location which already contains existing repositories. If you
45 45 choose a location which contains existing repositories RhodeCode will simply
46 46 add all of the repositories at the chosen location to it's database.
47 47 (Note: make sure you specify the correct path to the root).
48 48 - Note: the given path for mercurial_ repositories **must** be write accessible
49 49 for the application. It's very important since the RhodeCode web interface
50 50 will work without write access, but when trying to do a push it will
51 51 eventually fail with permission denied errors unless it has write access.
52 52
53 53 You are now ready to use RhodeCode, to run it simply execute::
54 54
55 55 paster serve production.ini
56 56
57 57 - This command runs the RhodeCode server. The web app should be available at the
58 58 127.0.0.1:5000. This ip and port is configurable via the production.ini
59 59 file created in previous step
60 - Use the admin account you created above when running ``setup-rhodecode``
60 - Use the admin account you created above when running ``setup-db``
61 61 to login to the web app.
62 62 - The default permissions on each repository is read, and the owner is admin.
63 63 Remember to update these if needed.
64 64 - In the admin panel you can toggle ldap, anonymous, permissions settings. As
65 65 well as edit more advanced options on users and repositories
66 66
67 67 Optionally users can create `rcextensions` package that extends RhodeCode
68 68 functionality. To do this simply execute::
69 69
70 70 paster make-rcext production.ini
71 71
72 72 This will create `rcextensions` package in the same place that your `ini` file
73 73 lives. With `rcextensions` it's possible to add additional mapping for whoosh,
74 74 stats and add additional code into the push/pull/create/delete repo hooks.
75 75 For example for sending signals to build-bots such as jenkins.
76 76 Please see the `__init__.py` file inside `rcextensions` package
77 77 for more details.
78 78
79 79
80 80 Using RhodeCode with SSH
81 81 ------------------------
82 82
83 83 RhodeCode currently only hosts repositories using http and https. (The addition
84 84 of ssh hosting is a planned future feature.) However you can easily use ssh in
85 85 parallel with RhodeCode. (Repository access via ssh is a standard "out of
86 86 the box" feature of mercurial_ and you can use this to access any of the
87 87 repositories that RhodeCode is hosting. See PublishingRepositories_)
88 88
89 89 RhodeCode repository structures are kept in directories with the same name
90 90 as the project. When using repository groups, each group is a subdirectory.
91 91 This allows you to easily use ssh for accessing repositories.
92 92
93 93 In order to use ssh you need to make sure that your web-server and the users
94 94 login accounts have the correct permissions set on the appropriate directories.
95 95 (Note that these permissions are independent of any permissions you have set up
96 96 using the RhodeCode web interface.)
97 97
98 98 If your main directory (the same as set in RhodeCode settings) is for example
99 99 set to **/home/hg** and the repository you are using is named `rhodecode`, then
100 100 to clone via ssh you should run::
101 101
102 102 hg clone ssh://user@server.com/home/hg/rhodecode
103 103
104 104 Using other external tools such as mercurial-server_ or using ssh key based
105 105 authentication is fully supported.
106 106
107 107 Note: In an advanced setup, in order for your ssh access to use the same
108 108 permissions as set up via the RhodeCode web interface, you can create an
109 109 authentication hook to connect to the rhodecode db and runs check functions for
110 110 permissions against that.
111 111
112 112 Setting up Whoosh full text search
113 113 ----------------------------------
114 114
115 115 Starting from version 1.1 the whoosh index can be build by using the paster
116 116 command ``make-index``. To use ``make-index`` you must specify the configuration
117 117 file that stores the location of the index. You may specify the location of the
118 118 repositories (`--repo-location`). If not specified, this value is retrieved
119 119 from the RhodeCode database. This was required prior to 1.2. Starting from
120 120 version 1.2 it is also possible to specify a comma separated list of
121 121 repositories (`--index-only`) to build index only on chooses repositories
122 122 skipping any other found in repos location
123 123
124 124 You may optionally pass the option `-f` to enable a full index rebuild. Without
125 125 the `-f` option, indexing will run always in "incremental" mode.
126 126
127 127 For an incremental index build use::
128 128
129 129 paster make-index production.ini
130 130
131 131 For a full index rebuild use::
132 132
133 133 paster make-index production.ini -f
134 134
135 135
136 136 building index just for chosen repositories is possible with such command::
137 137
138 138 paster make-index production.ini --index-only=vcs,rhodecode
139 139
140 140
141 141 In order to do periodical index builds and keep your index always up to date.
142 142 It's recommended to do a crontab entry for incremental indexing.
143 143 An example entry might look like this::
144 144
145 145 /path/to/python/bin/paster make-index /path/to/rhodecode/production.ini
146 146
147 147 When using incremental mode (the default) whoosh will check the last
148 148 modification date of each file and add it to be reindexed if a newer file is
149 149 available. The indexing daemon checks for any removed files and removes them
150 150 from index.
151 151
152 152 If you want to rebuild index from scratch, you can use the `-f` flag as above,
153 153 or in the admin panel you can check `build from scratch` flag.
154 154
155 155
156 156 Setting up LDAP support
157 157 -----------------------
158 158
159 159 RhodeCode starting from version 1.1 supports ldap authentication. In order
160 160 to use LDAP, you have to install the python-ldap_ package. This package is
161 161 available via pypi, so you can install it by running
162 162
163 163 using easy_install::
164 164
165 165 easy_install python-ldap
166 166
167 167 using pip::
168 168
169 169 pip install python-ldap
170 170
171 171 .. note::
172 172 python-ldap requires some certain libs on your system, so before installing
173 173 it check that you have at least `openldap`, and `sasl` libraries.
174 174
175 175 LDAP settings are located in admin->ldap section,
176 176
177 177 Here's a typical ldap setup::
178 178
179 179 Connection settings
180 180 Enable LDAP = checked
181 181 Host = host.example.org
182 182 Port = 389
183 183 Account = <account>
184 184 Password = <password>
185 185 Connection Security = LDAPS connection
186 186 Certificate Checks = DEMAND
187 187
188 188 Search settings
189 189 Base DN = CN=users,DC=host,DC=example,DC=org
190 190 LDAP Filter = (&(objectClass=user)(!(objectClass=computer)))
191 191 LDAP Search Scope = SUBTREE
192 192
193 193 Attribute mappings
194 194 Login Attribute = uid
195 195 First Name Attribute = firstName
196 196 Last Name Attribute = lastName
197 197 E-mail Attribute = mail
198 198
199 199 If your user groups are placed in a Organisation Unit (OU) structure the Search Settings configuration differs::
200 200
201 201 Search settings
202 202 Base DN = DC=host,DC=example,DC=org
203 203 LDAP Filter = (&(memberOf=CN=your user group,OU=subunit,OU=unit,DC=host,DC=example,DC=org)(objectClass=user))
204 204 LDAP Search Scope = SUBTREE
205 205
206 206 .. _enable_ldap:
207 207
208 208 Enable LDAP : required
209 209 Whether to use LDAP for authenticating users.
210 210
211 211 .. _ldap_host:
212 212
213 213 Host : required
214 214 LDAP server hostname or IP address. Can be also a comma separated
215 215 list of servers to support LDAP fail-over.
216 216
217 217 .. _Port:
218 218
219 219 Port : required
220 220 389 for un-encrypted LDAP, 636 for SSL-encrypted LDAP.
221 221
222 222 .. _ldap_account:
223 223
224 224 Account : optional
225 225 Only required if the LDAP server does not allow anonymous browsing of
226 226 records. This should be a special account for record browsing. This
227 227 will require `LDAP Password`_ below.
228 228
229 229 .. _LDAP Password:
230 230
231 231 Password : optional
232 232 Only required if the LDAP server does not allow anonymous browsing of
233 233 records.
234 234
235 235 .. _Enable LDAPS:
236 236
237 237 Connection Security : required
238 238 Defines the connection to LDAP server
239 239
240 240 No encryption
241 241 Plain non encrypted connection
242 242
243 243 LDAPS connection
244 244 Enable ldaps connection. It will likely require `Port`_ to be set to
245 245 a different value (standard LDAPS port is 636). When LDAPS is enabled
246 246 then `Certificate Checks`_ is required.
247 247
248 248 START_TLS on LDAP connection
249 249 START TLS connection
250 250
251 251 .. _Certificate Checks:
252 252
253 253 Certificate Checks : optional
254 254 How SSL certificates verification is handled - this is only useful when
255 255 `Enable LDAPS`_ is enabled. Only DEMAND or HARD offer full SSL security
256 256 while the other options are susceptible to man-in-the-middle attacks. SSL
257 257 certificates can be installed to /etc/openldap/cacerts so that the
258 258 DEMAND or HARD options can be used with self-signed certificates or
259 259 certificates that do not have traceable certificates of authority.
260 260
261 261 NEVER
262 262 A serve certificate will never be requested or checked.
263 263
264 264 ALLOW
265 265 A server certificate is requested. Failure to provide a
266 266 certificate or providing a bad certificate will not terminate the
267 267 session.
268 268
269 269 TRY
270 270 A server certificate is requested. Failure to provide a
271 271 certificate does not halt the session; providing a bad certificate
272 272 halts the session.
273 273
274 274 DEMAND
275 275 A server certificate is requested and must be provided and
276 276 authenticated for the session to proceed.
277 277
278 278 HARD
279 279 The same as DEMAND.
280 280
281 281 .. _Base DN:
282 282
283 283 Base DN : required
284 284 The Distinguished Name (DN) where searches for users will be performed.
285 285 Searches can be controlled by `LDAP Filter`_ and `LDAP Search Scope`_.
286 286
287 287 .. _LDAP Filter:
288 288
289 289 LDAP Filter : optional
290 290 A LDAP filter defined by RFC 2254. This is more useful when `LDAP
291 291 Search Scope`_ is set to SUBTREE. The filter is useful for limiting
292 292 which LDAP objects are identified as representing Users for
293 293 authentication. The filter is augmented by `Login Attribute`_ below.
294 294 This can commonly be left blank.
295 295
296 296 .. _LDAP Search Scope:
297 297
298 298 LDAP Search Scope : required
299 299 This limits how far LDAP will search for a matching object.
300 300
301 301 BASE
302 302 Only allows searching of `Base DN`_ and is usually not what you
303 303 want.
304 304
305 305 ONELEVEL
306 306 Searches all entries under `Base DN`_, but not Base DN itself.
307 307
308 308 SUBTREE
309 309 Searches all entries below `Base DN`_, but not Base DN itself.
310 310 When using SUBTREE `LDAP Filter`_ is useful to limit object
311 311 location.
312 312
313 313 .. _Login Attribute:
314 314
315 315 Login Attribute : required
316 316 The LDAP record attribute that will be matched as the USERNAME or
317 317 ACCOUNT used to connect to RhodeCode. This will be added to `LDAP
318 318 Filter`_ for locating the User object. If `LDAP Filter`_ is specified as
319 319 "LDAPFILTER", `Login Attribute`_ is specified as "uid" and the user has
320 320 connected as "jsmith" then the `LDAP Filter`_ will be augmented as below
321 321 ::
322 322
323 323 (&(LDAPFILTER)(uid=jsmith))
324 324
325 325 .. _ldap_attr_firstname:
326 326
327 327 First Name Attribute : required
328 328 The LDAP record attribute which represents the user's first name.
329 329
330 330 .. _ldap_attr_lastname:
331 331
332 332 Last Name Attribute : required
333 333 The LDAP record attribute which represents the user's last name.
334 334
335 335 .. _ldap_attr_email:
336 336
337 337 Email Attribute : required
338 338 The LDAP record attribute which represents the user's email address.
339 339
340 340 If all data are entered correctly, and python-ldap_ is properly installed
341 341 users should be granted access to RhodeCode with ldap accounts. At this
342 342 time user information is copied from LDAP into the RhodeCode user database.
343 343 This means that updates of an LDAP user object may not be reflected as a
344 344 user update in RhodeCode.
345 345
346 346 If You have problems with LDAP access and believe You entered correct
347 347 information check out the RhodeCode logs, any error messages sent from LDAP
348 348 will be saved there.
349 349
350 350 Active Directory
351 351 ''''''''''''''''
352 352
353 353 RhodeCode can use Microsoft Active Directory for user authentication. This
354 354 is done through an LDAP or LDAPS connection to Active Directory. The
355 355 following LDAP configuration settings are typical for using Active
356 356 Directory ::
357 357
358 358 Base DN = OU=SBSUsers,OU=Users,OU=MyBusiness,DC=v3sys,DC=local
359 359 Login Attribute = sAMAccountName
360 360 First Name Attribute = givenName
361 361 Last Name Attribute = sn
362 362 E-mail Attribute = mail
363 363
364 364 All other LDAP settings will likely be site-specific and should be
365 365 appropriately configured.
366 366
367 367
368 368 Authentication by container or reverse-proxy
369 369 --------------------------------------------
370 370
371 371 Starting with version 1.3, RhodeCode supports delegating the authentication
372 372 of users to its WSGI container, or to a reverse-proxy server through which all
373 373 clients access the application.
374 374
375 375 When these authentication methods are enabled in RhodeCode, it uses the
376 376 username that the container/proxy (Apache/Nginx/etc) authenticated and doesn't
377 377 perform the authentication itself. The authorization, however, is still done by
378 378 RhodeCode according to its settings.
379 379
380 380 When a user logs in for the first time using these authentication methods,
381 381 a matching user account is created in RhodeCode with default permissions. An
382 382 administrator can then modify it using RhodeCode's admin interface.
383 383 It's also possible for an administrator to create accounts and configure their
384 384 permissions before the user logs in for the first time.
385 385
386 386 Container-based authentication
387 387 ''''''''''''''''''''''''''''''
388 388
389 389 In a container-based authentication setup, RhodeCode reads the user name from
390 390 the ``REMOTE_USER`` server variable provided by the WSGI container.
391 391
392 392 After setting up your container (see `Apache's WSGI config`_), you'd need
393 393 to configure it to require authentication on the location configured for
394 394 RhodeCode.
395 395
396 396 In order for RhodeCode to start using the provided username, you should set the
397 397 following in the [app:main] section of your .ini file::
398 398
399 399 container_auth_enabled = true
400 400
401 401
402 402 Proxy pass-through authentication
403 403 '''''''''''''''''''''''''''''''''
404 404
405 405 In a proxy pass-through authentication setup, RhodeCode reads the user name
406 406 from the ``X-Forwarded-User`` request header, which should be configured to be
407 407 sent by the reverse-proxy server.
408 408
409 409 After setting up your proxy solution (see `Apache virtual host reverse proxy example`_,
410 410 `Apache as subdirectory`_ or `Nginx virtual host example`_), you'd need to
411 411 configure the authentication and add the username in a request header named
412 412 ``X-Forwarded-User``.
413 413
414 414 For example, the following config section for Apache sets a subdirectory in a
415 415 reverse-proxy setup with basic auth::
416 416
417 417 <Location /<someprefix> >
418 418 ProxyPass http://127.0.0.1:5000/<someprefix>
419 419 ProxyPassReverse http://127.0.0.1:5000/<someprefix>
420 420 SetEnvIf X-Url-Scheme https HTTPS=1
421 421
422 422 AuthType Basic
423 423 AuthName "RhodeCode authentication"
424 424 AuthUserFile /home/web/rhodecode/.htpasswd
425 425 require valid-user
426 426
427 427 RequestHeader unset X-Forwarded-User
428 428
429 429 RewriteEngine On
430 430 RewriteCond %{LA-U:REMOTE_USER} (.+)
431 431 RewriteRule .* - [E=RU:%1]
432 432 RequestHeader set X-Forwarded-User %{RU}e
433 433 </Location>
434 434
435 435 In order for RhodeCode to start using the forwarded username, you should set
436 436 the following in the [app:main] section of your .ini file::
437 437
438 438 proxypass_auth_enabled = true
439 439
440 440 .. note::
441 441 If you enable proxy pass-through authentication, make sure your server is
442 442 only accessible through the proxy. Otherwise, any client would be able to
443 443 forge the authentication header and could effectively become authenticated
444 444 using any account of their liking.
445 445
446 446 Integration with Issue trackers
447 447 -------------------------------
448 448
449 449 RhodeCode provides a simple integration with issue trackers. It's possible
450 450 to define a regular expression that will fetch issue id stored in commit
451 451 messages and replace that with an url to this issue. To enable this simply
452 452 uncomment following variables in the ini file::
453 453
454 454 issue_pat = (?:^#|\s#)(\w+)
455 455 issue_server_link = https://myissueserver.com/{repo}/issue/{id}
456 456 issue_prefix = #
457 457
458 458 `issue_pat` is the regular expression that will fetch issues from commit messages.
459 459 Default regex will match issues in format of #<number> eg. #300.
460 460
461 461 Matched issues will be replace with the link specified as `issue_server_link`
462 462 {id} will be replaced with issue id, and {repo} with repository name.
463 463 Since the # is striped `issue_prefix` is added as a prefix to url.
464 464 `issue_prefix` can be something different than # if you pass
465 465 ISSUE- as issue prefix this will generate an url in format::
466 466
467 467 <a href="https://myissueserver.com/example_repo/issue/300">ISSUE-300</a>
468 468
469 469 Hook management
470 470 ---------------
471 471
472 472 Hooks can be managed in similar way to this used in .hgrc files.
473 473 To access hooks setting click `advanced setup` on Hooks section of Mercurial
474 474 Settings in Admin.
475 475
476 476 There are 4 built in hooks that cannot be changed (only enable/disable by
477 477 checkboxes on previos section).
478 478 To add another custom hook simply fill in first section with
479 479 <name>.<hook_type> and the second one with hook path. Example hooks
480 480 can be found at *rhodecode.lib.hooks*.
481 481
482 482
483 483 Changing default encoding
484 484 -------------------------
485 485
486 486 By default RhodeCode uses utf8 encoding, starting from 1.3 series this
487 487 can be changed, simply edit default_encoding in .ini file to desired one.
488 488 This affects many parts in rhodecode including committers names, filenames,
489 489 encoding of commit messages. In addition RhodeCode can detect if `chardet`
490 490 library is installed. If `chardet` is detected RhodeCode will fallback to it
491 491 when there are encode/decode errors.
492 492
493 493
494 494 Setting Up Celery
495 495 -----------------
496 496
497 497 Since version 1.1 celery is configured by the rhodecode ini configuration files.
498 498 Simply set use_celery=true in the ini file then add / change the configuration
499 499 variables inside the ini file.
500 500
501 501 Remember that the ini files use the format with '.' not with '_' like celery.
502 502 So for example setting `BROKER_HOST` in celery means setting `broker.host` in
503 503 the config file.
504 504
505 505 In order to start using celery run::
506 506
507 507 paster celeryd <configfile.ini>
508 508
509 509
510 510 .. note::
511 511 Make sure you run this command from the same virtualenv, and with the same
512 512 user that rhodecode runs.
513 513
514 514 HTTPS support
515 515 -------------
516 516
517 517 There are two ways to enable https:
518 518
519 519 - Set HTTP_X_URL_SCHEME in your http server headers, than rhodecode will
520 520 recognize this headers and make proper https redirections
521 521 - Alternatively, change the `force_https = true` flag in the ini configuration
522 522 to force using https, no headers are needed than to enable https
523 523
524 524
525 525 Nginx virtual host example
526 526 --------------------------
527 527
528 528 Sample config for nginx using proxy::
529 529
530 530 upstream rc {
531 531 server 127.0.0.1:5000;
532 532 # add more instances for load balancing
533 533 #server 127.0.0.1:5001;
534 534 #server 127.0.0.1:5002;
535 535 }
536 536
537 537 ## gist alias
538 538 server {
539 539 listen 443;
540 540 server_name gist.myserver.com;
541 541 access_log /var/log/nginx/gist.access.log;
542 542 error_log /var/log/nginx/gist.error.log;
543 543
544 544 ssl on;
545 545 ssl_certificate gist.your.kallithea.server.crt;
546 546 ssl_certificate_key gist.your.kallithea.server.key;
547 547
548 548 ssl_session_timeout 5m;
549 549
550 550 ssl_protocols SSLv3 TLSv1;
551 551 ssl_ciphers DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:EDH-RSA-DES-CBC3-SHA:AES256-SHA:DES-CBC3-SHA:AES128-SHA:RC4-SHA:RC4-MD5;
552 552 ssl_prefer_server_ciphers on;
553 553
554 554 rewrite ^/(.+)$ https://your.kallithea.server/_admin/gists/$1;
555 555 rewrite (.*) https://your.kallithea.server/_admin/gists;
556 556 }
557 557
558 558 server {
559 559 listen 443;
560 560 server_name your.kallithea.server;
561 561 access_log /var/log/nginx/rhodecode.access.log;
562 562 error_log /var/log/nginx/rhodecode.error.log;
563 563
564 564 ssl on;
565 565 ssl_certificate your.kallithea.server.crt;
566 566 ssl_certificate_key your.kallithea.server.key;
567 567
568 568 ssl_session_timeout 5m;
569 569
570 570 ssl_protocols SSLv3 TLSv1;
571 571 ssl_ciphers DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:EDH-RSA-DES-CBC3-SHA:AES256-SHA:DES-CBC3-SHA:AES128-SHA:RC4-SHA:RC4-MD5;
572 572 ssl_prefer_server_ciphers on;
573 573
574 574 ## uncomment root directive if you want to serve static files by nginx
575 575 ## requires static_files = false in .ini file
576 576 #root /path/to/installation/rhodecode/public;
577 577 include /etc/nginx/proxy.conf;
578 578 location / {
579 579 try_files $uri @rhode;
580 580 }
581 581
582 582 location @rhode {
583 583 proxy_pass http://rc;
584 584 }
585 585
586 586 }
587 587
588 588 Here's the proxy.conf. It's tuned so it will not timeout on long
589 589 pushes or large pushes::
590 590
591 591 proxy_redirect off;
592 592 proxy_set_header Host $host;
593 593 ## needed for container auth
594 594 #proxy_set_header REMOTE_USER $remote_user;
595 595 #proxy_set_header X-Forwarded-User $remote_user;
596 596 proxy_set_header X-Url-Scheme $scheme;
597 597 proxy_set_header X-Host $http_host;
598 598 proxy_set_header X-Real-IP $remote_addr;
599 599 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
600 600 proxy_set_header Proxy-host $proxy_host;
601 601 proxy_buffering off;
602 602 proxy_connect_timeout 7200;
603 603 proxy_send_timeout 7200;
604 604 proxy_read_timeout 7200;
605 605 proxy_buffers 8 32k;
606 606 client_max_body_size 1024m;
607 607 client_body_buffer_size 128k;
608 608 large_client_header_buffers 8 64k;
609 609
610 610
611 611 Apache virtual host reverse proxy example
612 612 -----------------------------------------
613 613
614 614 Here is a sample configuration file for apache using proxy::
615 615
616 616 <VirtualHost *:80>
617 617 ServerName hg.myserver.com
618 618 ServerAlias hg.myserver.com
619 619
620 620 <Proxy *>
621 621 Order allow,deny
622 622 Allow from all
623 623 </Proxy>
624 624
625 625 #important !
626 626 #Directive to properly generate url (clone url) for pylons
627 627 ProxyPreserveHost On
628 628
629 629 #rhodecode instance
630 630 ProxyPass / http://127.0.0.1:5000/
631 631 ProxyPassReverse / http://127.0.0.1:5000/
632 632
633 633 #to enable https use line below
634 634 #SetEnvIf X-Url-Scheme https HTTPS=1
635 635
636 636 </VirtualHost>
637 637
638 638
639 639 Additional tutorial
640 640 http://wiki.pylonshq.com/display/pylonscookbook/Apache+as+a+reverse+proxy+for+Pylons
641 641
642 642
643 643 Apache as subdirectory
644 644 ----------------------
645 645
646 646 Apache subdirectory part::
647 647
648 648 <Location /<someprefix> >
649 649 ProxyPass http://127.0.0.1:5000/<someprefix>
650 650 ProxyPassReverse http://127.0.0.1:5000/<someprefix>
651 651 SetEnvIf X-Url-Scheme https HTTPS=1
652 652 </Location>
653 653
654 654 Besides the regular apache setup you will need to add the following line
655 655 into [app:main] section of your .ini file::
656 656
657 657 filter-with = proxy-prefix
658 658
659 659 Add the following at the end of the .ini file::
660 660
661 661 [filter:proxy-prefix]
662 662 use = egg:PasteDeploy#prefix
663 663 prefix = /<someprefix>
664 664
665 665
666 666 then change <someprefix> into your chosen prefix
667 667
668 668 Apache's WSGI config
669 669 --------------------
670 670
671 671 Alternatively, RhodeCode can be set up with Apache under mod_wsgi. For
672 672 that, you'll need to:
673 673
674 674 - Install mod_wsgi. If using a Debian-based distro, you can install
675 675 the package libapache2-mod-wsgi::
676 676
677 677 aptitude install libapache2-mod-wsgi
678 678
679 679 - Enable mod_wsgi::
680 680
681 681 a2enmod wsgi
682 682
683 683 - Create a wsgi dispatch script, like the one below. Make sure you
684 684 check the paths correctly point to where you installed RhodeCode
685 685 and its Python Virtual Environment.
686 686 - Enable the WSGIScriptAlias directive for the wsgi dispatch script,
687 687 as in the following example. Once again, check the paths are
688 688 correctly specified.
689 689
690 690 Here is a sample excerpt from an Apache Virtual Host configuration file::
691 691
692 692 WSGIDaemonProcess pylons \
693 693 threads=4 \
694 694 python-path=/home/web/rhodecode/pyenv/lib/python2.6/site-packages
695 695 WSGIScriptAlias / /home/web/rhodecode/dispatch.wsgi
696 696 WSGIPassAuthorization On
697 697
698 698 .. note::
699 699 when running apache as root please add: `user=www-data group=www-data`
700 700 into above configuration
701 701
702 702 .. note::
703 703 Running RhodeCode in multiprocess mode in apache is not supported,
704 704 make sure you don't specify `processes=num` directive in the config
705 705
706 706
707 707 Example wsgi dispatch script::
708 708
709 709 import os
710 710 os.environ["HGENCODING"] = "UTF-8"
711 711 os.environ['PYTHON_EGG_CACHE'] = '/home/web/rhodecode/.egg-cache'
712 712
713 713 # sometimes it's needed to set the curent dir
714 714 os.chdir('/home/web/rhodecode/')
715 715
716 716 import site
717 717 site.addsitedir("/home/web/rhodecode/pyenv/lib/python2.6/site-packages")
718 718
719 719 from paste.deploy import loadapp
720 720 from paste.script.util.logging_config import fileConfig
721 721
722 722 fileConfig('/home/web/rhodecode/production.ini')
723 723 application = loadapp('config:/home/web/rhodecode/production.ini')
724 724
725 725 Note: when using mod_wsgi you'll need to install the same version of
726 726 Mercurial that's inside RhodeCode's virtualenv also on the system's Python
727 727 environment.
728 728
729 729
730 730 Other configuration files
731 731 -------------------------
732 732
733 733 Some example init.d scripts can be found in init.d directory::
734 734
735 735 https://kallithea-scm.org/repos/kallithea/files/tip/init.d/
736 736
737 737 .. _virtualenv: http://pypi.python.org/pypi/virtualenv
738 738 .. _python: http://www.python.org/
739 739 .. _mercurial: http://mercurial.selenic.com/
740 740 .. _celery: http://celeryproject.org/
741 741 .. _rabbitmq: http://www.rabbitmq.com/
742 742 .. _python-ldap: http://www.python-ldap.org/
743 743 .. _mercurial-server: http://www.lshift.net/mercurial-server.html
744 744 .. _PublishingRepositories: http://mercurial.selenic.com/wiki/PublishingRepositories
745 745 .. _Issues tracker: https://bitbucket.org/conservancy/kallithea/issues
1 NO CONTENT: file renamed from rhodecode/lib/paster_commands/setup_rhodecode.py to rhodecode/lib/paster_commands/setup_db.py
@@ -1,17 +1,17 b''
1 1 #!/bin/sh
2 2 psql -U postgres -h localhost -c 'drop database if exists rhodecode;'
3 3 psql -U postgres -h localhost -c 'create database rhodecode;'
4 paster setup-rhodecode rc.ini --force-yes --user=marcink --password=qweqwe --email=marcin@python-blog.com --repos=/home/marcink/repos --no-public-access
4 paster setup-db rc.ini --force-yes --user=marcink --password=qweqwe --email=marcin@python-blog.com --repos=/home/marcink/repos --no-public-access
5 5 API_KEY=`psql -R " " -A -U postgres -h localhost -c "select api_key from users where admin=TRUE" -d rhodecode | awk '{print $2}'`
6 6 echo "run those after running server"
7 7 paster serve rc.ini --pid-file=rc.pid --daemon
8 8 sleep 3
9 9 rhodecode-api --apikey=$API_KEY --apihost=http://127.0.0.1:5001 create_user username:demo1 password:qweqwe email:demo1@example.com
10 10 rhodecode-api --apikey=$API_KEY --apihost=http://127.0.0.1:5001 create_user username:demo2 password:qweqwe email:demo2@example.com
11 11 rhodecode-api --apikey=$API_KEY --apihost=http://127.0.0.1:5001 create_user username:demo3 password:qweqwe email:demo3@example.com
12 12 rhodecode-api --apikey=$API_KEY --apihost=http://127.0.0.1:5001 create_user_group group_name:demo12
13 13 rhodecode-api --apikey=$API_KEY --apihost=http://127.0.0.1:5001 add_user_to_user_group usergroupid:demo12 userid:demo1
14 14 rhodecode-api --apikey=$API_KEY --apihost=http://127.0.0.1:5001 add_user_to_user_group usergroupid:demo12 userid:demo2
15 15 echo "killing server"
16 16 kill `cat rc.pid`
17 17 rm rc.pid
@@ -1,182 +1,182 b''
1 1 # -*- coding: utf-8 -*-
2 2 import os
3 3 import sys
4 4 import platform
5 5
6 6 if sys.version_info < (2, 5):
7 7 raise Exception('RhodeCode requires python 2.5 or later')
8 8
9 9
10 10 here = os.path.abspath(os.path.dirname(__file__))
11 11
12 12
13 13 def _get_meta_var(name, data, callback_handler=None):
14 14 import re
15 15 matches = re.compile(r'(?:%s)\s*=\s*(.*)' % name).search(data)
16 16 if matches:
17 17 if not callable(callback_handler):
18 18 callback_handler = lambda v: v
19 19
20 20 return callback_handler(eval(matches.groups()[0]))
21 21
22 22 _meta = open(os.path.join(here, 'rhodecode', '__init__.py'), 'rb')
23 23 _metadata = _meta.read()
24 24 _meta.close()
25 25
26 26 callback = lambda V: ('.'.join(map(str, V[:3])) + '.'.join(V[3:]))
27 27 __version__ = _get_meta_var('VERSION', _metadata, callback)
28 28 __license__ = _get_meta_var('__license__', _metadata)
29 29 __author__ = _get_meta_var('__author__', _metadata)
30 30 __url__ = _get_meta_var('__url__', _metadata)
31 31 # defines current platform
32 32 __platform__ = platform.system()
33 33
34 34 is_windows = __platform__ in ['Windows']
35 35
36 36 requirements = [
37 37 "waitress==0.8.8",
38 38 "webob==1.0.8",
39 39 "webtest==1.4.3",
40 40 "Pylons==1.0.0",
41 41 "Beaker==1.6.4",
42 42 "WebHelpers==1.3",
43 43 "formencode==1.2.4",
44 44 "SQLAlchemy==0.7.10",
45 45 "Mako==0.9.0",
46 46 "pygments>=1.5",
47 47 "whoosh>=2.4.0,<2.5",
48 48 "celery>=2.2.5,<2.3",
49 49 "babel==0.9.6",
50 50 "python-dateutil>=1.5.0,<2.0.0",
51 51 "dulwich==0.9.3",
52 52 "markdown==2.2.1",
53 53 "docutils==0.8.1",
54 54 "simplejson==2.5.2",
55 55 "mock",
56 56 "pycrypto==2.6.0",
57 57 "URLObject==2.3.4",
58 58 "Routes==1.13",
59 59 ]
60 60
61 61 if sys.version_info < (2, 6):
62 62 requirements.append("pysqlite")
63 63
64 64 if sys.version_info < (2, 7):
65 65 requirements.append("importlib==1.0.1")
66 66 requirements.append("unittest2")
67 67 requirements.append("argparse")
68 68
69 69 if is_windows:
70 70 requirements.append("mercurial==2.8.2")
71 71 else:
72 72 requirements.append("py-bcrypt==0.3.0")
73 73 requirements.append("mercurial==2.8.2")
74 74
75 75
76 76 dependency_links = [
77 77 ]
78 78
79 79 classifiers = [
80 80 'Development Status :: 4 - Beta'
81 81 'Environment :: Web Environment',
82 82 'Framework :: Pylons',
83 83 'Intended Audience :: Developers',
84 84 'License :: OSI Approved :: GNU General Public License (GPL)',
85 85 'Operating System :: OS Independent',
86 86 'Programming Language :: Python',
87 87 'Programming Language :: Python :: 2.5',
88 88 'Programming Language :: Python :: 2.6',
89 89 'Programming Language :: Python :: 2.7',
90 90 ]
91 91
92 92
93 93 # additional files from project that goes somewhere in the filesystem
94 94 # relative to sys.prefix
95 95 data_files = []
96 96
97 97 # additional files that goes into package itself
98 98 package_data = {'rhodecode': ['i18n/*/LC_MESSAGES/*.mo', ], }
99 99
100 100 description = ('RhodeCode is a fast and powerful management tool '
101 101 'for Mercurial and GIT with a built in push/pull server, '
102 102 'full text search and code-review.')
103 103
104 104 keywords = ' '.join([
105 105 'rhodecode', 'rhodiumcode', 'mercurial', 'git', 'code review',
106 106 'repo groups', 'ldap', 'repository management', 'hgweb replacement',
107 107 'hgwebdir', 'gitweb replacement', 'serving hgweb',
108 108 ])
109 109
110 110 # long description
111 111 README_FILE = 'README.rst'
112 112 CHANGELOG_FILE = 'docs/changelog.rst'
113 113 try:
114 114 long_description = open(README_FILE).read() + '\n\n' + \
115 115 open(CHANGELOG_FILE).read()
116 116
117 117 except IOError, err:
118 118 sys.stderr.write(
119 119 "[WARNING] Cannot find file specified as long_description (%s)\n or "
120 120 "changelog (%s) skipping that file" % (README_FILE, CHANGELOG_FILE)
121 121 )
122 122 long_description = description
123 123
124 124 try:
125 125 from setuptools import setup, find_packages
126 126 except ImportError:
127 127 from ez_setup import use_setuptools
128 128 use_setuptools()
129 129 from setuptools import setup, find_packages
130 130 # packages
131 131 packages = find_packages(exclude=['ez_setup'])
132 132
133 133 setup(
134 134 name='RhodeCode',
135 135 version=__version__,
136 136 description=description,
137 137 long_description=long_description,
138 138 keywords=keywords,
139 139 license=__license__,
140 140 author=__author__,
141 141 author_email='marcin@python-works.com',
142 142 dependency_links=dependency_links,
143 143 url=__url__,
144 144 install_requires=requirements,
145 145 classifiers=classifiers,
146 146 setup_requires=["PasteScript>=1.6.3"],
147 147 data_files=data_files,
148 148 packages=packages,
149 149 include_package_data=True,
150 150 test_suite='nose.collector',
151 151 package_data=package_data,
152 152 message_extractors={'rhodecode': [
153 153 ('**.py', 'python', None),
154 154 ('templates/**.mako', 'mako', {'input_encoding': 'utf-8'}),
155 155 ('templates/**.html', 'mako', {'input_encoding': 'utf-8'}),
156 156 ('public/**', 'ignore', None)]},
157 157 zip_safe=False,
158 158 paster_plugins=['PasteScript', 'Pylons'],
159 159 entry_points="""
160 160 [console_scripts]
161 161 rhodecode-api = rhodecode.bin.rhodecode_api:main
162 162 rhodecode-gist = rhodecode.bin.rhodecode_gist:main
163 163 rhodecode-config = rhodecode.bin.rhodecode_config:main
164 164
165 165 [paste.app_factory]
166 166 main = rhodecode.config.middleware:make_app
167 167
168 168 [paste.app_install]
169 169 main = pylons.util:PylonsInstaller
170 170
171 171 [paste.global_paster_command]
172 setup-rhodecode=rhodecode.lib.paster_commands.setup_rhodecode:Command
172 setup-db=rhodecode.lib.paster_commands.setup_db:Command
173 173 update-repoinfo=rhodecode.lib.paster_commands.update_repoinfo:Command
174 174 make-rcext=rhodecode.lib.paster_commands.make_rcextensions:Command
175 175 repo-scan=rhodecode.lib.paster_commands.repo_scan:Command
176 176 cache-keys=rhodecode.lib.paster_commands.cache_keys:Command
177 177 ishell=rhodecode.lib.paster_commands.ishell:Command
178 178 make-index=rhodecode.lib.paster_commands.make_index:Command
179 179 upgrade-db=rhodecode.lib.dbmigrate:UpgradeDb
180 180 celeryd=rhodecode.lib.celerypylons.commands:CeleryDaemonCommand
181 181 """,
182 182 )
General Comments 0
You need to be logged in to leave comments. Login now