오프라인에서 사용하기위해 OpenStreetMap Tile Server를 설치해보았다.
기반 : Ubuntu(16.04.2 LTS)
OpenStreetMap Tile Server 구축에 필요한 요소를 설치
sudo apt install libboost-all-dev git-core tar unzip wget bzip2 build-essential autoconflibtool libxml2-dev libgeos-dev libgeos++-dev libpq-dev libbz2-dev libproj-dev munin-nodemunin libprotobuf-c0-dev protobuf-c-compiler libfreetype6-dev libpng12-dev libtiff5-devlibicu-dev libgdal-dev libcairo-dev libcairomm-1.0-dev apache2 apache2-dev libagg-devliblua5.2-dev ttf-unifont lua5.1 liblua5.1-dev libgeotiff-epsgcs
Postgresql / postgis 설치
sudo apt-get install postgresql postgresql-contrib postgis postgresql-9.5-postgis-2.2cs
Postgis 데이터베이스 생성 및 사용자 생성
sudo -u postgres -icreateuser renderaccount # answer yes for superuser (although this isn't strictly necessary)createdb -E UTF8 -O renderaccount giscs psql\c giscs
데이터베이스 정의
CREATE EXTENSION postgis;CREATE EXTENSION hstore;ALTER TABLE geometry_columns OWNER TO renderaccount;ALTER TABLE spatial_ref_sys OWNER TO renderaccount;\qexitcs
- 계정생성 후 renderaccount로 대체 로그인sudo useradd -m renderaccountsudo passwd renderaccount #password = passwd
cs
- osm2pgsql 설치(OpenstreetMap 데이터를 데이터베이스에서 가져오고 관리하는 다양한 도구가 있다고 함.)mkdir ~ / srccd ~ / srcgit clone git://github.com/openstreetmap/osm2pgsql.gitcd osm2pgsql
cs
- osm2pgsql에서 필요한 설치sudo apt install make cmake g ++ libboost-dev libboost-system-devlibboost-filesystem-dev libexpat1-dev zlib1g-dev libbz2-dev libpq-devlibgeos-dev libgeos ++ - dev libproj-dev lua5.2 liblua5.2-dev
cs make
mkdir build && cd buildcmake ..make// Built target osm2pgsql로 끝나야함.sudo make installcs
- Mapnik 설치sudo apt-get install autoconf apache2-dev libtool libxml2-dev libbz2-devlibgeos-dev libgeos ++ - dev libproj-dev gdal-bin libgdal1-dev libmapnik-devmapnik-utils python-mapnik
cs
- Mapnik이 제대로 설치되었는지 확인(에러가 발생한다면 설치가 제대로 되지않았다.)python>>> import mapnik>>>>>> quit()
cs
- mod_tile 과 renderd 설치cd ~/srcgit clone -b switch2osm git://github.com/SomeoneElseOSM/mod_tile.gitcd mod_tile./autogen.sh// autoreconf: Leaving directory ` 끝나야함../configure// config.status: executing libtool commands 끝나야함.make//“make[1]: Leaving directory ‘/home/renderaccount/src/mod_tile'끝나야함.sudo make install// “make[1]: Leaving directory ‘/home/renderaccount/src/mod_tile'” 끝나야함.sudo make install-mod_tile// chmod 644 /usr/lib/apache2/modules/mod_tile.so 끝나야함.sudo ldconfig
cs
- 스타일시트 구성cd ~/srcgit clone git://github.com/gravitystorm/openstreetmap-carto.gitcd openstreetmap-cartosudo apt install npm nodejs-legacysudo npm install -g cartocarto -vcarto project.mml > mapnik.xml
cs
- 지도 다운로드mkdir ~/datacd ~/data#지도 다운로드wget https://download.geofabrik.de/asia/south-korea-latest.osm.pbf
cs
지도 데이터를 삽입
#OpenStreetMap데이터를 데이터베이스 삽입osm2pgsql -d gis --create --slim -G --hstore --tag-transform-script~/src/openstreetmap-carto/openstreetmap-carto.lua-C 2500 --number-processes 1 -S ~/src/openstreetmap-carto/openstreetmap-carto.style~/data/azerbaijan-latest.osm.pbfcs 빠른검색을 위해 색인을 생성
cd ~/src/openstreetmap-carto/scripts/get-shapefiles.pycs 글꼴추가
sudo apt-get install fonts-noto-cjk fonts-noto-hinted fonts-noto-unhinted ttf-unifontcs
- renderd 설정sudo nano /usr/local/etc/renderd.conf[renderd] 섹션-> 추가 num_threads=4[ajt] 섹션-> 추가 XML=/home/renderaccount/src/openstreetmap-carto/mapnik.xml-> 추가 URI=/hot/
cs
아파치 설정
sudo mkdir /var/lib/mod_tilesudo chown renderaccount /var/lib/mod_tilesudo mkdir /var/run/renderdsudo chown renderaccount /var/run/renderdsudo nano /etc/apache2/conf-available/mod_tile.conf-> 추가 LoadModule tile_module /usr/lib/apache2/modules/mod_tile.sosudo a2enconf mod_tilesudo nano /etc/apache2/sites-available/000-default.conf"ServerAdmin" and "DocumentRoot" 사이에-> 추가LoadTileConfigFile /usr/local/etc/renderd.confModTileRenderdSocketName /var/run/renderd/renderd.sock# Timeout before giving up for a tile to be renderedModTileRequestTimeout 0# Timeout before giving up for a tile to be rendered that is otherwise missingModTileMissingRequestTimeout 30sudo service apache2 reloadsudo service apache2 reloadcs renderd 실행
renderd -f -c /usr/local/etc/renderd.confcs
- 백그라운드에서 renderd 실행nano ~/src/mod_tile/debian/renderd.initsudo cp ~/src/mod_tile/debian/renderd.init /etc/init.d/renderdsudo chmod u+x /etc/init.d/renderdsudo cp ~/src/mod_tile/debian/renderd.service /lib/systemd/system/// 실행sudo /etc/init.d/renderd start// 자동실행되도록 수행sudo systemctl enable renderd
cs
- 서비스 등록했을 경우 따로 실행을 안해줘도 됨.
- 로그tail -f / var / log / syslog | grep "TILE"
cs
결과)
http://localhost/hot/0/0/0.png 접속했을 때 아래와 같이 나오면 성공적으로 설치된 것입니다.
- 실제 HTML로 적용하면 아래와 같이 출력 됨을 알 수 있다.
'STUDY > LINUX' 카테고리의 다른 글
CENTOS MARIA DB 한글깨짐 (0) | 2018.07.09 |
---|---|
TIME ZONE 변경 (0) | 2018.05.02 |
ELASTICSEARCH 설치 (0) | 2018.02.21 |
ELASTICSEARCH 실행시 자바경로 에러 (0) | 2018.02.21 |
ORACLE EXPRESS 설치하기 (0) | 2018.01.22 |