You are not logged in.
- Topics: Active | Unanswered
#1 2013-10-15 11:30:00
- Achechet
- Member
- Registered: 2013-10-02
- Posts: 41
Устанавливаем локальный Rails on Ruby для OpenStreetMap
Возможно кому то еще пригодится странная конструкция из несколько софтинок, позволяющая наносить на карту свои объекты и затем показывать с веб-сервера.
В условиях когда интернет слабый или его вообще нет (по разным причинам) локальная реализация может пригодится.
Кому то просто захочется поставить рельсовый сервер для обучения.
Моя задача простирается чуть далее, редактировать, складывать результаты на локальный сервер и с него показывать для внутренних нужд.
Установка Rails on Ruby это только начало пути.
STEP 1
Ставим ubuntu-12.04.3-server-i386. (Здесь и далее версии файлов с точностью до точки)
English – Enter
Install Ubuntu Server – Enter
Language – English – Enter
Country, territory or area – United States – Enter
Detect keyboard layout – No – Enter
Country od origin for the keyboard – English(US) –Enter
Keyboard layout – English(US) – Enter
Hostname – Ubuntu – Continue
Full name for the new user – OSM-USER – Continue
Username for your account – osm – Continue
Choose a password for the new user – password –Continue
Re-enter password to verify – password –Continue
Encrypt your home directory – No – Enter
Select your time zone – Select from worldwide list – Enter
Partitioning method – use entire disk – Enter
Select disk to partition – SCSI3 (0,0,0) – XXX GB ATA HARDDISK – Enter
Write the changes to disk – Yes – Enter
HTTP proxy information (blank for none) - - Continue
How do you want to manage upgrades on this system – No automatic updates – Enter
Choose software to install – Ничего не выбираем – Continue
Install the GRUB boot loader to the master boot record – Yes – Enter
Installation complete – remove CD-ROM – Continue
STEP 2 Небольшие настройки ( SSH, Putty)
Сервер загрузился, логинимся пользователем osm (мы его определили при инсталляции) с паролем password (тоже при инсталляции завели).
$ sudo apt-get install ssh
Как минимум стоит поправить номер порта в конфигурации sshd:
$ sudo vi /etc/ssh/sshd_config
любой отличный от дефолтного 22.
и перезапускаем sshd:
$ sudo service ssh restart
$ ifconfig
(если адрес выделен динамически то стоит его посмотреть и записать, если статический то тогда до настроить сетевое окружение в файле /etc/network/interfaces)
Скачиваем из инета putty на свою любимую виндовую машину и указываем в настройках адрес удаленной машины, порт и протокол SSH).
Почему putty? Он позволит копировать и переносить длинные установочные команды из текста приведенного ниже. (в винде «Копировать» в командной строке putty просто нажать правую клавишу мышки)
Еще немного системных настроек
Выставим timezone
$ sudo dpkg-reconfigure tzdata
Установим время-дату (MMDDHHmmYYYY):
$ sudo date 101111102013
STEP 3 Собственно установка Ruby on Rials и локального OpenStreetMap сервера
(Установка написана по материалам с GiHub)
Минимальная конфигурация представляет bundle из следующих продуктов:
• Ruby 1.9.3
• RubyGems 1.3.1+
• Postgres 8.3+
• ImageMagick
• Bundler
Указанная конфигурация может быть установлена на Ubuntu следующими командами:
$ sudo apt-get install ruby1.9.1 libruby1.9.1 ruby1.9.1-dev ri1.9.1 libmagickwand-dev libxml2-dev libxslt1-dev apache2 apache2-threaded-dev build-essential git-core postgresql postgresql-contrib libpq-dev postgresql-server-dev-all libsasl2-dev
$ sudo gem1.9.1 install bundle
В двух местах выскочили предупреждения lib not found но это в разделе документация для ri (предположим что не страшно).
Скачаем repository в нашу домашнюю директорию ( $ cd ~/;)
Содержимое сравнительно большое (~150MB), запускаем:
$ git clone https://github.com/openstreetmap/openstreetmap-website.git
Устанавливаем Ruby gems
Мы воспользуемся набором инструментом bundle [Bundler](http://gembundler.com/) для создания среды rubygems необходимой для нашего проекта.
$ cd openstreetmap-website
$ sudo bundle install
Настраиваем приложения
Нам необходимо создать конфигурационный файл `config/application.yml` скопировав его с example template. В файле содержаться различные конфигурационные опции.
$ cp config/example.application.yml config/application.yml
Вы можете уточнить параметры настроек изменив их в файле `config/application.yml`.
Настройка параметров Базы Данных
The Rails Port использует три базы данных - одна для разработки, одна для тестирования и одна для «боевой» эксплуатации. Конфигурационные настройки хранятся в файле `config/database.yml`, который мы тоже скопируем с файла примера (example template).
$ cp config/example.database.yml config/database.yml
PostgreSQL сконфигурирован, по умолчанию, устанавливать локальные соединения не требующие имени пользователя и пароля. Это хорошо для этапа разработки.
Если Вам потребуется изменить эти настройки то Вы сможете это проделать изменив параметры файла `config/database.yml` и поправить инструкции приведенные ниже по тексту.
Настройка параметров аккаунта в PostgreSQL
Нам необходимо создать PostgreSQL role (то есть пользовательский аккаунт) for your current user, и для этого потребуются права superuser чтобы мы смогли создавать базы данных.
osm@TS: $ sudo -u postgres –i
postgres@TS: createuser -s <username>
postgres@TS: exit
Создаем базы данных
Вначале установим Javascript runtime, в явном виде его нет, потому ставим nodejs который установит нам необходимый пакет.
$ sudo apt-get install nodejs
Для создания баз данных для разработки, тестирования и эксплуатации исполняем (в оригинале было $ sudo bundle exec rake db:create, однако завершается эта команда с ошибкой. В гугле куча советов, но почему то в моем случае эффекта не дало, потому следующая кривизна):
osm@ubuntu:~/openstreetmap-website$ sudo -u postgres –i
postgres@ubuntu:~$ createdb -E UTF8 -O osm osm
postgres@ubuntu:~$ createdb -E UTF8 -O osm osm_test
postgres@ubuntu:~$ createdb -E UTF8 -O osm openstreetmap
postgres@ubuntu:~$ exit
Ставим PostgreSQL Btree-gist Extension
$ psql -d openstreetmap -c "CREATE EXTENSION btree_gist"
Компилим PostgreSQL Functions
$ 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"
Устанавливаем структуру Баз (Database structure)
Чтобы создать все таблицы, индексы и пр. запускам:
$ bundle exec rake db:migrate RAILS_ENV=development
(вместо оригинального bundle exec rake db:migrate)
Теперь можно запустить тесты, чтобы быть уверенным что в целом все хорошо:
$ bundle exec rake test
Тест занимает несколько минут и output parser может сказать о нескольких ошибках типа "Attribute lat redefined." Их можно игнорировать.
Собственно можно запустить сервер
$ bundle exec rails server
Теперь с помощью броузера можно посмотреть результат своей работы по адресу `http://localhost:3000/`
То что Вы увидите в броузере это карта с внешнего tile сервера. Однако сделан первый шаг – у нас есть локальный рельсовый сервер.
To be continied….
Last edited by Achechet (2013-10-15 12:58:42)
Offline
#2 2013-10-15 12:24:40
- lenux
- Member
- Registered: 2011-12-06
- Posts: 666
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
Полагаю, что данной статье место всё же в нашей википедии, чем на форуме. Так же явно нехватает введения где было бы сказано о чём идёт речь в данной инструкции
Offline
#3 2013-10-15 12:48:48
- Achechet
- Member
- Registered: 2013-10-02
- Posts: 41
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
Ее еще рано в вики помещать.
Хотелось бы пообсуждать, чтобы еще кто то попробовал.
Есть проблемы при установке, возможно что кто то предложит пути решения.
Задавать вопросы и отвечать на них, на форуме немного проще.
Offline
#4 2013-10-15 13:58:30
- Zkir
- Member
- From: Хрустальная Москва
- Registered: 2009-02-21
- Posts: 6,110
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
Achechet, я думаю человек, которые разворачивали рэйлз порт локально, можно пересчитать по пальцам одной руки, причем во всем мире. Это все-таки не ГИС.
Истинные слова не не приятны, приятные слова не истинны.
True words are unpleasant; pleasant words are untrue.
Offline
#5 2013-10-15 14:14:33
- Achechet
- Member
- Registered: 2013-10-02
- Posts: 41
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
Благодаря проекту OpenStreetMaps я познакомился с Ruby on Rails.
Это довольно интересный фреймворк сам по себе.
Как утверждает инет его используют многие разработчики для сложных корпоративных приложений.
На установленном bundle я уже начал процесс освоения фреймворка.
Может быть кто то еще захочет сделать подобное.
Offline
#6 2013-10-15 15:00:06
- lenux
- Member
- Registered: 2011-12-06
- Posts: 666
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
Achechet в конце лучше будет сделать скриншоты то что увидется на localhost, возможно даже если есть желание снять видео по использованию (в1080р желательно) : ) . Дабы тем кто будет пользоваться или просто кому любопытно, не пришлось ставить. Так же отдельно желательно указать что инструкция для Unix like , для Windows не подходит или может в будущем.
Offline
#7 2013-10-15 15:31:35
- Achechet
- Member
- Registered: 2013-10-02
- Posts: 41
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
На localhost все идентично картинке на openstreetmap.org в том числе и настройки и встроенный редактор.
Установка начинается с инсталляции системы, как Вы заметили.
Причем конкретной системы с конкретной версией дистрибутива.
Из под винды можно использовать виртуальную машину и в ней инсталлировать.
Offline
#8 2013-10-15 16:02:40
- Vitalts
- Member
- From: Estonia
- Registered: 2010-12-30
- Posts: 1,440
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
Интересно, на шаред хостинге с рельсами и пгскл 8.4 поднять можно (консоли нет, постгис отутсвует)?
Offline
#9 2013-10-15 18:40:52
- Achechet
- Member
- Registered: 2013-10-02
- Posts: 41
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
Если в шелл хостинг пускает и позволит права супер пользователя, то наверное да.
Там если посмотреть то сплошные sudo.
И какой линух на хостинге? Можно конкретный заказать?
В конце концов у хостера можно попросить что развернул.
Ruby on Rails это же фреймворк для разработки именно веб приложений.
Я пробовал на Gentoo так весь исплевался.
Last edited by Achechet (2013-10-15 18:42:56)
Offline
#10 2013-10-15 19:29:26
- Max Vasilev
- Member
- Registered: 2009-06-16
- Posts: 1,026
- Website
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
Step1 просто убил, на взлёте, но это к слову.
Ничего сложного я не помню в установке и разворачивании API сервера под R/R, делал это несколько раз для разных нужд. Одна из инсталяций до сих работает на нужды гидрологов, топологов и прочих -ологов, которые в два отдела совместно работают над одной базой, данные из которой никогда не попадут в ОСМ. Сам формат хранения данных и совместной работы пришёлся им по вкусу и JOSM+RR-API заменили им дорогой проприеритарный инструмент создания геоданных. Вот только там полная заморозка версий всех инструментов, компонентов и форматов данных, навсегда.
Основная проблема у меня была в поддержании апи-сервера в рабочем и актуальном состоянии одновременно. Либо одно, либо другое. Проблема заключается больше в самой идеологии ОСМ в целом: могут вноситься любые изменения в сам API, без какой либо поддержки со стороны инструментов. Как минимум я помню три версии API v 0.6, которые на практике имеют кардинальные отличия, ломающие всю работу API сервера. Вначале в угоду redaction-геноциду изменили поведение версий объектов и стали появляться объекты с дырами в истории и нулевыми версиями и т.д., от которых API сервер стало просто тошнить. При попытке обновить его, возникла проблема с тем, что не всё в текущей версии фреймворка RR его устраивает и нужны новые рельсы, после обновления рельс, оказалось что не все компонеты фреймворка вообще работают на новых рельсах. Вторая проблема вылезла, когда в новом апи появились ченжсеты с действиями удаления, но без самих данных, на них стал падать уже осмосис, а новый осмосис, который не падал на новых osc, не работал со старым API сервером и опять вся цепочка зависимостей.
Мне вообще не понятно, как существует и как реализуется обновление всей текущей инфраструктуры OSM, учитывая, что большая часть базовых инструментов получает нужный функционал, при критически важных изменениях в API, без смены версии самого API, только спустя очень продолжительное время, исчисляемое иногда месяцами.
Offline
#11 2013-10-15 21:00:04
- BushmanK
- Member
- Registered: 2011-05-03
- Posts: 5,106
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
Max Vasilev, предположительно - вот так берут и пилят, подгоняют одно под другое на тестовом сервере. В одной дружественной конторе такую ситуацию называли "техническая олигархия", когда некая внутренняя система была написана и собрана из частей настолько странно, что работать с ней отказывались все, кроме ее непосредственных авторов, а руководство боялось их как-то прижать или уволить, чтобы не остаться без работающей системы.
Именно потому я и советовал в параллельной теме благополучно забить на OSM API и прочее, а собрать ровно то же самое, но из средств, которые не завязаны между собой намертво, взаимозаменяемы и протестированы многими тысячами пользователей, а не десятками энтузиастов. (В огород QGIS я тоже могу камень кинуть - там тоже периодически что-то ломается, но QGIS - один из десятков продуктов с нужным функционалом, а не один из трех.)
"Не умею" не значит "невозможно", "не видел" не значит "не бывает". "Нет проблемы", вероятнее всего, значит, что "нет мозгов".
Offline
#12 2013-10-16 07:33:01
- Vitalts
- Member
- From: Estonia
- Registered: 2010-12-30
- Posts: 1,440
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
Если в шелл хостинг пускает и позволит права супер пользователя, то наверное да.
Там если посмотреть то сплошные sudo.
И какой линух на хостинге? Можно конкретный заказать?
В конце концов у хостера можно попросить что развернул.
Ruby on Rails это же фреймворк для разработки именно веб приложений.
Значит, мимо. Договорится с хостером значит поменять пакет услуг, и чую, это уже будет VPS.
Last edited by Vitalts (2013-10-16 07:36:22)
Offline
#13 2013-10-16 07:35:46
- Vitalts
- Member
- From: Estonia
- Registered: 2010-12-30
- Posts: 1,440
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
дубль
Last edited by Vitalts (2013-10-16 07:36:15)
Offline
#14 2013-11-13 12:58:32
- Alexey Illarionov
- Member
- Registered: 2011-06-26
- Posts: 96
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
• Ruby 1.9.3
• RubyGems 1.3.1+
• Postgres 8.3+
• ImageMagick
• Bundler
Чтобы не заморачиваться с sudo и bundle, здесь лучше сразу ставить rbenv, rbenv-build (либо rvm), и с ним ruby со всем бандлом к себе в хоум.
Не кажый хостинг позволит подгрузить btree_gist в postgresql.
По идее, можно сделать образ для vagrant, с провижном на puppet/chef. Или есть уже у кого?
Offline
#15 2013-12-05 08:55:03
- wonderful-fungi
- Member
- Registered: 2013-12-05
- Posts: 2
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
Achechet, большое спасибо за статью! Только начинаю разбираться с темой ГИС. Поставили сервер по этой статье http://switch2osm.org/serving-tiles/man … ver-12-04/, залили данные в базу, но не понятно как создавать и редактировать свои слои. Выясняется, что нужен еще rails сервер, а Apache тогда получается не нужен? Сейчас же он выводит карту в браузер.
Offline
#16 2013-12-05 09:01:09
- freeExec
- Moderator
- From: Ульяновск,Модератор всех слоёв
- Registered: 2012-07-31
- Posts: 8,451
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
Одна только проблема, так таковых слоёв в ОСМ нет.
Рельсы отдают тайлы, а Апач старницу разметки, чтобы пользователь видел эти тайлы.
Offline
#17 2013-12-05 09:22:15
- wonderful-fungi
- Member
- Registered: 2013-12-05
- Posts: 2
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
Нам нужно чтоб можно было слои скрывать/показывать при нажатии на галочки. В openlayers можно настроить разные источники для разных слоев. Если каждый слой хранить отдельно, получится ведь?
Offline
#18 2013-12-05 10:12:08
- dkiselev
- Member
- Registered: 2010-02-09
- Posts: 3,364
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
wonderful-fungi, получится, только использовать осм для создания своих слоев - это пожалуй слишком сложно и муторно.
Вам слой векторный или растровый нужен?
mail: dkiselev@osm.me skype: dmitry.v.kiselev
Open Street Maps are supreme! Exterminate all map forms! Exterminate! Exterminate!
Offline
#19 2013-12-05 11:29:47
- Nikolya
- Member
- From: Краснодар
- Registered: 2010-08-17
- Posts: 937
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
чуть по проще, для прочтения интересно
Создание простейшего HTTP-сервиса для публикации векторных данных
http://gis-lab.info/qa/http-publish-vector.html
Основы работы динамических TMS-сервисов
http://gis-lab.info/qa/dynamic-tms.html
Offline
#20 2013-12-05 11:42:44
- freeExec
- Moderator
- From: Ульяновск,Модератор всех слоёв
- Registered: 2012-07-31
- Posts: 8,451
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
Вам слой векторный или растровый нужен?
Просто если нужны векторные данные, то ОСМ для этого прохо приспособлен. Даже наверное фильтры в JOSM не помогут.
А вот растровые данные это легко, нужны только правильно составленные стили для рендеринга.
Offline
#21 2014-11-09 18:16:38
- openSUSEuser
- Member
- Registered: 2014-11-09
- Posts: 2
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
К вопросу о локальном сервере OSM, подскажите пожалуйста
ставлю его на openSUSE, может кто сталкивался с такими ошибками (вне зависимости на какую ОС):
1) сервер уже поставлен и был один раз запущен, но после того как выключили и включили компьютер он что то говорит что не может подключиться к серверу, пишет:
could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
Rails.root: /opt/osm/rails
2) где можно найти файлы конфигурации , чтобы изменить адрес по которому сервер создан..почему то получился адрес такой: 0.0.0.0:3000, хотелось бы сменить на localhost (да и вообще должно быть изначально localhost..) ?
3) сервер нужно запускать вроде как командой rails server, у меня только если с указанием пути скрипта rails:
~> /opt/osm/rails/script/rails server
почему так?
туториал использовался следующий http://wiki.openstreetmap.org/wiki/RU:% … 1%80%D0%B0 и https://github.com/openstreetmap/openst … INSTALL.md
Offline
#22 2015-09-01 00:44:46
- progserega
- Member
- From: Владивосток
- Registered: 2009-12-31
- Posts: 456
Re: Устанавливаем локальный Rails on Ruby для OpenStreetMap
К вопросу о локальном сервере OSM, подскажите пожалуйста
ставлю его на openSUSE, может кто сталкивался с такими ошибками (вне зависимости на какую ОС):
1) сервер уже поставлен и был один раз запущен, но после того как выключили и включили компьютер он что то говорит что не может подключиться к серверу, пишет:could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
Rails.root: /opt/osm/rails2) где можно найти файлы конфигурации , чтобы изменить адрес по которому сервер создан..почему то получился адрес такой: 0.0.0.0:3000, хотелось бы сменить на localhost (да и вообще должно быть изначально localhost..) ?
3) сервер нужно запускать вроде как командой rails server, у меня только если с указанием пути скрипта rails:~> /opt/osm/rails/script/rails server
почему так?
туториал использовался следующий http://wiki.openstreetmap.org/wiki/RU:% … 1%80%D0%B0 и https://github.com/openstreetmap/openst … INSTALL.md
1) Судя по всему он пытается подключиться к postgres через локальный файловый сокет. Попробуйте настроить подключение не через localhost, а через внешний интерфейс (в конфиге баз данных osm-сервера).
2) это нормально. Нужно настроить apache-прокси, чтобы он перенаправлял запросы с 80-го порта на 3000-й - приложению руби.
http://wiki.openstreetmap.org/wiki/RU:% … _OSM-Rails
3) http://wiki.openstreetmap.org/wiki/RU:% … 0.BA.D1.83
matrix.org: @progserega:rsprim.ru
Offline