CartoDB是一个正在研发的开源的空间数据可视化的平台,支持SQL语句,能实现数据的上载、编辑、融合、搜索(支持SQL)、发布等功能。看上去很不错~
实验室的项目需要一个Web端的空间数据可视化平台,于是我开始了和CartoDB战斗:在实验室的机器上配置它。虽然到现在为止还是没有最终配置成功,但是在配置过程当中的一些问题个人认为也很有必要记录一下。以下的配置步骤有些摘自github上的CartoDB小组,自己针对配置有问题的步骤做了说明。
CartoDB需要在Ubuntu机器上配置,研发团队目前是基于Ubuntu 10.04开发的,但是也没有否定其他version的系统。我自己在用Ubuntu10.04配置的时候,GDAL的部分依赖项Ubuntu10.04貌似不支持,于是换了12.04,GDAL安装顺利!以下是配置步骤:
sudo apt-get install git-core
从github上下载cartodb20包
git clone --recursive https://github.com/CartoDB/cartodb20.git
添加源
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:cartodb/gis
sudo add-apt-repository ppa:cartodb/mapnik
sudo add-apt-repository ppa:cartodb/nodejs
sudo add-apt-repository ppa:cartodb/redis
sudo add-apt-repository ppa:cartodb/postgresql
安装压缩和解压软件 (用来存储上传的文件和生成table)
sudo apt-get install unp
sudo apt-get install zip
安装GEOS (提供几何功能)
sudo apt-get install libgeos-c1 libgeos-dev
安装GDAL (支持栅格数据)
sudo apt-get install gdal-bin libgdal1-dev
安装GEOJSON (支持GEOJSON数据)
sudo apt-get install libjson0 python-simplejson libjson0-dev
安装PROJ4 (提供重投影支持)
sudo apt-get install proj-bin proj-data libproj-dev
安装Postgres (提供数据库支持)
sudo apt-get install postgresql-9.1 postgresql-client-9.1 postgresql-contrib-9.1 postgresql-server-dev-9.1
sudo apt-get install postgresql-plpython-9.1
安装Postgis
下载postgis-2.0.2.tar.gz并安装
cd /usr/local/src
sudo wget http://download.osgeo.org/postgis/source/postgis-2.0.2.tar.gz
sudo tar xzf postgis-2.0.2.tar.gz
cd postgis-2.0.2
sudo ./configure --with-raster --with-topology
sudo apt-get install make
sudo make
sudo make install
设置postgres密码
sudo passwd postgres
创建template_postgis
su postgres
createdb -E UTF8 template_postgis
createlang -d template_postgis plpgsql
psql -d postgres -c \
"UPDATE pg_database SET datistemplate='true' WHERE datname='template_postgis'"
psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/postgis.sql
psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/spatial_ref_sys.sql
psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/legacy.sql
psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/rtpostgis.sql
psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/topology.sql
psql -d template_postgis -c "GRANT ALL ON geometry_columns TO PUBLIC;"
psql -d template_postgis -c "GRANT ALL ON spatial_ref_sys TO PUBLIC;"
回到user
su user
安装Ruby1.9.2(这部分在github上CartoDB团队没有给出安装的方法,下面是自己找的)CartoDB是基于Ruby开发的
sudo apt-get install libreadline-dev
sudo apt-get install build-essential git-core
sudo apt-get install curl
sudo vim /home/user/.bash_profile
加入
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" #load RVM into a shell session as a function
PATH=$PATH:$HOME/.rvm/bin #Add RVM to PATH for scripting
保存退出
source ~/.bash_profile
source ~/.bashrc
type rvm | head -1 查看运行是否正常 rvm is a function表正常rvm install 1.9.2
rvm use --default 1.9.2
安装Nodejs (Map tiler API和SQL API都是Node.js应用程序)
sudo apt-get install nodejs npm
安装Redis-server (Windshaft和SQL API都依赖于Redis)
sudo apt-get install redis-server
sudo easy_install pip
sudo pip install -r python_requirements.txt(将python_requirements.txt中的GDAL依赖项删掉)
安装GDAL依赖项(自己找的其他方法)
pip install --no-install GDAL
pip install --no-download GDAL
sudo apt-add-repository ppa:ubuntugis/ubuntugis-unstable
sudo apt-get update
sudo apt-get install python-gdal
sudo apt-get install libgdal-dev
export CPLUS_INCLUDE_PATH=/usr/include/gdal
export C_INCLUDE_PATH=/usr/include/gdal
pip install GDAL
安装Varnish (是Web应用程序的加速器。Windshaft通过此来加速Map API和Map tile的连接)
sudo pip install -e git+https://github.com/RealGeeks/python-varnish.git@0971d6024fbb2614350853a5e0f8736ba3fb1f0d#egg=python-varnish
安装Mapnik(CartoDB提供的Mapnik的源有问题,自己重新找了一个源) (用来创建较为美观的API。可以创建和修改map tile的style )
sudo add-apt-repository ppa:mapnik/v2.2.0
sudo apt-get update
sudo apt-get install libmapnik mapnik-utils python-mapnik
再执行一遍README中安装Mapnik的指令
sudo apt-get install libmapnik-dev python-mapnik mapnik-utils
下载CartoDB-SQL-API.git并安装 (提供通过HTTP执行SQL语句的功能)
git clone git://github.com/CartoDB/CartoDB-SQL-API.git
cd CartoDB-SQL-API
git checkout master
npm install
名称不对应,需要改配置文件的名字,否则找不到development状态
cp config/environments/development.js.example config/environments/development.js
node app.js development
下载Windshaft-cartodb.git并安装 (用来支持CartoDBMaps API )
git clone git://github.com/CartoDB/Windshaft-cartodb.git
cd Windshaft-cartodb
git checkout master
npm install
需要改配置文件的名字,否则找不到development状态
cp config/environments/development.js.example config/environments/development.js
node app.js development
运行CartoDB
用户名
export SUBDOMAIN=development
cd cartodb20
git checkout master
redis-server
rvm use 1.9.2@cartodb --create && bundle install
bundle install
mv config/app_config.yml.sample config/app_config.yml
vim config/app_config.yml
mv config/database.yml.sample config/database.yml
vim config/database.yml(创建postgres用户的密码,在config/database.yml中加入密码,注意密码要用双引号。。。)
echo "127.0.0.1 ${SUBDOMAIN}.localhost.lan" | sudo tee -a /etc/hosts
sh script/create_dev_user ${SUBDOMAIN}(需要输入密码、密码、邮箱)
就是在这一步,按照要求输入后会报这样的错误:NoMethodError: undefined method `email=' for #<User @values={}
提示没有插入email的方法,有人进Postgres看了,找不到任何关于Insert的方法。于是,至此,最后一步出现了问题,大哭大闹T——T
以下是我找到的一些关于这个问题的帖子,也没有很好的解决方法。由于我也不是很熟悉Ruby,于是就不知道是开发的问题,还是Ruby版本不兼容的问题鸟~~~
https://groups.google.com/forum/#!msg/cartodb/cI_O5FQp5Ro/WV-F4hnTWRIJ
https://github.com/CartoDB/cartodb/issues/259
https://github.com/CartoDB/cartodb/issues/233
https://github.com/mikel/mail/issues/58
在服务器上启动CartoDB
QUEUE=* bundle exec rake resque:work(接着就没反应了,应该是开启成功了吧)
单独开一个终端bundle exec rails s -p 3000(这个也没有反应了)
单独开一个终端
cd CartoDB-SQL-API
node app.js development
单独开一个终端
cd Windshaft-cartodb
node app.js development
于是,启动CartoDB需要打开4个终端,有时候redis-sever也会捣捣乱,此时需要再开一个终端启动一下它。
在浏览器中输入 http://XXX.XXX.XXX.XXX:3000,需要输入之前创建的用户名(或邮箱)和密码,由于之前没有Insert成功,所以提示没有该用户,于是就只能停留在登录界面了。。。。
CartoDB上新注册的用户好像有上传5个table的权限。当然CartoDB也提供付费的服务。
本以为开源的CartoDB配置起来会十分容易,没想到遇到了这么多的问题。虽然项目已经决定不用CartoDB了,但是配置到最后一步失败还是很不甘心。不知有没有朋友遇到过同样的问题,期待赐教交流!