]> git.openstreetmap.org Git - rails.git/blob - CONFIGURE.md
Merge remote-tracking branch 'upstream/pull/2441'
[rails.git] / CONFIGURE.md
1 # Configuration
2
3 After [installing](INSTALL.md) this software, you may need to carry out some of these configuration steps, depending on your tasks.
4
5 ## Application configuration
6
7 Many settings are available in `config/settings.yml`. You can customize your installation of The Rails Port by overriding these values using `config/settings.local.yml`
8
9 ## Populating the database
10
11 Your installation comes with no geographic data loaded. You can either create new data using one of the editors (Potlatch 2, iD, JOSM etc) or by loading an OSM extract.
12
13 After installing but before creating any users or data, import an extract with [Osmosis](https://wiki.openstreetmap.org/wiki/Osmosis) and the [``--write-apidb``](https://wiki.openstreetmap.org/wiki/Osmosis/Detailed_Usage#--write-apidb_.28--wd.29) task.
14
15 ```
16 osmosis --read-pbf greater-london-latest.osm.pbf \
17   --write-apidb host="localhost" database="openstreetmap" \
18   user="openstreetmap" password="" validateSchemaVersion="no"
19 ```
20
21 Loading an apidb database with Osmosis is about **twenty** times slower than loading the equivalent data with osm2pgsql into a rendering database. [``--log-progress``](https://wiki.openstreetmap.org/wiki/Osmosis/Detailed_Usage#--log-progress_.28--lp.29) may be desirable for status updates.
22
23 To be able to edit the data you have loaded, you will need to use this [yet-to-be-written script](https://github.com/openstreetmap/openstreetmap-website/issues/282).
24
25 ## Managing Users
26
27 If you create a user by signing up to your local website, you need to confirm the user before you can log in, which normally happens by clicking a link sent via email. If don't want to set up your development box to send emails to public email addresses then you can create the user as normal and then confirm it manually through the Rails console:
28
29 ```
30 $ bundle exec rails console
31 >> user = User.find_by_display_name("My New User Name")
32 => #[ ... ]
33 >> user.status = "active"
34 => "active"
35 >> user.save!
36 => true
37 >> quit
38 ```
39
40 ### Giving Administrator/Moderator Permissions
41
42 To give administrator or moderator permissions:
43
44 ```
45 $ bundle exec rails console
46 >> user = User.find_by_display_name("My New User Name")
47 => #[ ... ]
48 >> user.roles.create(:role => "administrator", :granter_id => user.id)
49 => #[ ... ]
50 >> user.roles.create(:role => "moderator", :granter_id => user.id)
51 => #[ ... ]
52 >> user.save!
53 => true
54 >> quit
55 ```
56
57 ## OAuth Consumer Keys
58
59 Three of the built-in applications communicate via the API, and therefore need OAuth consumer keys configured. These are:
60
61 * Potlatch 2
62 * iD
63 * The website itself (for the Notes functionality)
64
65 For example, to use the Potlatch 2 editor you need to register it as an OAuth application.
66
67 Do the following:
68 * Log into your Rails Port instance - e.g. http://localhost:3000
69 * Click on your user name to go to your user page
70 * Click on "my settings" on the user page
71 * Click on "oauth settings" on the My settings page
72 * Click on 'Register your application'.
73 * Unless you have set up alternatives, use Name: "Local Potlatch" and URL: "http://localhost:3000"
74 * Check the 'modify the map' box.
75 * Everything else can be left with the default blank values.
76 * Click the "Register" button
77 * On the next page, copy the "consumer key"
78 * Edit config/settings.local.yml in your rails tree
79 * Add the "potlatch2_key" configuration key and the consumer key as the value
80 * Restart your rails server
81
82 An example excerpt from settings.local.yml:
83
84 ```
85 # Default editor
86 default_editor: "potlatch2"
87 # OAuth consumer key for Potlatch 2
88 potlatch2_key: "8lFmZPsagHV4l3rkAHq0hWY5vV3Ctl3oEFY1aXth"
89 ```
90
91 Follow the same process for registering and configuring iD (`id_key`) and the website/Notes (`oauth_key`), or to save time, simply reuse the same consumer key for each.
92
93 ## Troubleshooting
94
95 Rails has its own log.  To inspect the log, do this:
96
97 ```
98 tail -f log/development.log
99 ```
100
101 If you have more problems, please ask on the [rails-dev@openstreetmap.org mailing list](https://lists.openstreetmap.org/listinfo/rails-dev) or on the [#osm-dev IRC Channel](https://wiki.openstreetmap.org/wiki/IRC)
102
103 ## Maintaining your installation
104
105 If your installation stops working for some reason:
106
107 * Sometimes gem dependencies change. To update go to your rails_port directory and run ''bundle install'' as root.
108
109 * The OSM database schema is changed periodically and you need to keep up with these improvements. Go to your rails_port directory and run:
110
111 ```
112 bundle exec rake db:migrate
113 ```
114
115 ## Testing on the osm dev server
116
117 For example, after developing a patch for the rails_port, you might want to demonstrate it to others or ask for comments and testing. To do this one can [set up an instance of the rails_port on the dev server in ones user directory](https://wiki.openstreetmap.org/wiki/Using_the_dev_server#Rails_Applications).
118
119 # Contributing
120
121 For information on contributing changes to the codes, see [CONTRIBUTING.md](CONTRIBUTING.md)
122
123 # Production Deployment
124
125 If you want to deploy The Rails Port for production use, you'll need to make a few changes.
126
127 * It's not recommended to use `rails server` in production. Our recommended approach is to use [Phusion Passenger](https://www.phusionpassenger.com/). Instructions are available for [setting it up with most web servers](https://www.phusionpassenger.com/documentation_and_support#documentation).
128 * Passenger will, by design, use the Production environment and therefore the production database - make sure it contains the appropriate data and user accounts.
129 * Your production database will also need the extensions and functions installed - see [INSTALL.md](INSTALL.md)
130 * The included version of the map call is quite slow and eats a lot of memory. You should consider using [CGIMap](https://github.com/zerebubuth/openstreetmap-cgimap) instead.
131 * Make sure you generate the i18n files and precompile the production assets: `RAILS_ENV=production rake i18n:js:export assets:precompile`
132 * Make sure the web server user as well as the rails user can read, write and create directories in `tmp/`.
133 * If you want to use diff replication then you might want to consider installing the shared library special SQL functions for the `xid_to_int4` function. A pure SQL version is available, but may become a performance issue on large databases with a high rate of changes. Note that you will need a version of PostgreSQL < 9.6 (yes, _less than_) to use `xid` indexing, whether pure SQL or shared library.
134 * If you expect to serve a lot of `/changes` API calls, then you might also want to install the shared library versions of the SQL functions.