openstreetmap website部署

来源:互联网 发布:insert mysql自增 编辑:程序博客网 时间:2024/05/17 09:32

原文地址:https://github.com/openstreetmap/openstreetmap-website

1. 软件介绍

openstreetmap-website是The Rails Port,the OpenStreetMap网址和API是通过the Ruby on Rails软件来实现的.

软件功能包括:
1.网页,包括用户账户,个人入口,用户与用户直接消息通知
2.基于XML格式的API编辑接口
3.集成the Potlatch, Potlatch 2 and iD 编辑器
4.网站前端和后端浏览OpenStreetMap数据
5.基于GPX上传, 浏览和API接口.

一个具有完整功能的Rails Port需要依赖一些其他服务站,包括地图标题服务站,地图编码服务站。默认安装是基于通用服务的,以便于帮助开发和测试。

The Rails Port 是一个Ruby基于Rails的软件,基于PostgreSQL数据库, 并且基于很多其他软件.具体安装步骤如下:

2. 安装依赖软件

依赖软件如下:
Ruby 2.3
RubyGems 1.3.1+
PostgreSQL 9.1+
ImageMagick
Bundler
Javascript Runtime
上述依赖软件可通过如下方式在Ubuntu 16.04或者更高版本上安装:

sudo apt-get install ruby2.3 libruby2.3 ruby2.3-dev phantomjs \                     libmagickwand-dev libxml2-dev libxslt1-dev nodejs \                     apache2 apache2-dev build-essential git-core \                     postgresql postgresql-contrib libpq-dev postgresql-server-dev-all \                     libsasl2-dev imagemagicksudo apt-get install pngcrush advpng optipng pngquant jhead jpegoptim gifsiclesudo gem2.3 install bundler

注意:如果本地软件源中没有ruby2.3,可通过如下方式

sudo apt-add-repository ppa:brightbox/ruby-ngsudo apt-get updatesudo apt-get -y install ruby2.3apt-get install ruby2.3-dev

3. openstreetmap-website源代码

这个软件在github上,软件仓库比较大,我们可以有两种下载方式:
下载整个版本仓库源代码:

git clone https://github.com/openstreetmap/openstreetmap-website.git

只下载当前的版本仓库源代码:

git clone --depth=1 https://github.com/openstreetmap/openstreetmap-website.git

4. Ruby gems

我们通过Bundler命令工具来控制rubygems,实现这个项目的编译。

cd openstreetmap-websitebundle install

5. 应用安装

创建应用配置文件 config/application.yml

cp config/example.application.yml config/application.yml

6. 配置安装数据库

The Rails Port使用了三个数据库表,一个用于开发,一个用于测试,一个用于产品。这些数据库表的配置文件在 config/database.yml文件中,我们可通过如下命令生成我们需要的数据库表配置文件。

cp config/example.database.yml config/database.yml

PostgreSQL数据库支持本地无需用户名和密码。如果我们需要远程连接,我们可以通过修改config/database.yml文件来满足我们的需求。

7. 创建PostgreSQL账户

我们需要一个超级用户权限的用户来创建数据库表,可通过如下命令方式实现.

sudo -u postgres -icreateuser -s <username>exit

8. 创建数据库表

可通过如下命令创建三个数据库表:

bundle exec rake db:create
  1. PostgreSQL Btree-gist扩展表

我们需要加载btree-gist扩展表,用户显示历史修改的集合,可通过如下命令实现:

psql -d openstreetmap -c "CREATE EXTENSION btree_gist"

9. PostgreSQL功能函数

我们需要安装一些特殊功能函数来控制PostgreSQL数据库,它是一个库文件方式提供,我们可通过如下方式编译:

cd db/functionsmake libpgosm.socd ../..

接下来我们就可以在数据库创建这些功能函数。

psql -d openstreetmap -c "CREATE FUNCTION maptile_for_point(int8, int8, int4) RETURNS int4 AS '`pwd`/db/functions/libpgosm', 'maptile_for_point' LANGUAGE C STRICT"psql -d openstreetmap -c "CREATE FUNCTION tile_for_point(int4, int4) RETURNS int8 AS '`pwd`/db/functions/libpgosm', 'tile_for_point' LANGUAGE C STRICT"psql -d openstreetmap -c "CREATE FUNCTION xid_to_int4(xid) RETURNS int4 AS '`pwd`/db/functions/libpgosm', 'xid_to_int4' LANGUAGE C STRICT"

10. 创建数据库表结构

我们可通过如下命令创建数据库表,结构及关联:

bundle exec rake db:migrate

11. 测试

为了确保我们的安装没有问题,我们可通过运行如下命令来进行测试:

bundle exec rake test:db

注意:这可能会需要几分钟的时间,如果最后没有提示我们错误信息,那么软件安装就成功了。
如果提示错误信息,除提示 “Attribute lat redefined.” 之外的错误信息,表示我们没有安装成功。

12. 启动服务

Rails内置了一个web服务器,因此我们可以通过如下命令直接启动它:

bundle exec rails server

