2016-02-25 21:30:19 +08:00
|
|
|
# Data Services API
|
|
|
|
The CartoDB Data Services SQL API (server and client FTM)
|
2016-01-25 23:22:00 +08:00
|
|
|
|
|
|
|
### Deploy instructions
|
2016-02-25 21:30:19 +08:00
|
|
|
Steps to deploy a new Data Services API version :
|
2016-01-25 23:22:00 +08:00
|
|
|
|
2016-02-09 17:23:25 +08:00
|
|
|
- Deploy new version of dataservices API to all servers
|
|
|
|
- Update the server user using: ALTER EXTENSION cdb_dataservices_server UPDATE TO '<CURRENT_VERSION>';
|
2016-01-25 23:22:00 +08:00
|
|
|
- Update the python dependencies if needed: **cartodb_geocoder** and **heremaps**
|
|
|
|
- Add the needed config in the `cdb_conf` table:
|
|
|
|
- `redis_metadata_config` and `redis_metrics_conf`
|
2016-02-09 17:23:25 +08:00
|
|
|
- `{"sentinel_host": "localhost", "sentinel_port": 26379, "sentinel_master_id": "mymaster", "timeout": 0.1, "redis_db": 5}`
|
2016-01-25 23:22:00 +08:00
|
|
|
- `heremaps_conf`
|
|
|
|
- `{"app_id": "APP_ID", "app_code": "APP_CODE"}`
|
|
|
|
- Deploy the client to all the servers with the new version
|
2016-02-09 17:23:25 +08:00
|
|
|
- Deploy the editor with the new dataservices api version changed (https://github.com/CartoDB/cartodb/blob/master/app/models/user/db_service.rb#L18)
|
2016-01-25 23:22:00 +08:00
|
|
|
- Execute the rails task to update first the CartoDB team organizaton to test in production
|
|
|
|
- `RAILS_ENV=production bundle exec rake cartodb:db:configure_geocoder_extension_for_organizations['team']`
|
|
|
|
- Check if all works perfectly for our team. If so, execute the rake tasks to update all the users and organizations:
|
|
|
|
- `RAILS_ENV=production bundle exec rake cartodb:db:configure_geocoder_extension_for_organizations['', true]`
|
|
|
|
- `RAILS_ENV=production bundle exec rake cartodb:db:configure_geocoder_extension_for_non_org_users['', true]`
|
2016-02-09 17:23:25 +08:00
|
|
|
- Freeze the generated SQL file for the version. Eg. cdb_dataservices_server--0.0.1.sql
|
2016-02-24 18:54:55 +08:00
|
|
|
|
|
|
|
### Local install instructions
|
|
|
|
|
|
|
|
- install data services extension
|
|
|
|
|
|
|
|
```
|
|
|
|
git clone git@github.com:CartoDB/data-services.git
|
|
|
|
data-services/geocoder/extension
|
|
|
|
sudo make install
|
|
|
|
```
|
|
|
|
|
|
|
|
- install server and client extensions
|
|
|
|
|
|
|
|
```
|
|
|
|
cd client && sudo make install
|
|
|
|
cd server && sudo make install
|
|
|
|
```
|
|
|
|
|
|
|
|
- install python library
|
|
|
|
|
|
|
|
```
|
|
|
|
cd server/lib/python/cartodb_services && python setup.py install
|
|
|
|
```
|
|
|
|
|
|
|
|
- install extensions in user database
|
|
|
|
|
|
|
|
```
|
|
|
|
create extension cdb_geocoder;
|
|
|
|
create extension plproxy;
|
|
|
|
create extension cdb_dataservices_server;
|
|
|
|
create extension cdb_dataservices_client;
|
|
|
|
```
|
|
|
|
|
|
|
|
- add configuration for different services in user database
|
|
|
|
|
|
|
|
|
|
|
|
```
|
2016-02-24 18:58:46 +08:00
|
|
|
# select CDB_Conf_SetConf('redis_metadata_config', '{"sentinel_host": "localhost", "sentinel_port": 26379, "sentinel_master_id": "mymaster", "timeout": 0.1, "redis_db": 5}');
|
|
|
|
# select CDB_Conf_SetConf('redis_metrics_config', '{"sentinel_host": "localhost", "sentinel_port": 26379, "sentinel_master_id": "mymaster", "timeout": 0.1, "redis_db": 5}');
|
|
|
|
|
2016-02-24 18:54:55 +08:00
|
|
|
# select CDB_Conf_SetConf('heremaps_conf', '{"app_id": "APP_ID", "app_code": "APP_CODE"}');
|
2016-02-24 19:02:28 +08:00
|
|
|
# select CDB_Conf_SetConf('user_config', '{"is_organization": false, "entity_name": "<YOUR_USERNAME>"}')
|
2016-02-24 18:54:55 +08:00
|
|
|
```
|
|
|
|
|
2016-02-24 19:02:28 +08:00
|
|
|
- configure plproxy to point to the same user database (you could do in a different one)
|
2016-02-24 18:54:55 +08:00
|
|
|
|
|
|
|
```
|
|
|
|
select CDB_Conf_SetConf('geocoder_server_config', '{ "connection_str": "host=localhost port=5432 dbname=cartodb_dev_user_accf0647-d942-4e37-b129-8287c117e687_db user=postgres"}');
|
|
|
|
```
|
2016-02-24 19:13:57 +08:00
|
|
|
|
|
|
|
- configure the search path in order to be able to execute the functions without use the schema:
|
|
|
|
|
|
|
|
```
|
|
|
|
alter role "<USER_ROLE>" set search_path='"$user", public, cartodb, cdb_dataservices_client';
|
|
|
|
```
|