본문 바로가기
STUDY/LINUX

OPENSTREET TILE SERVER 설치

by NOTEEE 2018. 4. 17.


오프라인에서 사용하기위해 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 autoconf 
    libtool libxml2-dev libgeos-dev libgeos++-dev libpq-dev libbz2-dev libproj-dev munin-node 
    munin libprotobuf-c0-dev protobuf-c-compiler libfreetype6-dev libpng12-dev libtiff5-dev 
    libicu-dev libgdal-dev libcairo-dev libcairomm-1.0-dev apache2 apache2-dev libagg-dev 
    liblua5.2-dev ttf-unifont lua5.1 liblua5.1-dev libgeotiff-epsg
    cs

  • Postgresql / postgis 설치

    sudo apt-get install postgresql postgresql-contrib postgis postgresql-9.5-postgis-2.2
    cs


  • Postgis 데이터베이스 생성 및 사용자 생성

    sudo -u postgres -i
    createuser renderaccount # answer yes for superuser (although this isn't strictly necessary)
    createdb -E UTF8 -O renderaccount gis
    cs


    psql
     
    \c gis
    cs
  • 데이터베이스 정의

    CREATE EXTENSION postgis;
    CREATE EXTENSION hstore;
     
    ALTER TABLE geometry_columns OWNER TO renderaccount;
    ALTER TABLE spatial_ref_sys OWNER TO renderaccount;
     
    \q
    exit
    cs


  • 계정생성 후 renderaccount로 대체 로그인

    sudo useradd -m renderaccount
    sudo passwd renderaccount #password = passwd
    cs

  • osm2pgsql 설치(OpenstreetMap 데이터를 데이터베이스에서 가져오고 관리하는 다양한 도구가 있다고 함.)

    mkdir ~ / src
    cd ~ / src
    git clone git://github.com/openstreetmap/osm2pgsql.git
    cd osm2pgsql
    cs


  • osm2pgsql에서 필요한 설치
    sudo apt install make cmake g ++ libboost-dev libboost-system-dev 
    libboost-filesystem-dev libexpat1-dev zlib1g-dev libbz2-dev libpq-dev 
    libgeos-dev libgeos ++ - dev libproj-dev lua5.2 liblua5.2-dev
    cs

  • make

    mkdir build && cd build
    cmake ..
     
    make
     
    // Built target osm2pgsql로 끝나야함.
    sudo make install
    cs

  • Mapnik 설치

    sudo apt-get install autoconf apache2-dev libtool libxml2-dev libbz2-dev 
    libgeos-dev libgeos ++ - dev libproj-dev gdal-bin libgdal1-dev libmapnik-dev 
    mapnik-utils python-mapnik
    cs

  • Mapnik이 제대로 설치되었는지 확인(에러가 발생한다면 설치가 제대로 되지않았다.)
    python
    >>> import mapnik
    >>>
    >>> quit()
    cs

  • mod_tile 과 renderd 설치
    cd ~/src
    git clone -b switch2osm git://github.com/SomeoneElseOSM/mod_tile.git
    cd 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 ~/src
    git clone git://github.com/gravitystorm/openstreetmap-carto.git
    cd openstreetmap-carto
     
    sudo apt install npm nodejs-legacy
    sudo npm install -g carto
    carto -
     
    carto project.mml > mapnik.xml
    cs


  • 지도 다운로드
    mkdir ~/data
    cd ~/data
    #지도 다운로드
    wget https://download.geofabrik.de/asia/south-korea-latest.osm.pbf
    cs

  • 지도 데이터를 삽입

    #OpenStreetMap데이터를 데이터베이스 삽입
    osm2pgsql -d gis --create --slim  ---hstore --tag-transform-script 
    ~/src/openstreetmap-carto/openstreetmap-carto.lua 
    -2500 --number-processes 1 -S ~/src/openstreetmap-carto/openstreetmap-carto.style 
    ~/data/azerbaijan-latest.osm.pbf
    cs

  • 빠른검색을 위해 색인을 생성

    cd ~/src/openstreetmap-carto/
    scripts/get-shapefiles.py
    cs

  • 글꼴추가

    sudo apt-get install fonts-noto-cjk fonts-noto-hinted fonts-noto-unhinted ttf-unifont
    cs

  • 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_tile
    sudo chown renderaccount /var/lib/mod_tile
    sudo mkdir /var/run/renderd
    sudo chown renderaccount /var/run/renderd
     
    sudo nano /etc/apache2/conf-available/mod_tile.conf
        -> 추가 LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so
     
    sudo a2enconf mod_tile
     
    sudo nano /etc/apache2/sites-available/000-default.conf
     
    "ServerAdmin" and "DocumentRoot" 사이에
     
        -> 추가    
            LoadTileConfigFile /usr/local/etc/renderd.conf
            ModTileRenderdSocketName /var/run/renderd/renderd.sock
            # Timeout before giving up for a tile to be rendered
            ModTileRequestTimeout 0
            # Timeout before giving up for a tile to be rendered that is otherwise missing
            ModTileMissingRequestTimeout 30
     
    sudo service apache2 reload
    sudo service apache2 reload
    cs


  • renderd 실행

    renderd --/usr/local/etc/renderd.conf
    cs
  • 백그라운드에서 renderd 실행
    nano ~/src/mod_tile/debian/renderd.init 
    sudo cp ~/src/mod_tile/debian/renderd.init /etc/init.d/renderd 
    sudo chmod u+/etc/init.d/renderd 
    sudo cp ~/src/mod_tile/debian/renderd.service /lib/systemd/system/
     
    // 실행
    sudo /etc/init.d/renderd start
     
    // 자동실행되도록 수행
    sudo systemctl enable renderd
    cs


    - 서비스 등록했을 경우 따로 실행을 안해줘도 됨.

  • 로그

    tail -/ 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