Tuesday, October 24, 2017

Instalasi dan Setting MySQL Server 5.6 Multi Pada FreeBSD 11

Pada kesempatan kali ini saya akan mencoba memberikan petunjuk instalasi sekaligus setting atau konfigurasi supaya dapat menjalankan MySQL Server versi 5.6 secara multi instance.

Apakah yang dimaksud dengan multi instance ?

Multi instance maksudnya adalah menjalankan beberapa daemon service MySQL Server pada satu mesin yang sama  secara bersamaan.

Mengapa hal ini dibutuhkan ?

Well... apabila anda ingin membangun 1 server backup, katakanlah MySQL slave backup server, dimana anda ingin supaya dapat membackup lebih dari 1 master server, maka anda perlu menjalankan beberapa daemon MySQL di server slave ini karena pada MySQL versi 5.6 hanya support 1 ip address master server saja. Berbeda dengan MySQL versi 5.7 keatas, tampaknya sudah support multi ip master server. Entahlah, saya sendiri belum pernah mencobanya. Mungkin nanti saja, karena sementara ini yang saya butuhkan adalah MySQL Server versi 5.6 untuk mendukung aplikasi Visual FoxPro saya.

Ok, kita lanjut ya...

Langkah pertama, kita install terlebih dahulu MySQL Server 5.6 di mesin FreeBSD kita. Caranya cukup mudah, anda hanya perlu mengetikkan perintah : pkg install mysql56-server-5.6.37_1

Setelah MySQL Server 5.6 terinstall, buatlah konfigurasi my.cnf pada folder : /usr/local/etc/mysql seperti dibawah ini :

[mysqld_multi]
mysqld = /usr/local/bin/mysqld_safe
mysqladmin = /usr/local/bin/mysqladmin

[mysqld1]
user = root
datadir = /var/db/mysql1
socket = /var/db/mysql1/mysql1.sock
pid-file = /var/db/mysql1/mysql1.pid
port = 3306
server-id = 12
max_allowed_packet = 2000M
lower_case_table_names = 1
relay-log = /var/db/mysql1/mysql-relay-bin.log
log_bin = /var/db/mysql1/mysql-bin.log
binlog_do_db = makmur
expire_logs_days = 3

[mysqld2]
user = root
datadir = /var/db/mysql2
socket = /var/db/mysql2/mysql2.sock
pid-file = /var/db/mysql2/mysqld2.pid
port = 3308
server-id = 22
max_allowed_packet = 2000M
lower_case_table_names = 1
relay-log = /var/db/mysql2/mysql-relay-bin.log
log_bin = /var/db/mysql2/mysql-bin.log
binlog_do_db = gilang
expire_logs_days = 3

[mysqld3]
user = root
datadir = /var/db/mysql3
socket = /var/db/mysql3/mysql3.sock
pid-file = /var/db/mysql3/mysqld3.pid
port = 3309
server-id = 32
max_allowed_packet = 2000M
lower_case_table_names = 1
relay-log = /var/db/mysql3/mysql-relay-bin.log
log_bin = /var/db/mysql3/mysql-bin.log
binlog_do_db = gita
expire_logs_days = 3


Konfigurasi diatas dapat anda modifikasi dan sesuaikan sendiri dengan kebutuhan anda sendiri, namun untuk keperluan saya saat ini, konfigurasi saya adalah seperti diatas karena saya membutuhkan 3 instance MySQL Server untuk berjalan bersamaan. 

Anda bebas menjalankan berapapun banyaknya mysql instance, tidak ada batasan, hanya saja anda perlu mengedit bagian [mysqldN] dimana N adalah angka 1,2,3, dst untuk menunjukkan instance ke 1,2,3, dst. Namun perlu diingat bahwa setiap instance yang dijalankan harus memiliki port yang berbeda. Jangan menjalankan lebih dari 1 instance pada port yang sama karena hal tersebut akan mengakibatkan MySQL Server crash serta tidak dapat dijalankan.

Setelah selesai dengan konfigurasi diatas, langkah selanjutnya adalah membuat script kecil. Saya membuat dengan nama file mysqlmulti dan saya tempatkan di : /usr/local/bin supaya dapat dipanggil dari mana saja seperti fungi command FreeBSD pada umumnya. Isi script tersebut sederhana sekali, yakni 1 baris perintah untuk menjalankan Mysqld Multi. Berikut command untuk menjalankan Mysqld Multi di dalam script tersebut :

mysqld_multi --defaults-file=/usr/local/etc/mysql/my.cnf start

Menjalankan Mysqld Multi berbeda dengan Mysqld Single.

