原文地址: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-ng
sudo apt-get update
sudo apt-get -y install ruby2.3
apt-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-website
bundle 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 -i
createuser -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/functions
make libpgosm.so
cd ../..

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

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 editor
default_editor: "potlatch2"
# OAuth consumer key for Potlatch 2
potlatch2_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目录有读写权限

openstreetmap website部署相关推荐

  1. sae上部署第一个站

    为什么80%的码农都做不了架构师?>>>    http://hi.baidu.com/yangyangye2008/item/d4f48050c359d89208be173c ht ...

  2. 小狗钱钱_✅每次构建待办事项列表应用程序时,都会有一只小狗? 死了?

    小狗钱钱 by Hrishi Mittal 由Hrishi Mittal ✅每次构建待办事项列表应用程序时,都会有一只小狗 ? 死了? (✅ Every time you build a to-do ...

  3. Quartz.net 开源job调度框架(一)

    Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)来调度作业.它实现了作业和 ...

  4. web 上传文件到linux没权限,Javaweb上传文件到Linux 没有读写权限

    一. 问题描述 背景描述: 0.saas-business-运营后台,website-网站页面. 1.javaweb程序(saas-business)部署在linux系统 tomcat服务器下,使用该 ...

  5. flask部署机器学习_如何开发端到端机器学习项目并使用Flask将其部署到Heroku

    flask部署机器学习 There's one question I always get asked regarding Data Science: 关于数据科学,我经常被问到一个问题: What ...

  6. aws s3 静态网站_如何将静态网站或JAMstack应用托管并部署到AWS S3和CloudFront

    aws s3 静态网站 S3 and CloudFront are AWS cloud services that make serving static assets powerful and ch ...

  7. docker使用mongo_如何使用Docker在AWS上部署Mongo:初学者的权威指南

    docker使用mongo 为什么需要这个? (Why you need this?) 因为JS + Python + Mongo =完整的数据开发 (Because JS + Python + Mo ...

  8. k8s aws 部署_如何在短短30分钟内使用CircleCI设置到AWS S3的持续部署

    k8s aws 部署 by Adam Watt 通过亚当·瓦特 如何在短短30分钟内使用CircleCI设置到AWS S3的持续部署 (How to setup Continuous Deployme ...

  9. DotNetNuke(DNN)网站发布、部署、迁移和重建

    DotNetNuke(DNN)网站本质上是一个ASP.NET网站,由网站文件(也就是website目录)和数据库组成的,所以,"发布.部署.迁移和重建"实际上也就是把网站文件和数据 ...

  10. 如何高效推进ML模型开发和部署?Uber机器学习平台Michelangelo实践

    作者 | Jeremy Hermann & Mike Del Balso 译者 | 王天宇 整理 | Jane 出品 | AI科技大本营 [导读]2017年9月,Uber 在技术社区发表了一篇 ...

最新文章

  1. 浅谈Android Fragment嵌套使用存在的一些BUG以及解决方法
  2. foreach 语句
  3. 【Paper】2017_水下潜航器编队海洋勘测的协调控制方法研究
  4. hdu 1286 找新朋友 (容斥原理 || 欧拉函数)
  5. 搜索引擎——反向索引原理揭秘及手写ik分词器
  6. 自动论文生成器 python_Python生成器常见问题及解决方案
  7. 去掉“搜一搜”后,让“查看新贴”等按钮居中
  8. 连锁餐饮品牌发展战略的节奏要把握好
  9. 语言密码加密变星号_为什么汉字不能设成密码,你想过吗?
  10. 微服务中的健康监测以及其在ASP.NET Core服务中实现运行状况检查
  11. 软件工程师成长为架构师必备的十项技能
  12. 虚拟服务器不识别网银盾,电脑浏览器无法使用建行E路航网银盾的解决方法
  13. Git创建版本库及git init 、add 和 commit -m 的基本使用
  14. linux克隆后静态ip,Centos7克隆后配置静态ip无法上网
  15. 计算机考研初试经验分享
  16. 最近都在说移民火星,这些黑科技你了解吗?
  17. 平板电脑先锋W11安装Android,先锋w11官方固件
  18. 中考前 OI 生涯总结
  19. java 之文件输入输出流
  20. LTspice raw文件格式

热门文章

  1. 用python做一个飞机大战(一)
  2. 关于meta标签中的http-equiv属性使用介绍
  3. 经纬度转WGS84坐标
  4. Android 分享到LINE
  5. 【滴滴拉屎】一款能按照坑型找厕所的神器!
  6. 爬取分析拉勾网招聘信息
  7. 爬取拉勾网招聘信息笔记
  8. Airtest微信朋友圈自动点赞
  9. JS—— 常用图片后缀正则校验
  10. SE16N-采购价格不同条件类型的取数逻辑