openstreetmap-website
github地址:GitHub - openstreetmap/openstreetmap-website: The Rails application that powers OpenStreetMap
首先安装Ubuntu20.04以上版本的操作系统。
安装官方要求,先更新源:
sudo apt-get update
安装依赖包:
sudo apt-get install ruby2.7 libruby2.7 ruby2.7-dev bundler \libmagickwand-dev libxml2-dev libxslt1-dev nodejs \apache2 apache2-dev build-essential git-core firefox-geckodriver \postgresql postgresql-contrib libpq-dev libsasl2-dev \imagemagick libffi-dev libgd-dev libarchive-dev libbz2-dev yarnpkg
安装postgresql客户端:sudo apt-get install postgresql-client
安装gem:
切换国内源:gem sources --remove https://rubygems.org/
gem source --add http://ruby.taobao.org/
sudo gem2.7 install bundler
cd openstreetmap-website
sudo gem install bundler
sudo bundle install
bundle exec rake yarn:install
执行上一步的时候,会报错:
rake aborted!
TypeError:superclass mismatch for class Command
/var/lib/gems/2.7.0/gems/thor-1.0.1/lib/thor/command.rb:2:in '<class:Thor>'
解决办法:
vim Gemfile
最后一行添加:gem "thor","〜> 0.20.3"
然后执行:bundle update thor
创建空的本地配置文件:touch config/settings.local.yml
使用示例的rails配置文件:cp config/example.storage.yml config/storage.yml
配置数据库:cp config/example.database.yml config/database.yml
查看数据库配置:cat config/database.yml
PostGresql默认是本地免密,需要创建用户:
sudo -u postgres -i
createuser -s root
createuser -s openstreetmap
createuser -s osm_test
createuser -s osm
exit
#sudo -u postgres psql
#create user openstreetmap with password "openstreetmap";
#赋角色:alter role openstreetmap with superuser;
#切换到postgresql用户:su postgres
bundle exec rake db:create
添加postgresql扩展:psql -d openstreetmap -c "CREATE EXTENSION btree_gist"
psql -d openstreetmap -f db/functions/functions.sql
要创建所有表,索引和约束:
bundle exec rake db:migrate
设置IP权限访问:
停止postgresql服务:sudo service postgresql stop
修改配置文件:
sudo vim /etc/postgresql/12/main/postgresql.conf
sudo vim /etc/postgresql/12/main/pg_hba.conf
增加:host all all 0.0.0.0/0 trust
启动postgresql服务: sudo service postgresql start
本地测试连接:
安装依赖:
sudo gem install jpegoptim
sudo gem install image_optim
sudo gem install image_optim_pack
#sudo npm install -g svgo
sudo ln -s /usr/bin/nodejs /usr/bin/node
运行测试:bundle exec rake test:db
这里没有成功,需要检查原因:
打开package.json
把里面涉及的三方包都下载一遍,如:
#npm install bs-custom-file-input@1.3.4
启动服务:bundle exec rails server
访问地址:http://localhost:3000/
报错如下:
Sprockets::FileNotFound - couldn't find file 'leaflet.locatecontrol/src/L.Control.Locate' with type 'application/javascript'
Checked in these paths:
/ideditor/openstreetmap-website/app/assets/config
/ideditor/openstreetmap-website/app/assets/favicons
/ideditor/openstreetmap-website/app/assets/images
...
config/initializers/cors.rb:9:in 'call'
解决办法:
安装JAVA环境:sudo apt-get install openjdk-8-jdk
查看是否安装成功:java -version
安装Osmosis,两种方式,第一种直接下载安装文件:
下载osmosis:
cd /ideditor
wget https://github.com/openstreetmap/osmosis/releases/download/0.48.3/osmosis-0.48.3.tgz
mkdir osmosis
mv osmosis-0.48.3.tgz osmosis
cd osmosis
tar xvfz osmosis-0.48.3.tgz
rm osmosis-0.48.3.tgz
chmod a+x bin/osmosis
bin/osmosis
第二种:sudo apt install osmosis
下载测试数据:
BBBike extracts OpenStreetMap
点击提取后,访问BBBike extracts ready to download,查看是否导出完成:
点击download进行下载;
将下载的pbf文件上传到ubuntu服务器/ideditor文件夹下,重命名为wuhan.osm.pbf;
cd /ideditor/osmosis/bin
./osmosis --read-pbf /ideditor/wuhan.osm.pbf --write-apidb host="192.168.24.122" database="openstreetmap" user="openstreetmap" password="openstreetmap" validateSchemaVersion="no"
查看数据库:
修改数据库配置:
cd /ideditor/openstreetmap-website
vim config/database.yml
再次启动:bundle exec rails server
报错如下:
pngcursh not found
advpng not found
optipng not found
pngquant not found
jhead not found
jpegtran not found
jpegoptim not found
gifsicle not found
Error:Invalid CSS after ".": expected 1 selector or at-rule, was "../common.css"
on line 1:1 of app/assets/stylesheets/ltr/common.scss
解决办法:
查看image_optim版本:gem list
查看image_optim信息:
bundle exec image_optim --info
bin resolving errors 二进制解析错误;
gem install optipng
gem install jpegtran
gem install jpegoptim
gem install jpeg
gem install
gem install
gem install
gem install
gem install
修改Gemfile文件,增加以下配置:
gem "image_optim", "~> 0.25"
gem "image_optim_pack", "= 0.7.0"