然后我们就可以在浏览器中输入 http://localhost:3000/ 来打开

注意:OSM地图区域名信息不是通过本地数据库获取的.

13. 配置

当安装完软件之后,我们可能还需要执行一些特殊的步骤操作,如下:

13.1 导入数据库数据

在我们成功根据上述步骤安装完openstreetmap-website之后,我们的数据库中其实还没有地图数据导入。我们可以通过(Potlatch 2, iD, JOSM等)自己编辑地图数据或者从OSM文件中导入。OSM文件下载地址(以国家分类):http://download.geofabrik.de/asia/
基于Osmosis工具导入地图数据至openstreetmap数据库中的命令如下:

osmosis --read-pbf greater-london-latest.osm.pbf \  --write-apidb host="localhost" database="openstreetmap" \  user="openstreetmap" password="" validateSchemaVersion="no"注意:user和password参数需要根据本地情况修改,此处使用的osmosis版本必须>= 0.44.1

13.2 用户管理

如果我们在自己搭建的openstreetmap-website网页上注册一个用户之后,我们还需要通常邮箱验证才能登陆。如果我们我们不想安装一个邮箱服务器来发送邮件给我们外部邮箱,我们可以通过Rails控制台手动进行验证,具体命令如下:

$ bundle exec rails console>> user = User.find_by_display_name("My New User Name")=> #[ ... ]>> user.status = "active"=> "active">> user.save!=> true>> quit

13.3 修改用户权限

给某一个用户增加超级用户管理权限,命令如下:

$ bundle exec rails console>> user = User.find_by_display_name("My New User Name")=> #[ ... ]>> user.roles.create(:role => "administrator", :granter_id => user.id)=> #[ ... ]>> user.roles.create(:role => "moderator", :granter_id => user.id)=> #[ ... ]>> user.save!=> true>> quit

13.4 设置OAuth Consumer Keys

openstreetmap-website内置的三个地图编辑应用是通过API 实现交互的,因此我们需要配置OAuth consumer keys ,具体如下:
三种内置地图数据编辑软件:
Potlatch 2
iD
The website itself (for the Notes functionality)
例如 ,我们如果使用Potlatch 2进行地图数据编辑,我们需要注册一个OAuth应用,步骤如下:
1.登陆我们的Rails Port网站,例如http://localhost:3000
2.点击用户名 ,进入用户配置界面
3.点击”my settings” 页面
4.点击 “oauth settings” 页面
5.点击 ‘Register your application’.
6.除非我们有OAuth账户,否则我们进行如下填写
Name:Local Potlatch
URL: “http://localhost:3000”
7.选上 ‘modify the map’ box选项框
8.其他的选项使用默认值即可
9.点击 “Register” 按钮
10.在界面中复制 “consumer key”
11.编辑config/application.yml
12.开启”potlatch2_key” 配置项并配置值
13.重启rails服务器
以下是一个展示参考示例application.yml:
编辑config/application.yml文件 ,设置 默认编辑器和potlatch2_key

# Default editordefault_editor: "potlatch2"# OAuth consumer key for Potlatch 2potlatch2_key: "8lFmZPsagHV4l3rkAHq0hWY5vV3Ctl3oEFY1aXth"

如果我们想使用iD (id_key) 或者the website/Notes (oauth_key),可以参照上述步骤,consumer key 可以复用

13.5 排查问题

Rails有自己的日志.如果我们想查看日志,可使用如下命令 :

tail -f log/development.log

如果遇到一些其他问题,可以通过邮件( rails-dev@openstreetmap.org)或者 #osm-dev IRC Channel留言

13.6 安装补充

如果你在安装过程中遇到错误:
1.如果是gem的依赖发生变化,可在rail_port目录下以root用户运行bundle install
2.如果是 OSM数据库表文件发生变化,我们可通过如下命令解决 :

bundle exec rake db:migrate

bundle exec rake db:migrate

13.7 在osm dev服务器上测试

例如,当我们开发完了一个 rails_port补丁文件,我们需要将它贡献给其他人或者请求测试。我们可以在服务器上创建自己用户目录来提供入口。

13.8 开发者

关于更多开发者信息,请参考 CONTRIBUTING.md文件

13.9 产品部署

如果我们需要将The Rails Port用户产品,我们需要进行一些修改。
1.我们不推荐使用rails server在产品上。我们推荐使用Phusion Passenger,关于Phusion Passenger的搭建可以在很多网站上找到,这里不进行详细介绍。
2.开发者可能需要一些产品的开发环境和数据库的访问权限,我们需要提供一些账户给他们。
3.产品的数据库也需要进行扩展和增添一些功能,具体详见INSTALL.md。
4.这个版本的地图调用API函数非常耗内存,并且速度也慢。我们推荐使用CGIMap。
5.GPX导入插件也不够完善,可以使用别的插件替换
6.在编译这个软件之前,确保有如下宏定义: RAILS_ENV=production rake assets:precompile
7.确保用户可以对服务器上的/tmp目录有读写权限

原创粉丝点击