RU:Creating a local OSM server under FreeBSD
Jump to navigation
Jump to search
Описание шагов по созданию локального сервера OpenStreetMap на базе Rails_Port v3.* под управлением FreeBSD
Работы с ОС FreeBSD
Настраиваем ядро
options SYSVSHM # совместно используемая память SysV options SHMMAXPGS=65536 options SYSVSEM # семафоры SysV options SEMMNI=40 # максимальное количество наборов семафоров в системе options SEMUME=40 options SEMMNS=240 # макс количество семафоров в системе options SEMMNU=120 # макс количество структур undo в системе options SYSVMSG # межпроцессорное взаимодействие SysV
Установка портов
Ruby 1.8.6 или выше
RubyGems 1.3.1 или выше
Postgres 8.3 или выше
ImageMagick
Настраиваем rc.conf
postgresql_enable="YES" postgresql_data="path_to/pgsql/data" postgresql_flags="-w -s -m fast" postgresql_initdb_flags="--encoding=utf-8 --lc-collate=C"
Настраиваем login.conf:
postgres:\ :lang=en_US.UTF-8:\ :setenv=LC_COLLATE=C:\ :tc=default:
запустить `cap_mkdb login.conf'
Получения текущего кода OpenStreetMap
# git clone git://git.openstreetmap.org/rails.git
Копируем и редактируем файлы конфигурации
# cd /path_to_rails_code # cp config/example.application.yml config/application.yml # cp config/example.database.yml config/database.yml
Работы с Postgres
Установка дополнений
# cd /usr/ports/databases/posgresql84-contrib # make # make install
Настраиваем postgresql.conf
shared_buffers = 128MB checkpoint_segments = 20 maintenance_work_mem = 256MB autovacuum = off
Создаем пользователя и базы postgres
# sudo -u pgsql -i $createuser openstreetmap -s -P $Enter password for new role:secret $Enter it again:secret $createdb -E UTF8 -O openstreetmap openstreetmap $createdb -E UTF8 -O openstreetmap osm_test $createdb -E UTF8 -O openstreetmap osm $psql -d openstreetmap < /usr/local/share/postgresql/contrib/btree_gist.sql
Настраиваем доступ к postgres в pg_hba.conf.
# "local" is for Unix domain socket connections only local openstreetmap openstreetmap trust local all all ident sameuser # IPv4 local connections: host all all 127.0.0.1/32 trust host openstreetmap openstreetmap 192.168.0.0/24 trust host all all 192.168.0.0/24 trust
Устанавливаем gem-библиотеки
gem-библиотеки, требуемые для кода ОСМ
# gem install bundler # cd path_to_rails_code/ # bundle install
Примечание: Некоторые библиотеки потребовали задания дополнительный параметров или установки дополнительный портов
iconv
# gem install iconv -- --with-iconv-include=/usr/local/include
memached
# cd /usr/ports/databases/memached # make -with-sasl # make install # gem install memcached
Дополнительные gem-библиотеки
# gem install passenger Fetching: rake-0.9.2.2.gem (100%) Fetching: fastthread-1.0.7.gem (100%) Building native extensions. This could take a while... Fetching: daemon_controller-1.0.0.gem (100%) Fetching: rack-1.4.1.gem (100%) Fetching: passenger-3.0.13.gem (100%)
Итоговый список
# gem list --local *** LOCAL GEMS *** actionmailer (3.2.2) actionpack (3.2.2) activemodel (3.2.2) activerecord (3.2.2) activeresource (3.2.2) activesupport (3.2.2) addressable (2.2.7) arel (3.0.2) builder (3.0.0) bundler (1.1.5, 1.1.4) cocaine (0.2.1) coffee-rails (3.2.2) coffee-script (2.2.0) coffee-script-source (1.2.0) composite_primary_keys (5.0.1) daemon_controller (1.0.0) deadlock_retry (1.2.0) dynamic_form (1.1.4) erubis (2.7.0) execjs (1.3.0) faraday (0.7.6) fastthread (1.0.7) hike (1.2.1) http_accept_language (1.0.2) httpclient (2.2.4) i18n (0.6.0) iconv (0.1) journey (1.0.3) jquery-rails (2.0.1) json (1.6.5) libv8 (3.3.10.4) libxml-ruby (2.2.2) mail (2.4.1) memcached (1.4.1) mime-types (1.17.2) multi_json (1.1.0) multipart-post (1.1.5) nokogiri (1.5.0) oauth (0.4.6, 0.4.5) oauth-plugin (0.4.0.rc2) oauth2 (0.5.2) open_id_authentication (1.1.0) paperclip (2.7.0) passenger (3.0.13) pg (0.13.2) polyglot (0.3.3) rack (1.4.1) rack-cache (1.1) rack-openid (1.3.1) rack-ssl (1.3.2) rack-test (0.6.1) rails (3.2.2) rails-i18n (0.5.1) railties (3.2.2) rake (0.9.2.2) rdoc (3.12) rinku (1.5.1) ruby-openid (2.1.8) sanitize (2.0.3) sass (3.1.15) sass-rails (3.2.4) sprockets (2.1.2) SystemTimer (1.2.3) therubyracer (0.9.10) thor (0.14.6) tilt (1.3.3) timecop (0.3.5) treetop (1.4.10) tzinfo (0.3.31) uglifier (1.2.3) validates_email_format_of (1.5.3)
Работа с кодом OpenStreetMap
Подключение модуля libpgosm.so
# cd /path_to_rails_code/db/functions # gmake # sudo -u pgsql -i $ psql openstreetmap openstreetmap=# CREATE FUNCTION maptile_for_point(int8, int8, int4) RETURNS int4 AS '/data1/www/data/map/db/functions/libpgosm.so', 'maptile_for_point' LANGUAGE C STRICT; openstreetmap=# CREATE FUNCTION tile_for_point(int4, int4) RETURNS int8 AS '/data1/www/data/map/db/functions/libpgosm.so', 'tile_for_point' LANGUAGE C STRICT; $\q
Заполнение структуры базы и тест
# sudo -u pgsql -i $ cd /path_to_rails_code $ rake db:migrate $ env RAILS_ENV=production rake db:migrate $ rake test
Назначение администратора и модератора
$ /path_to_rails_code/script/rails console irb(main):001:0> user = User.find_by_display_name("admin") irb(main):001:0> user.roles.create({:role => "administrator", :granter_id => 1}, :without_protection => true) irb(main):001:0> user.roles.create({:role => "moderator", :granter_id => 1}, :without_protection => true) irb(main):004:0> user.save!
Установки Apache2
Компилируем модуль mod_passenger.so
# /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.13/bin/passenger-install-apache2-module
Создаем файл passenger.conf
apache22/Includes/passenger.conf
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.7/ext/apache2/mod_passenger.so PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.7 PassengerRuby /usr/local/bin/ruby18
Создаем файл .htaccess
AddHandler fastcgi-script .fcgi AddHandler cgi-script .cgi Options +FollowSymLinks +ExecCGI RewriteEngine On RewriteRule ^$ index.html [QSA] RewriteRule ^([^.]+)$ $1.html [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ public/dispatch.cgi [QSA,L] ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"
Загрузка данных дампа планеты Planet.osm в базу
- Проверка контрольной суммы.
# gmd5sum -c dump-planet.osm.bz2.md5 dump-planet.osm.bz2
- Заполнение базы
# osmosis --read-xml-0.6 file="dump-planet.osm.bz2" --write-apidb-0.6 populateCurrentTables=yes host="localhost" database="openstreetmap" user="openstreetmap" password="secret" validateSchemaVersion=no
Примечание: Скачанный файл планеты записать в базу не удалось. Пришлось перезаписать его в файл соответствующий последней дате, указанной на сайте https://planet.openstreetmap.org/day-replicate/.
# bzcat dump-planet.osm.bz2 | osmosis --rri --simc --rx - --ac --wx - | bzip2 > planet-out.osm.bz2 # osmosis --read-xml-0.6 file="planet-out.osm.bz2" --write-apidb-0.6 populateCurrentTables=yes host="localhost" database="openstreetmap" user="openstreetmap" password="secret" validateSchemaVersion=no
Источники информации
- Category:Ruby
- Category:Map_API_Server
- Rails_Port
- The_Rails_Port
- DE:HowtoMinutelyHstore
- RU:Minutely_Mapnik
- User:Ajoessen/Osmosis
- User:BigPeteB/Setting up a local database copy
- Osmosis/Examples
- Osmosis/Detailed_Usage_0.39
- Planet.osm