Kalau untuk menjalankan MySQL daemon secara single, anda cukup menggunakan perintah : service mysql-server start, atau bisa juga menempatkan mysql_enable = YES pada /etc/rc.conf supaya service dapat berjalan otomatis pada saat startup. 

Namun untuk menjalankan Mysqld Multi, terdapat perintah khusus yakni : mysqld_multi.
Silahkan cek manual perintah tersebut untuk melihat opsi-opsi yang ada.

Langkah terakhir sebagai penutup, saya ingin supaya mysqld_multi ini dapat berjalan secara otomatis pada saat server dinyalakan. Untuk mencapai tujuan ini, saya menjalankan script starter diatas dengan menggunakan cron. Cukup menambahkan baris ini pada cron job : @reboot /usr/local/bin/mysqlmulti maka script diatas akan dijalankan setiap kali server dinyalakan.

Demikian semoga penjelasan saya dapat dimengerti dan bermanfaat.

Tuesday, August 29, 2017

Pernahkah anda terbesit sebuah keinginan untuk dapat menghapus file-file di dalam komputer anda yang usianya lebih dari sekian hari, misalkan file-file tersebut adalah file-file hasil backup rutin setiap hari ?

Perintah DOS berikut ini akan membantu anda untuk mencari dan menghapus semua file yang telah berusia sekian hari di folder yang sudah anda tetapkan (contoh : D:\BACKUPKU, 3 hari) beserta subfoldernya :

forfiles /p "D:\BACKUPKU" /s /m *.* /D -3 /C "cmd /c del @path"

perintah diatas sudah saya test di Windows 7 dan berjalan dengan baik.

Semoga bermanfaat!

Tuesday, June 13, 2017

Postfix RBL Mandul

Beberapa hari ini saya mulai menerima e-mail spam di inbox saya. Memang sih walau jumlahnya tidak banyak, tetap saja saya merasa tidak nyaman bahkan sekarang sudah eneg kalau melihat pengirimnya adalah Kia Group.

Seingat saya, saya sudah memasang RBL Spamhaus Zen di RBL Postfix saya (/etc/postfix/main.cf) akan tetapi saya coba test ke : nelson-sbl-test@crynwr.com kok selalu tembus inbox saya (Uh-oh, your SBL block is not working!)

Selidik punya selidik, ternyata tembusnya e-mail spam ini disebabkan oleh DNS Google yang dipergunakan sebagai resolver bagi server e-mail saya (/etc/resolv.conf)

Ya benar! DNS query ke spamhaus.org tidak akan berjalan apabila server e-mail anda menggunakan DNS Google Server sebagai resolvernya!

Sebagai solusinya, silahkan menggunakan DNS servernya OpenDNS berikut dibawah ini :

208.67.222.222 
208.67.220.220

Setelah saya aplikasikan dan coba test lagi ke nelson, yakk... kali ini e-mail spam dari nelson tereject sudah.

Jun 14 10:36:50 stallion postfix/smtpd[2355]: NOQUEUE: reject: RCPT from sbl.crynwr.com[192.203.178.107]: 454 4.7.1 Service unavailable; Client host [192.203.178.107] blocked using zen.spamhaus.org;

Hidup saya jadi tenang sekarang...

Wednesday, September 7, 2016

Automatically Clock Adjustment on Mikrotik RouterOS

Hello...

sudah lama saya tidak mengupdate blog saya ini, maklum dikarenakan tempat kerja saya selama tahun 2015-2016 kurang mendukung talenta saya. Saya yang biasanya suka RnD (Research n Development), bahasa kerennya adalah mengutak-atik system, eh di tempat kerja tersebut saya tidak bisa berbuat banyak karena tidak diberi akses ke system.

Baru kali ini, seminggu setelah saya pindah ke tempat kerja yang baru, saya bisa kembali mengutak-atik dan melakukan banyak sekali RnD lagi hehe ....

Baiklah, untuk kali ini saya akan menunjukkan cara supaya jam dan tanggal di Mikrotik kita selalu up-to-date. Ceritanya begini, setiap jam pulang kerja, router mikrotik di kantor saya selalu dimatikan. Akibatnya, jam dan tanggal di router mikrotik selalu "reset" alias kembali ke Januari tahun 1970-an (aihhh... jadul amit...)

Sebenarnya kalaupun tanggal dan jam ini tidak disesuaikan dengan tanggal dan jam sekarang, tidak masalah kok. Router mikrotik tetap berjalan dengan normal, hanya saja untuk beberapa fungsi : misal adanya penjadwalan otomatis terhadap buka dan tutup akses internet, atau mungkin mau memperbesar kapasitas bandwidth di jam istirahat kantor supaya orang-orang bisa browsing dan download lebih kencang di jam istirahat kantor, maka settingan jam sangat mempengaruhi.

