openstreetmap website部署
原文地址: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
- 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部署相关推荐
- sae上部署第一个站
为什么80%的码农都做不了架构师?>>> http://hi.baidu.com/yangyangye2008/item/d4f48050c359d89208be173c ht ...
- 小狗钱钱_✅每次构建待办事项列表应用程序时,都会有一只小狗? 死了?
小狗钱钱 by Hrishi Mittal 由Hrishi Mittal ✅每次构建待办事项列表应用程序时,都会有一只小狗 ? 死了? (✅ Every time you build a to-do ...
- Quartz.net 开源job调度框架(一)
Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)来调度作业.它实现了作业和 ...
- web 上传文件到linux没权限,Javaweb上传文件到Linux 没有读写权限
一. 问题描述 背景描述: 0.saas-business-运营后台,website-网站页面. 1.javaweb程序(saas-business)部署在linux系统 tomcat服务器下,使用该 ...
- flask部署机器学习_如何开发端到端机器学习项目并使用Flask将其部署到Heroku
flask部署机器学习 There's one question I always get asked regarding Data Science: 关于数据科学,我经常被问到一个问题: What ...
- aws s3 静态网站_如何将静态网站或JAMstack应用托管并部署到AWS S3和CloudFront
aws s3 静态网站 S3 and CloudFront are AWS cloud services that make serving static assets powerful and ch ...
- docker使用mongo_如何使用Docker在AWS上部署Mongo:初学者的权威指南
docker使用mongo 为什么需要这个? (Why you need this?) 因为JS + Python + Mongo =完整的数据开发 (Because JS + Python + Mo ...
- k8s aws 部署_如何在短短30分钟内使用CircleCI设置到AWS S3的持续部署
k8s aws 部署 by Adam Watt 通过亚当·瓦特 如何在短短30分钟内使用CircleCI设置到AWS S3的持续部署 (How to setup Continuous Deployme ...
- DotNetNuke(DNN)网站发布、部署、迁移和重建
DotNetNuke(DNN)网站本质上是一个ASP.NET网站,由网站文件(也就是website目录)和数据库组成的,所以,"发布.部署.迁移和重建"实际上也就是把网站文件和数据 ...
- 如何高效推进ML模型开发和部署?Uber机器学习平台Michelangelo实践
作者 | Jeremy Hermann & Mike Del Balso 译者 | 王天宇 整理 | Jane 出品 | AI科技大本营 [导读]2017年9月,Uber 在技术社区发表了一篇 ...
最新文章
- 浅谈Android Fragment嵌套使用存在的一些BUG以及解决方法
- foreach 语句
- 【Paper】2017_水下潜航器编队海洋勘测的协调控制方法研究
- hdu 1286 找新朋友 (容斥原理 || 欧拉函数)
- 搜索引擎——反向索引原理揭秘及手写ik分词器
- 自动论文生成器 python_Python生成器常见问题及解决方案
- 去掉“搜一搜”后,让“查看新贴”等按钮居中
- 连锁餐饮品牌发展战略的节奏要把握好
- 语言密码加密变星号_为什么汉字不能设成密码,你想过吗?
- 微服务中的健康监测以及其在ASP.NET Core服务中实现运行状况检查
- 软件工程师成长为架构师必备的十项技能
- 虚拟服务器不识别网银盾,电脑浏览器无法使用建行E路航网银盾的解决方法
- Git创建版本库及git init 、add 和 commit -m 的基本使用
- linux克隆后静态ip,Centos7克隆后配置静态ip无法上网
- 计算机考研初试经验分享
- 最近都在说移民火星,这些黑科技你了解吗?
- 平板电脑先锋W11安装Android,先锋w11官方固件
- 中考前 OI 生涯总结
- java 之文件输入输出流
- LTspice raw文件格式