Rabu, 22 April 2015

Install dan Konfigurasi Apache, MySQL, PHP di FreeBSD Server

Ketika ingin membuat webserver maka tentu kita membutuhkan aplikasi yang akan membuat server kita menjadi webserver. Nah, disini saya akan membahas untuk pembuatan webserver sederhana dengan package PHP, MySQL, dan Apache24. Berikut setup yang akan kita buat :

  1.     FreeBSD 10.1 amd64
  2.     Apache 24
  3.     PHP v5.6
  4.     MySQL v5.6
Pastikan bahwa ports yang kamu miliki sudah update. Kalau belum kita lakukan update terlebih dahulu

root@KotakRusak:# portsnap fetch update


Install Apache 24

root@KotakRusak:# cd /usr/ports/www/apache24 && make install clean


Bila terjadi error LDAP support maka yang harus kita lakukan adalah rebuild APR dengan LDAP Support seperti gambar berikut.

Reinstall APR dengan LDAP Support
Reinstall APR dengan LDAP Support




Running Apache24 service saat boot

Tambahkan atau running saja command berikut :

echo 'apache24_enable="YES"' >> /etc/rc.conf

Menjalankan/mematikan/restart Apache server

root@KotakRusak:# service apache24 start|stop|status|restart

Jika kamu mendapatkan pesan error seperti ini "Could not reliably determine the server's fully qualified domain name, using 127.0.0.1." Set the 'ServerName' directive globally to suppress this message:"

Tambahkan pada file /usr/local/etc/apache24/httpd.conf seperti berikut
Servername localhost

Adapun localhost digantikan dengan server domain name yang bisa didapatkan dengan menggunakan command

root@KotakRusak:#  hostname -f

Install MySQL Server

Instalasi MySQL Server lewat port :

root@KotakRusak:/ # cd /usr/ports/databases/mysql56-server/ && make install clean

Install MySQL client

Instalasi MySQL client lewat port :

root@KotakRusak:/ # cd /usr/ports/databases/mysql56-client/ && make install clean

Running MySQL service saat boot
 
Tambahkan atau running saja command berikut :

echo 'mysql_enable="YES"' >> /etc/rc.conf

Menjalankan/mematikan/restart MySQL Server

root@KotakRusak:# service mysql-server start|stop|status|restart

Konfigurasi MySQL server

Setelah berhasil instalasi MySQL adalah konfigurasi password untuk mysql itu sendiri karena default passwordnya adalah kosong.

root@KotakRusak: # mysql -u root

Jalankan sql query berikut setelah masuk kedalam mysql, ganti host_name menjadi server domain name yang bisa didapatkan melalui command hostname -f :

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('passwordnya');
mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('passwordnya');
mysql> quit
Bye

Setelah berhasil melakukan query maka selanjutnya adalah shutdown mysql server :
root@KotakRusak: # mysqladmin -u root -p shutdown

Masukkan password yang sudah dibuat melalaui query tadi bila ada prompt untuk memasukkan password.

Menjalankan kembali MySQL server
 
root@KotakRusak: # service mysql-server start
Untuk mengakses MySQL server 

root@KotakRusak: # mysql -u root -p

Masukkan password yang sudah dibuat sebelumnya melalui query.
Untuk lebih lanjut tentang akses user mysql bisa dibaca disini :
https://dev.mysql.com/doc/refman/5.1/en/grant.html
https://dev.mysql.com/doc/refman/5.1/en/adding-users.html



Install PHP

Instalasi melalui port :

root@KotakRusak: # cd /usr/ports/lang/php56
root@KotakRusak: # make config
Maka akan tampil pilihan konfigurasi yang bisa disesuaikan dengan kebutuhan kita sendiri.

root@KotakRusak: # make install clean

Install mod_php untuk Apache

Instalasi melalui port :

root@KotakRusak: # cd /usr/ports/www/mod_php56
root@KotakRusak: # make install clean 

Output :

Config mod_php
Config mod_php

Install PHP extensions
 
Agar PHP support untuk komunikasi MySQL atau MySQLi dengan MySQL server maka kita perlu melakukan instalasi php extension yang diperlukan

root@KotakRusak: # cd /usr/ports/lang/php56-extensions/
root@KotakRusak: # make config

MySQL dan MySQLi php extension
MySQL dan MySQLi php extension