Ok, tanpa berlama-lama lagi, silahkan masuk ke Winbox router mikrotik anda :

1. Masuk ke menu : System > Clock. Atur Time Zone anda ke : Asia/Jakarta, apabila posisi anda saat ini berada di Indonesia



2. Masuk ke menu : System > SNTP Client (untuk routerOS versi 5 keatas), akan muncul tampilan seperti dibawah ini :


3. Pastikan service dalam keadaan berjalan dengan mengklik (centang) : ENABLED
4. Pilih modenya : unicast
5. Isikan untuk primary NTP Server, ip-nya : 205.196.146.72 dan untuk secondary NTP Server, ip-nya : 108.61.73.243
6. Klik OK

Selesai sudah. Sekarang, setiap kali router mikrotik anda dimatikan, anda tidak perlu kuatir untuk mensetting tanggal dan jam lagi karena begitu router mikrotik anda dinyalakan, tanggal dan jam akan secara otomatis teradjust. Selamat mencoba!

Monday, April 20, 2015

Install Windows 7/8 dari USB Flashdisk

Biasanya kalau kita hendak menginstall Windows OS 7 atau 8 pada laptop kosongan, kita langsung ambil keping DVD installer lalu kita masukkan pada optical drive laptop tersebut (baca : DVDROM Drive) kemudian langsung berlanjut ke proses instalasi.

Namun apa jadinya apabila laptop atau PC yang akan kita install tersebut tidak memiliki optical drive sehingga kita tidak dapat menginstall Windows 7/8 dengan menggunakan keping DVD ?

Jangan panik dan bingung, teknologi sudah semakin maju. Jika anda punya extra dana untuk membeli optical drive external (baca : DVDROM Drive Portable) maka proses instalasi dengan menggunakan kepingan DVD bisa berlanjut. Bagaimana bila dana terbatas ? Mudah saja, gunakan USB Flashdisk untuk menginstall Windows 7 / 8 :)

USB Flashdisk ? Serius ? Apa bisa ?

BISA ! Tapi ada syaratnya :

1. Sediakan USB flashdisk kosong dengan kapasitas minimal 4 GB
2. Pastikan laptop / PC yang akan anda install mensupport booting dari USB

Nah, setelah kedua persyaratan diatas terpenuhi, silahkan ikuti langkah-langkah berikut dibawah ini untuk membuat installer Windows 7 / 8 dari USB Flashdisk (langkah-langkah berikut dibawah ini dikerjakan di komputer yang memiliki optical drive dan sudah menggunakan Windows 7 / 8 sebagai Operating Systemnya ya) :

1. Siapkan DVD installer Windows 7 / 8 anda ke dalam DVDROM
2. Masukkan USB Flashdisk anda ke port USB
3. Buka : Command Prompt dalam mode Administrator
4. Jalankan program Disk Partition (pada command prompt ketikkan : DISKPART)
5. Identifikasi slot USB Flashdisk anda (ketik : LIST DISK)
6. Pilih disk tersebut dengan perintah : SELECT
7. Jalankan serangkaian perintah dibawah ini satu persatu untuk mempersiapkan USB Flashdisk tersebut :

  • CLEAN
  • CREATE PARTITION PRIMARY
  • SELECT PARTITION 1
  • ACTIVE
  • FORMAT FS=NTFS QUICK LABEL="Namaku"
  • ASSIGN
  • EXIT
8. Setelah anda keluar dari program DISKPART, maka USB Flashdisk anda sudah siap digunakan, namun USB Flashdisk tersebut belum bisa digunakan untuk booting. Untuk membuat USB Flashdisk tersebut bisa booting, kita memerlukan program DOS bernama : BOOTSECT.EXE. Program ini bisa anda temukan di dalam DVD installer Windows 7 / 8. Dalam contoh kasus saya, saya menggunakan DVD installer Windows 7, maka program BOOTSECT.EXE tersebut terletak di dalam folder BOOT.

9. Jalankan perintah ini : BOOTSECT.EXE /NT60 U: (Drive U adalah drive dimana USB Flashdisk anda terdeteksi pada saat kita mengetikkan perintah ASSIGN di step nomor 7 diatas, silahkan anda sesuaikan drive letternya dengan yang anda miliki)

10. Langkah terakhir, copykan SEMUA isi DVD installer ke USB Flashdisk. Selesai. USB Flashdisk anda sekarang sudah dapat digunakan untuk menginstall Windows 7 / 8. Silahkan boot laptop / PC anda dari USB Flashdisk yang sudah tercipta ini.

