Pemasangan OpenStreetMap pada Ubuntu 16.04

Setelah beberapa cubaan untuk hos ’tile’ Open Street Map (OSM) yang disudahi dengan linangan airmata. Akhirnya saya berjaya melakukan pemasangan OSM pada Ubuntu 16.04.

Pemasangan dilakukan di Linode 2GB RAM sahaja, dan saya hanya berminat untuk hos ’tile’ bagi negara Malaysia sahaja.

Sebelum melakukan proses pemasangan, perkara pertama yang perlu dilakukan adalah

sudo apt update
sudo apt upgrade

Memandangkan proses pemasangan memerlukan RAM 4GB (minima) maka saya perlu membuat fail swap agar dapat menampung kekurangan 2GB RAM tadi. Makanya, saya peruntukkan 2G untuk swapfile. Tapi memandangkan saya hanya import peta Malaysia, maka tidak perlu ada swapfile.

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile

Isu yang kedua yang saya hadapi ketika proses pemasangan OSM adalah timeout ketika ssh. Untuk mengelakkan perkara ini terjadi,

sudo nano /etc/ssh/ssh_config

Cari perkataan ServerAliveInterval. Sekiranya tiada tambah ServerAliveInterval 90.

ServerAliveInterval 90

Sekarang kita sudah boleh mula dengan proses pemasangan. Mulakan dengan memasang Postgres

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

Selesai proses pemasangan Postgres, kita perlu masuk ke dalam pangkalan data postgres. Secara lalai, pengguna postgres akan dijana semasa proses pemasangan tadi. Jadi kita perlu masuk ke persekitaran pengguna postgres

sudo -u postgres -i

Sekarang kita perlu tambah pengguna untuk diakses ke pangkalan data. Pengguna postgres merupakan ‘root’ didalam pangkalan data, jadi kita perlu menambah pengguna baru.

createuser osm