Sesuaikan dengan kebutuhan masing-masing tapi karena disini kita menggunakan MySQL sebagai database server maka kita hanya menambahkan pilihan mysql dan mysqli dalam config. Bila sudah selesai konfigurasi maka tahap selanjutnya adalah instalasi extension phpnya.

root@KotakRusak: # make install clean

Konfigurasi mod_php
Untuk melakukan konfigurasi cukup melakukan command sebagai berikut :

root@KotakRusak: # cp /usr/local/etc/php.ini-development /usr/local/etc/php.ini 


Konfigurasi apachenya

root@KotakRusak: # nano /usr/local/etc/apache24/httpd.conf

Cari baris ini :

DirectoryIndex index.html

Ganti menjadi seperti ini:
 DirectoryIndex index.html index.htm index.php
Buat sebuah file /usr/local/etc/apache24/modules.d/001_mod_php.conf dengan isi sebagai berikut :

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
</FilesMatch>
Selanjutnya, restart Apache server

service apache24 restart

Test instalasi PHP dan Apache

Sekarang saatnya kita melakukan testing terhadap php dan apachenya apakah sudah berjalan ataukah tidak. Maka, untuk melakukan testing cukup buat sebuah file di /usr/local/www/apache24/data/test.php

// Isi file test.php
<?php
    phpinfo();
?>
Simpan dan kemudian test melalui browser http://localhost/test.php
Maka akan tampil seperti berikut :

PHP Info
PHP Info
Tutorial kali ini sangat panjang semoga bermanfaat.

Referensi :
- http://www.cyberciti.biz/faq/how-to-install-apache-mysql-php-stack-on-freebsd-unix-server/





Salam

Me a.k.a death voice

Rabu, 15 April 2015

Mounting Partisi NTFS dengan Write Mode di FreeBSD

Sebut sajalah kita memiliki Dual Boot OS yang dimana salah satunya adalah windows dan mempunyai partisi NTFS. Sedangkan, kita memakai FreeBSD dan ingin mengakses data yang ada di partisi windows karena ada alasan tertentu.

Maka, diperlukan mounting filesystem NTFS yang ada di hard drive external maupun internal agar bisa terbaca dan mempunyai hak write kedalam hard drive tersebut. Disini kita akan menggunakan fusefs-ntfs sebagai tool untuk melakukan mountingnya.

Langsung saja kita lakukan penginstalan dengan menggunakan ports yang ada di FreeBSD. Seperti berikut :

root@KotakRusak:/ # cd /usr/ports/sysutils/fusefs-ntfs/ && make install clean

Bila ada prompt pertanyaan silahkan disesuaikan dengan kebutuhan, saya disini hanya menggunakan pilihan default. Sudah selesai installnya?
Bila sudah, maka kita akan ketahap selanjutnya yaitu untuk cek partisi mana yang merupakan ntfs.

root@KotakRusak:/ # dmesg | grep da

Maka akan muncul seperti penggalan dibawah ini

ada0 at ahcich0 bus 0 scbus0 target 0 lun 0
ada0: <TOSHIBA MK6475GSX GT001A> ATA-8 SATA 2.x device
ada0: Serial Number 81MQD1T6B
ada0: 300.000MB/s transfers (SATA 2.x, UDMA5, PIO 8192bytes)
ada0: Command Queueing enabled
ada0: 610480MB (1250263728 512 byte sectors: 1H 63S/T 16383C)
ada0: Previously was known as ad4
Trying to mount root from ufs:/dev/da0s1a [rw]...
mountroot: waiting for device /dev/da0s1a ...
da0 at umass-sim1 bus 1 scbus4 target 0 lun 0
da0: <Generic- Multi-Card 1.00> Removable Direct Access SCSI-0 device
da0: Serial Number 20090516388200000
da0: 40.000MB/s transfers
da0: Attempt to query device size failed: NOT READY, Medium not present
da0: quirks=0x2<NO_6_BYTE>
Hard drive saya menggunakan merk toshiba jadi sudah ketahuan kalau partisi windows saya adalah /dev/ada0 . Kalau masih ragu, kita cek dengan

 root@KotakRusak:/ # gpart show ada0
=>        63  1250263665  ada0  MBR  (596G)
          63        1985        - free -  (993K)
        2048      204800     1  ntfs  [active]  (100M)
      206848  1250054144     2  ntfs  (596G)
  1250260992        2736        - free -  (1.3M)