Selamat mencoba :)

Tuesday, March 31, 2015

Mikrotik Configuration Backup

Mengelola Mikrotik RouterOS dengan konfigurasi yang kompleks dan rumit akan membuat kita cukup kuatir dan pusing apabila perangkat tersebut tiba-tiba rusak dan kita harus mengulang kembali seluruh konfigurasinya.

Script berikut dapat kita gunakan untuk membackup semua konfigurasi yang ada di Mikrotik RouterOS :

/system backup save name=([/system identity get name] . "-" . [:pick [/system clock get date] 7 11] . [:pick [/system clock get date] 0 3] . [:pick [/system clock get date] 4 6]);
/tool e-mail send to="inbox@domainanda.com" subject=([/system identity get name] . " Backup " . [/system clock get date]) file=([/system identity get name] . "-" . [:pick [/system clock get date] 7 11] . [:pick [/system clock get date] 0 3] . [:pick [/system clock get date] 4 6] . ".backup");
:delay 20;
/file rem [/file find name=([/system identity get name] . "-" . [:pick [/system clock get date] 7 11] . [:pick [/system clock get date] 0 3] . [:pick [/system clock get date] 4 6] . ".backup")];
:log info ("System Backup emailed at " . [/sys cl get time] . " " . [/sys cl get date])

Tinggal dijalankan di Scheduler, maka anda akan menerima file hasil backup langsung ke e-mail anda

Sunday, March 29, 2015

Cari semua file .php dan .html dalam folder tertentu hingga subfolder-subfoldernya

Ok, jadi saya ingin mencari semua file yang berekstensikan .php dan .html di dalam folder X dan seluruh folder turunan dibawahnya, kemudian dari semua file .php dan .html yang sudah ditemukan ini, saya ingin supaya bisa diarchive ke dalam 1 file.

Apa perintah yang paling pas untuk keinginan saya diatas ?

Inilah perintahnya :

find ./someDir -name "*.php" -o -name "*.html" | tar -cf my_archive -T -

Tuesday, March 24, 2015

Auto Discovery Pada Aplikasi E-Mail

Pernahkah anda mengamati ketika hendak menambahkan sebuah account e-mail domain milik perusahaan anda aplikasi anda melakukan pencarian (auto-config-discovery) terhadap settingan e-mail server yang paling pas dan bisa dijalankan ?

Bagi yang belum tahu, proses tersebut ternyata mencari settingan yang ada di server web kita dan settingan ini tidak tercipta dengan sendirinya. Harus kita buat sendiri. Silahkan anda ikuti petunjuk yang saya jabarkan dibawah untuk membuat e-mail auto config discovery program aplikasi e-mail dapat dengan mudah menemukan settingan yang pas untuk e-mail server kita serta mempercepat waktu pencarian settingan ini.

1. Buat sebuah file dengan nama : config-v1.1.xml dengan isi sebagai berikut :


<clientConfig version="1.1">
<emailProvider id="domainanda.com">
<domain>domainanda.com</domain>
<displayName>MAIL SERVER DOMAINANDA.COM</displayName>
<displayShortName>MAIL</displayShortName>
<incomingServer type="pop3">
<hostname>mail.domainanda.com</hostname>
<port>995</port>
<socketType>SSL</socketType>
<username>%EMAILADDRESS%</username>
<authentication>password-cleartext</authentication>
</incomingServer>
<incomingServer type="imap"><hostname>mail.domainanda.com</hostname><port>993</port><socketType>SSL</socketType><username>%EMAILADDRESS%</username><authentication>password-cleartext</authentication></incomingServer><outgoingServer type="smtp"><hostname>mail.domainanda.com</hostname><port>465</port><socketType>SSL</socketType><username>%EMAILADDRESS%</username><authentication>password-cleartext</authentication></outgoingServer></emailProvider><webMail><loginPage url="http://mail.domainanda.com"/><loginPageInfo url="http://mail.domainanda.com/"><username>%EMAILADDRESS%</username><usernameField id="username"/><passwordField id="passwd"/><loginButton id=".save"/></loginPageInfo></webMail></clientConfig>

2. Simpan file tersebut di folder root html dari web server anda dengan mengikuti aturan path sebagai berikut : public_html/.well-known/autoconfig/mail (semisal web servernya adalah menggunakan Apache)

3. Selesai

Selamat mencoba

Monday, February 23, 2015

Langkah Aman Menghapus VirtFS pada cPanel Server