Selesai tambah pengguna osm, kita juga perlu jana pangkalan data baru yang diberi nama openstreet(nama ini terpulang kepada anda. Selesai menjana pangkalan data, anda juga perlu aktifkan ‘extension’ hstore dan postgis. Kedua-dua ‘extension’ ini diguna pakai bagi memproses maklumat gis.

createdb -E UTF8 -O osm openstreet
psql -c "CREATE EXTENSION hstore;" -d openstreet
psql -c "CREATE EXTENSION postgis;" -d openstreet

Kemudian kita perlu keluar dari postgres dengan menaip exit

Oleh kerana kita telah menambah pengguna osm didalam pangkalan data, kita juga perlu menambah pengguna osm didalam Ubuntu. Ini bagi membolehkan pengguna osm didalam persekitaran sistem mengakses pangkalan data openstreet menggunakan pengguna osm.

sudo adduser osm

Memandangkan saya malas untuk ‘switch’ pengguna, maka saya juga telah tambah pengguna osm ke dalam senarai sudoers.

usermod -aG sudo username

Bertukar kepada persekitaran osm. Bertukar!

su - osm

Langkah seterusnya adalah muat turun CartoCSS map stylesheets

wget https://github.com/gravitystorm/openstreetmap-carto/archive/v2.41.0.tar.gz

Selesai proses muat turun, untar fail tersebut.

tar xvf v2.41.0.tar.gz

Muat turun pula fail peta Malaysia

wget -c http://download.geofabrik.de/asia/malaysia-singapore-brunei-latest.osm.pbf

Bagi mengimport data peta kedalam pangkalan data, kita memerlukan osm2psql. Sekiranya anda tidak membenarkan pengguna osm melakukan sudo, sila tukar ke pengguna root terlebih dahulu.

sudo apt install osm2pgsql

Sebaik sahaja selesai proses pemasangan osm2psql, larikan arahan dibawah

osm2pgsql --slim -d gis -C 3600 --hstore -S openstreetmap-carto-2.41.0/openstreetmap-carto.style malaysia-singapore-brunei-latest.osm.pbf

Semua yang kita lakukan tadi adalah bahagian mudah, sekarang kita perlu memasang mod_tiles. Kebanyakan ralat berpunca dari pemasangan mod_tiles yang tidak betul.

sudo apt install git autoconf libtool libmapnik-dev apache2-dev
git clone https://github.com/openstreetmap/mod_tile.git

Arahan diatas membolehkan memasang beberapa ‘library’ yang diperlukan. Kita guna memuat turun kod sumber map_tile.

cd mod_tile/
./autogen.sh
./configure
make
sudo make install
sudo make install-mod_tile

Arahan tadi menyebabkan kita mengkonfigurasi, mengkompil serta memasang mod_tile pada ubuntu. Sekarang kita perlu menjana mapnik ‘stylesheet’.

sudo apt install curl unzip gdal-bin mapnik-utils node-carto

Sekirannya anda didalam persekitaran pengguna root, masuk semula ke persekitaran pengguna osm. Andai anda dalam persekitaran osm, langkau langkah ini.

su - osm

Sekarang kita perlu memasang ‘library’ yang perlu untuk menggunakan mapnik.
Masuk ke folder openstreetmap-carto-2.41.0/ dan jana fail bentuk. Seterusnya menjana style.xml

sudo apt install curl unzip gdal-bin mapnik-utils node-carto
cd openstreetmap-carto-2.41.0/
./get-shapefiles.sh
carto project.mml > style.xml

Selesai langkah-langkah diatas, kita perlu mengkonfigurasi renderd

sudo nano /usr/local/etc/renderd.conf

Copy arahan dibawah dan paste pada renderd.conf

[renderd]
socketname=/var/run/renderd/renderd.sock
num_threads=1
tile_dir=/var/lib/mod_tile
stats_file=/var/run/renderd/renderd.stats

[mapnik]
plugins_dir=/usr/lib/mapnik/3.0/input
font_dir=/usr/share/fonts/truetype
font_dir_recurse=1

[default]
URI=/osm_tiles/
TILEDIR=/var/lib/mod_tile
XML=/home/osm/openstreetmap-carto-2.41.0/style.xml
HOST=localhost
TILESIZE=256
;HTCPHOST=proxy.openstreetmap.org
;MINZOOM=0
;MAXZOOM=18
;TYPE=png image/png
;DESCRIPTION=This is a description of the tile layer used in the tile json requ$
;ATTRIBUTION=&copy;<a href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> $
;SERVER_ALIAS=http://localhost/
;CORS=http://www.openstreetmap.org
;ASPECTX=1
;ASPECTY=1
;SCALE=1.0

Kenapa saya suruh copy dan paste sahaja? Sebab yang lain tidak diperlukan, dan akan menyebabkan ralat.
Langkah seterusnya adalah salin fail mod_tile/debian/renderd.init kedalam /etc/init.d/renderd dan diberikan kebenaran, dengan harapan ianya sentiasa berada dijalan yang benar.

sudo cp mod_tile/debian/renderd.init /etc/init.d/renderd
sudo chmod a+x /etc/init.d/renderd

Sudah penat? Sabar, sekarang kita perlu edit fail tadi.

sudo nano /etc/init.d/renderd

Ubah parameter tersebut menjadi

DAEMON=/usr/local/bin/$NAME
DAEMON_ARGS="-c /usr/local/etc/renderd.conf"
RUNASUSER=osm

Sekarang kita perlu buat satu folder dan berikan kebenaran kepada folder tersebut kepada osm. Tiada lain melainkan yang benar-benar belaka.

sudo mkdir -p /var/lib/mod_tile
sudo chown osm:osm /var/lib/mod_tile

Akhirnya!!!! Ini merupakan langkah terakhir untuk renderd.

sudo systemctl daemon-reload
sudo systemctl start renderd
sudo systemctl enable renderd

Eh eh eh jangan berseronok dulu! Ada lagi yang kena buat. Sekarang taip exit. Anda akan berada dipersekitaran root. Buat arahan dibawah.

sudo nano /etc/apache2/mods-available/mod_tile.load

Tampal kod ini pada fail tadi

LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so

Aku dah tak larat dah nak taip dan perjelaskan dengan terperinci. Buat sahaja arahan dibawah

sudo ln -s /etc/apache2/mods-available/mod_tile.load /etc/apache2/mods-enabled/
sudo nano /etc/apache2/sites-enabled/000-default.conf

Sekarang cari . Dah jumpa? Tampal kod dibawah didalam fail itu.

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

Sudah boleh restart apache2

sudo systemctl restart apache2

Barulah boleh senyum-senyum kambing dan pergi ke http://ip-server/osm_tiles/0/0/0.png guna pelayar. Berdoalah sambil-sambil melihat pada skrin agar tiada ralat. Sekiranya ada, tinggalkan komen. Saya cuba bantu.

p/s : Arahan diatas di ‘trace’ semula dari history bash.

Composer dengan repositori peribadi

Untuk menggunakan repositari peribadi, berikut adalah langkah-langkah yang perlu dilakukan.

  1.  Jana ssh key
  2. Perlu membuat perubahan pada fail konfigurasi .~/ssh/config
  3. git clone mana-mana repositori (github/bitbucket) menggunakan git dengan tandatangan ssh key
  4. Kemaskini composer.json
  5. Composer update

Langkah-langkah diatas merupakan penerangan ringkas mengenai bagaimana untuk membolehkan composer klon repositori peribadi anda. Jangan risau, dibawah ini merupakan penerangan secara terperinci mengenai setiap langkah tersebut.

1. Jana ssh key
Mohon rujuk klik sini.

2. Perlu membuat perubahan pada fail konfigurasi .~/ssh/config
– Navigasi ke folder C:\User\<katanama>\.ssh\. Sekiranya tiada sebarang fail config, buka text editor anda dan masukkan konfigurasi dibawah.

– Restart Git-bash. ( Yang ini jangan tanya, aku sendiri tidak tahu, jadi aku restart pc)

Host bitbucket.org
HostName bitbucket.org
User emailAnda
IdentityFile ~/.ssh/id_rsa

3. Git clone
– Buka git bash anda dan clone mana-mana repositori. Sekiranya repositori peribadi anda berada di Bitbucket, mana klonlah mana-mana repositori di Bucket. Ini untuk memudahkan anda untuk masukkan RSA host key ke dalam “list of known host”.

4. Kemaskini composer.json
– Buka composer.json projek anda.
– Tambah ini

"require": {
        "format/composerAnda": "dev-master"
},
"repositories": [
        {
            "type": "vcs",
            "url":  "git@bitbucket.org:username/repoComposerAnda.git"
        }

5. Larikan arahan composer update pada command prompt anda. Sepatutnya anda akan dapat melihat composer mula melakukan arahan git clone pakej anda.

Selamat mencuba!

Apache 2.4, PHP 7 dan MySQL 5.7 Windows 10

  1. Muat turun Apache versi 2.4 di Apache Lounge atau Apache Haus. Saya lebih menyukai Apache Lounge kerana dia menggunakan pengkompil VC14.
  2. Muat turun juga Visual C++ Redistributable dari sini.
  3. Sudah semesti kita perlu muat turun PHP versi 7 dari window.php.net. Dapatkan versi Threaded Safe.
  4. Yang terakhir kita juga perlukan MySQL versi 5.7. Muat turun dari laman sawang MySQL.

Unzip fail zip Apache24 dan juga php7. Untuk memudahkan hidup anda, struktur folder anda haruslah seperti ini.
C:\
—–Apache24
—–php

Kemudian buka command prompt menggunakan akses administrator dan navigasi sehingga folder C:\Apache24\bin. Taip arahan dibawah ini.

httpd.exe -k install -n "Apache 2.4"

Sekarang anda sudah berjaya menjana servis untuk Apache anda. Buka fail C:\Apache24\conf\httpd.conf menggunakan notepad. Tambah kod dibawah pada pengakhiran fail

LoadModule php7_module "C:/Dev/php/php7apache2_4.dll"
AddHandler application/x-httpd-php .php

# configure the path to php.ini
PHPIniDir "C:/Dev/php"

Sekarang waktu untuk melakukan konfigurasi pada php pula. Masuk ke folder C:\php menggunakan File Explorer. Rename fail php.ini-development kepada php.ini. Restart Apache menggunakan Services.

Untuk MySQL, haih, kan pakai setup fail? Next-next je la. :p

Mencari Vhost

Seringkali sebagai Admin kepada pelayan (Server), ada masa-masanya kita terpaksa menguruskan pelayan yang telah dikonfigurasi oleh orang lain. Kadangkala, lokasi file konfigurasi tidak diletakkan ditempat yang menjadi kebiasaan.

Konfigurasi host maya (virtualhost), selalunya diletakkan didalam fail yang berasingan dan disimpan dilokasi ‘conf.d’. Untuk CentOS selalu berada di laluan direktori /etc/httpd/conf.d, akan tetapi konfigurasi virtualhost juga boleh dilakukan didalam ‘httpd.conf‘ (sangat tidak digalakkan).

Terdapat satu arahan yang boleh dilakukan diterminal bagi mendapatkan lokasi konfigurasi virtualhost.

1. CentOS

httpd -S

2. Ubuntu

apache2ctl -S

Selamat mencuba!

Fungsi Tail pada Windows

Sekiranya anda menggunakan sistem pengoperasian *nix. Ada masa-masanya anda perlu membaca server log, fungsi tail sangat berguna. Malangnya fungsi tail tidak ada pada sistem pengoperasian windows. Sekurang-kurangnya tidak semudah dan sependek *nix.

Perkara pertama anda perlu pastikan Windows anda dilengkapi dengan Windows Powershell. Sekiranya anda menggunakan Windows 8, Windows 7 ataupun Windows Server, Windows Powershell sudah siap dipasang pada sistem pengoperasian anda. Sekiranya tiada, anda boleh baca http://technet.microsoft.com/en-us/library/hh847837.aspx arahan muat-turun dan cara pemasangannya.

Pada sistem pengoperasian Windows 8, anda cuma perlu tekan Win+q dan taip “Power” pada ruangan Search.

Win+q

Kemudian anda akan mendapat paparan seperti ini

Capture

Berikut merupakan arahan yang perlu anda masukkan


Get-Content <pathToFile> -Tail <bilanganBaris> -Wait

Contoh adalah seperti berikut :


Get-Content error.log -Tail 10 -Wait

-Wait merupakan arahan supaya Get-Content sentiasa mengawasi sebarang perubahan kepada fail error.log. Untuk tamatkan fungsi ini anda cuma perlu tekan Ctrl+c.

Selamat mencuba!