Nah sudah jelas bukan kalau partisi windows nya ada di /dev/ada0 . Selanjutnya, kita enable terlebih dahulu fuse modulenya dengan cara berikut

root@KotakRusak:/ # kldload fuse

Lalu, tambahkan pada file /etc/rc.conf seperti berikut

fusefs_enable="YES"
Sebelum dilakukan mounting, kita cek terlebih dahulu partisi apa saja yang sudah di mount

root@KotakRusak:/ # mount

/dev/da1s1 on / (ufs, local, journaled soft-updates)

devfs on /dev (devfs, local, multilabel)

procfs on /proc (procfs, local)

linprocfs on /usr/compat/linux/proc (linprocfs, local)

Kita buat terlebih dahulu folder nya di /mnt/

mkdir /mnt/ntfs

Kita sudah tahu bahwa ad0s2 adalah partisi ntfsnya, bisa dilihat kembali bagian yang saya bold. Tahap selanjutnya adalah proses mounting.

ntfs-3g /dev/ada0s2 /mnt/ntfs


Cek apakah berhasil mounting ataukah tidak dengan command mount seperti gambar berikut

Check partisi dengan mount
Check partisi dengan mount
Maka, ketika mengecek dengan command df-h akan menghasilkan output seperti gambar berikut

Hasil dari Command df -h
Hasil dari Command df -h



Tahap selanjutnya adalah membuat partisi ntfs tadi auto mounting ketika sistem startup atau booting dengan menambahkan pada /ets/fstab

 /dev/ada0s2 /mnt/ntfs ntfs-3g rw,mountprog=/usr/local/bin/ntfs-3g,late 0 0
Kemudian jalankan command berikut

root@KotakRusak:/ # echo "fuse_load=\"YES\"" >> /boot/loader.conf 


Referensi :

- https://forums.freenas.org/index.php?threads/mount-t-ntfs-error.15035/
- https://forums.freebsd.org/threads/ntfs-external-harddrive-mounting-trouble.15961/
- http://linux-bsd-sharing.blogspot.com/2012/01/howto-mounting-ntfs-partition-in-write.html


Sekian tutorial kali ini semoga bermanfaat

Salam

Me a.k.a death voice

Senin, 13 April 2015

Membuat PHP Script versi Command Line Interface

Lama juga ya ga update diblog ini, terakhir kali sih janjinya bakal update terus tapi apalah daya karena ada hal lain di real life yang harus diprioritaskan jadinya sampe lupa untuk isi konten blog. Terakhir post di blog ini 5/20/2014 bahas masalah Fix libfreetype.so.9 Not found in FreeBSD 10 
Untuk memulainya, mau coba postingan sederhana dengan judul Membuat PHP script versi Command Line Interface. Kenapa harus menggunakan CLI? Karena terkadang kita ingin membuat aplikasi layaknya CLI Application seperti C++,Perl dsb yang tak perlu repot-repot membuka browser untuk menjalankannya. Berikut adalah contoh sederhana PHP CLI yang akan menampilkan inputan dari user.
<?php

$argument1 = $argv[1];
$argument2 = $argv[2];

echo "Isi dari Argument 1 : " . $argument1 ."\n";
echo "Isi dari Argument 2 : " . $argument2 ."\n";


?>

Setelah dieksekusi scriptnya
C:\xampp\htdocs\CLI>php cli.php tutorial 123456
Isi dari Argument 1 : tutorial
Isi dari Argument 2 : 123456

Mengambil inputan dari user layaknya STDIN di C++
<?php
echo "Are you sure you want to do this?  Type 'yes' to continue: ";
$handle = fopen ("php://stdin","r");
$line = fgets($handle);
if(trim($line) != 'yes'){
    echo "ABORTING!\n";
    exit;
}
echo "\n";
echo "Thank you, continuing...\n";
??>

Script PHP diatas akan meminta user untuk menginputkan kata yes untuk melanjutkan eksekusi script. Mungkin sekian untuk postingan ini, semoga bermanfaat.
Referensi : 
1. http://php.net/manual/en/reserved.variables.argv.php 
2. http://php.net/manual/en/features.commandline.php#94924 
Salam, 
 Me a.k.a death voice