Langkah pertama yang harus anda lakukan adalah memastikan apakah account client anda masih menggunakan JailShell sebagai shell defaultnya.

# grep username /etc/passwd

Jika masih menggunakan JailShell, anda perlu menggantinya ke Bash atau shell yang lain. Cara mengganti ke shell Bash adalah sebagai berikut :


# usermod -s /bin/bash username
Sekarang, anda perlu cek apakah user tersebut menjalankan JailShell di dalam crontabnya :


# crontab -l -u username
Jika anda melihat ada baris seperti ini : SHELL="/usr/local/cpanel/bin/jailshell", maka anda perlu mengedit crontab user tersebut dan menghapus baris tersebut.


# crontab -e -u username
OK. Sekarang anda yakin bahwa user tersebut telah memiliki shell default yang baru dan di dalam cron jobs dia tidak akan ada lagi jobs yang dijalankan di dalam JailShell. Sebelum kita berlanjut ke tahapan berikutnya, anda perlu memastikan apakah user tersebut saat ini sudah login ke dalam JailShell dan masih login di dalamnya


# w | grep -i username
Jika anda melihat user tersebut masih login, maka anda perlu memberitahu user tersebut supaya segera logout atau jika permintaan anda diabaikan, anda dapat memaksa user tersebut untuk logout dari shell dengan menggunakan perintah ini :

# skill -KILL -t pts/###

Perhatikan bahwa ### harus diganti dengan nomor pts user yang bersangkutan

Sekarang, anda dapat melakukan unmount terhadap semua mount VirtFS yang aktif dengan menggunakan perintah berikut dibawah ini :



# /scripts/clear_orphaned_virtfs_mounts --clearall
Jangan kuatir, procedur unmount VirtFS bukanlah prosedur yang tidak bisa dikembalikan lagi. Jika user tersebut login kembali ke server dan masih terdapat JailShell sebagai shell default dia, atau jika cron job dia (dengan JailShell telah diset) dijalankan, maka JailShell akan secara otomatis melakukan mount ulang terhadap VirtFS. Inilah alasan sebenarnya kenapa anda mengikuti tahapan-tahapan yang telah saya kemukakan diatas sejauh ini.

Jika script cPanel bekerja dengan baik, maka VirtFS untuk user anda akan di-unmount. Periksa sekali lagi apakah sudah berhasil di-unmount dengan menggunakan perintah ini :


# grep -i username /proc/mounts

Jika perintah diatas tidak memunculkan hasil apa-apa, maka anda dapat melanjutkan ke tahapan akhir berikut dibawah ini. Perhatikan bahwa meskipun anda telah melakukan unmount terhadap VirtFS, masih ada beberapa file dan direktori di dalam /home/virtfs/username. Hal ini normal dan tidak menjadi masalah. Akan tetapi untuk memastikan bahwa tidak ada mount yang masih aktif maupun hardlink yang membandel dan masih terikat, maka kita bisa menggunakan perintah find dibawah ini :


# find /home/virtfs/username/ -type f -links +1 -ls

Dan yang kita harapkan setelah menjalankan perintah tersebut adalah tidak ada hasil apa-apa. Yang berarti sudah aman, tidak ada hard link yang masih terikat dengan salah satu file di dalam /home/virtfs/username tersebut. Maka langkah terakhir, anda dapat menghapus seluruh folder /home/virtfs/username dengan menggunakan perintah :

# rm -rfv /home/virtfs/username

 
 

Monday, February 2, 2015

cPanel/WHM Cron Job Tidak Tepat Waktu

Saya sudah lama mengelola server cPanel / WHM, namun baru kali ini server saya bertingkah "molor". Utamanya dalam hal ketepatan waktu eksekusi Cron Job. Sudah dijadwalkan untuk running jam 1 pagi misalnya, ternyata baru dijalankan jam 9 pagi. Bingung juga...

Setelah googling kesana kemari, ternyata saya baru tahu bahwa ada yang namanya hardware clock (perintah di linux : hwclock). Biasanya saya cuma tahu perintah di linux : date saja, yang juga akan sama-sama memunculkan jam sistem :)

Nah, saatnya hardware clock ini kita samakan. Berikut langkah-langkahnya :

1. Ketikkan perintah : hwclock --systohc
2. Restart service Cron Job : service crond restart

Selesai. Sekarang jadwal eksekusi cron job server cPanel / WHM saya sudah sesuai dengan jam yang saya tentukan. Selamat mencoba bagi rekan-rekan yang mengalami problem serupa :)

Welcome to my blog ...

Welcome and have a nice reading ...

Comments are welcome too :-)