Category Archives: FreeBSD

Konfigurasi DHCP Server pada FreeBSD

# cd /usr/port/net/isc-dhcp42-server
# make config
# make install clean
# cd /usr/local/etc/
# vi dhcpd.conf
option domain-name "domain.name";
# IP atau domain name dns server
option domain-name-servers 167.205.23.1, 167.205.22.123;
# subnet jaringan
option subnet-mask 255.255.255.128;
 
subnet 167.205.70.0 netmask 255.255.255.0 { # Network address dan subnet untuk konfigurasi sederhana
}
subnet 167.205.70.0 netmask 255.255.255.128 {   # Network address dan subnet
  range 167.205.70.90 167.205.70.100; # range IP yang digunakan untuk DHCP
  option routers 167.205.70.1; # IP router pada jaringan
}

Chmod Recursive pada File dan Direktori

Sumber: http://movabletripe.com/archive/recursively-chmod-directories-only/

Kadang kala, kita hanya ingin menjalankan perintah chmod pada direktori saja atau file saja. Pekerjaan seperti ini bisa dilakukan dengan menggunakan bantuan perintah find.
Untuk mengubah chmod direktori saja, gunakan perintah di bawah ini.

find . -type d -exec chmod 755 {} \;

Untuk mengubah chmod file saja, gunakan perintah seperti di bawah ini.

find . -type f -exec chmod 644 {} \;

Kamu bisa saja mengganti perintah di atas dengan perintah yang lain sesuai dengan kebutuhan kerja.

Mempersiapkan Image ISO FreeBSD ke USB Flashdisk

Sumber : http://forums.freebsd.org/showthread.php?t=11715

Tulisan ini sengaja ditulis ulang agar saya memiliki dokumentasinya saja :D. Sumber asli bisa kamu lihat pada tautan yang saya sebutkan di atas. Langkah yang harus kita lakukan adalah mengunduh file ISO FreeBSD dari ftp dan memasukkannya ke dalam direktori /usr. Lalu jangan lupa salin ulang script berikut:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/sh
# Purpose = Use to transfer the FreeBSD install disc1.iso files to 
# a bootable USB stick drive so it can be used to install from. 
# First fetch the FreeBSD 8.0-RELEASE-i386-disc1.iso to your
# hard drive /usr. Then execute this script from the command line
# fbsdiso2usb 
 
# NOTE: This script has to be run from root and your USB stick drive
# has to be plugged in before running this script. 
 
echo ' '
echo '****** Prepare disc1.iso for usage'
echo ' '
cd /usr
mkdir dis
mdconfig -a -f /usr/8.0-RELEASE-i386-disc1.iso md0
mount -v -t cd9660 /dev/md0 /usr/dis
echo ' '
echo '****** Prepare target usb stick'
echo ' '
dd if=/dev/zero of=/dev/da0 count=2
fdisk -vBI /dev/da0
bsdlabel -B -w da0s1
newfs -O 1 /dev/da0s1a
mount -v /dev/da0s1a /mnt
echo ' '
echo ' '
echo '****** Copy all the disc1.iso files onto the usb stick'
cd /usr/dis
find . -print -depth | cpio -dump /mnt
echo ' '
echo 'Finished do clean up now'
cd /usr
umount -v /mnt
umount -v /usr/dis
mdconfig -d -u md0
rmdir dis 
echo ' '
echo ' '
echo "### Script finished ###"

Simpan file di atas dengan nama install_to_usb.sh di direktori apapun. Sebelum anda memulai instalasi, pastikan hal-hal berikut sudah benar:

  • Nama file ISO dalam direktori anda sudah sama dengan nama file di dalam script (pada kasus di atas nama file adalah /usr/8.0-RELEASE-i386-disc1.iso)
  • Anda bekerja sebagai root
  • Flashdisk sudah dimasukkan ke dalam server
  • Jangan lupa bahwa tutorial ini hanya bisa dilakukan di server FreeBSD, bukan di Linux, apalagi di Windows 😆

Lalu jalankan perintah :

# sh install_to_usb.sh

Tunggu proses yang sedang berjalan. Jika sudah selesai, kamu bisa menggunakan flashdisk tersebut untuk instalasi FreeBSD di sebuah server. Langkah-langkah instalasi tersebut tidak akan saya berikan di dalam artikel ini. Sebagai info, ketika saya melakukan instalasi lewat USB Flashdisk, saya sangat kesulitan dalam proses instalasi. Saya lebih memilih source instalasi dari FTP dibandingkan lewat USB Flashsdisk. Lebih sederhananya: file instalasi agar bisa booting dilakukan lewat flashdisk, namun source file yang dicopy ke server diambil lewat ftp.

Reset Password Root MySQL pada FreeBSD

Tips mengganti password root MySQL yang terlupa pada OS FreeBSD :

Matikan proses mysql:

root# /usr/local/etc/rc.d/mysql-server onestop

Hidupkan mysql tanpa pengecekan table-table pada DBMS Mysql:

root# mysqld_safe --skip-grant-tables &

Masuk ke mysql sebagai root tanpa menggunakan password. Ini bisa dilakukan setelah menjalankan mysql dengan opsi –skip-grant-tables di atas. Ganti password dengan menggunakan perintah sql di bawah.

root# mysql -u root
mysql> use mysql; [Enter]
Database changed
 
mysql> update user set Password=PASSWORD('password baru') where user='root'; [Enter]
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0
 
mysql> flush privileges; [Enter]
Query OK, 0 rows affected (0.00 sec)
 
mysql> quit [Enter]
Bye

Matikan kembali proses Mysql:

root# /usr/local/etc/rc.d/mysql-server onestop

Jalankan kembali mysql seperti cara biasanya:

root# mysqld_safe &

Sekarang coba masuk ke mysql dengan menggunakan pasword yang sudah diganti tadi 🙂

suPHP untuk Server Multidomain

Server dengan multidomain sering digunakan pada usaha-usaha hosting atau bisa saja untuk perusahaan skala kecil untuk menyimpan data-data mereka. Maksud dari multidomain di sini adalah sebuah server dengan 1 IP bisa digunakan untuk menyimpan banyak web dengan domainnya masing-masing di dalamnya. Isitilah yang digunakan oleh Apache untuk menggambarkan multidomain ini adalah dengan virtual host.

Kadang kala, dalam menggunakan multidomain, kita ingin agar setiap direktori web dikelola secara mandiri oleh user yang bertanggung jawab pada web mereka. Oleh karena itu, kita harus membuat user untuk tiap direktori web. Misalnya saja domain unit.itb.ac.id akan memiliki user unit dan domain ubg.unit.itb.ac.id akan memiliki user ubg, demikian juga dengan domain-domain lainnya. Hal ini kita lakukan demi alasan keamanan. Defaultnya, jika pengelolaan dilakukan terpusat oleh seorang admin, maka kita cukup membuat direktori-direktori tersebut dimiliki oleh user www,yaitu user yang menjalankan service apache. Namun jika masing-masing dikelola terpisah, kita membuat user masing-masing agar user yang satu tidak bisa melihat apalagi mengedit file-file direktori web lainnya.

Masalah yang sering terjadi ketika kita membuat user-user tersebut dalam tiap direktori, mereka akan kesulitan dalam mengupload file dan sering mengeluarkan pesan error : access denied for upload. Hal ini terjadi karena user-user tersebut bukanlah bagian group dari www. Kita bisa saja membuat mode 777 pada direktori-direktori tersebut, namun ini sangat tidak disarankan karena sangat berbahaya.

Untuk mengatasi hal ini, kita menggunakan suPHP, sebagai tool yang membantu apache. suPHP mirip dengan suexec dalam default apache, namun suexec sangat lambat dibandingkan dengan suPHP. suPHP bertugas agar file-file yang dijalankan oleh apache dieksekusi menggunakan user yang memiliki file tersebut. Misalnya saja, file index.php dalam domain unit.itb.ac.id dimiliki oleh user unit, maka ketika browser meminta file index.php, maka index.php akan dijalankan dengan menggunakan user itu sendiri, yaitu user unit, bukan lagi dengan user www.

Untuk menginstall suPHP, ikuti langkah-langkah berikut ini (FreeBSD):

root# cd /usr/ports/www/suphp
root# make install clean
root# cd /usr/local/etc/
root# cp suphp.conf-example suphp.conf
root# vim suphp.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
[global]
;Path to logfile
logfile=/var/log/suphp.log
 
;Loglevel
loglevel=info
 
;User Apache is running as
webserver_user=www
 
;Path all scripts have to be in
docroot=/usr/local/www
 
;Path to chroot() to before executing script
;chroot=/mychroot
 
; Security options
allow_file_group_writeable=false
allow_file_others_writeable=false
allow_directory_group_writeable=false
allow_directory_others_writeable=false
 
;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true
 
;Send minor error messages to browser
errors_to_browser=false
 
;PATH environment variable
env_path=/bin:/usr/bin
 
;Umask to set, specify in octal notation
;umask=0077
umask=0022
 
; Minimum UID
min_uid=80
 
; Minimum GID
min_gid=80
 
 
[handlers]
;Handler for php-scripts
application/x-httpd-php="php:/usr/local/bin/php-cgi"
 
;Handler for CGI-scripts
x-suphp-cgi="execute:!self"
root# cd /usr/local/etc/apache22/
root# vim httpd.conf
#################
# suPHP
#################
# Tambahkan baris di bawah ini pada file httpd.conf
 
suPHP_Engine on
suPHP_AddHandler application/x-httpd-php .php

Cari file di bawah ini lalu nonaktifkan dengan memberi tanda komentar:

#LoadModule php5_module        libexec/apache22/libphp5.so

Setelah itu tambahkan baris seperti di bawah ini:

LoadModule suphp_module        libexec/apache22/mod_suphp.so

Hasil akhirnya :

#LoadModule php5_module        libexec/apache22/libphp5.so
LoadModule suphp_module        libexec/apache22/mod_suphp.so

Di sini, kita tidak lagi menggunakan modul php dan digantikan dengan modul suPHP.

root# apachectl restart
root# cd /usr/home/local/www/unit/
root# chown -R ubg:ubg ubg/
root# cd  ubg

Perintah di bawah ini digunakan untuk mengubah semua direktori menjadi 755

root# find . -type -d -exec chmod 755 {}\;
root# find . -type -f -exec chmod 644 {}\;
root# cd .. ; ls -l
drwxr-xr-x  4 ubg     ubg     512 Jan 31 12:06 ubg/

Sekarang, coba lihat web tersebut dari browser, pastikan bahwa web tersebut bisa diakses dengan baik. Masalah yang sering terjadi adalah pesan 503 (Error 503 Service unavailable! : 503, error, service, unavailable). Hal ini terjadi karena direktori web tersebut belum memiliki user tertentu atau mungkin saja masih dimiliki oleh root. Segera tambahkan user dan berikan perintah chown pada direktori tersebut.
Untuk web-web tertentu, kamu masih bisa menggunakan user www pada direktori tersebut.

Mengubah Letak Direktori Data MySQL (FreeBSD)

Beberapa hari ini, saya menghadapi kasus kecil pada MySQL (FreeBSD) ketika saya migrasi server di kampus. Saya harus memindahkan data-data dari server lama ke server baru. Saya mempunyai server dengan kapasitas data MySQL yang melebihi ukuran 2 GB. Pada umumnya, data-data di MySQL akan disimpan dalam berntuk *.frm dan secara default data ini akan disimpan di /var/db/mysql

Ketika saya periksa, ukuran /var kurang lebih 2 GB. Setiap kali ada penambahan data baru, pasti akan muncul error kalau /var sudah penuh dan tidak bisa ditulis lagi.

Ada 3 solusi untuk masalah ini. Pertama adalah menginstall ulang OS servernya. Pilihan ini masih bisa dilakukan berhubung karena ini adalah server yang baru saja dipasang. Pilihan kedua adalah menambah besarnya ukuran /var. Pilihan ketiga adalah mengubah letak direktori data default untuk MySQL.

Pilihan pertama tidak jadi dilakukan dengan alasan waktu yang sudah mepet dan pilihan 2 tidak dilakukan dengan alasan akan memecah-mecah direktori tempat data disimpan. Akhirnya saya memutuskan untuk mengubah letak direktori data MySQL.

Pada contoh kali ini, konfigurasi MySQL my.cnf berada pada /usr/local/etc/my.cnf dan saya akan mengubah direktori data dari /var/db/mysql ke /usr/var/mysql. Masuk sebagai root untuk memperlancar proses pekerjaan kita.

Matikan proses mysql :

root# /usr/local/etc/rc.d/mysql-server stop

Masuk ke /usr :

root# cd /usr

Buat direktori var :

root# mkdir var

Masuk ke var :

root# cd var

Buat direktori mysql :

root# mkdir mysql

Salin semua data pada direktori lama ke direktori baru:

root# cp -R /var/db/mysql /usr/var/mysql

Lalu masuk ke /usr/var :

root# cd /usr/var

Ubah kepemilikan direktori mysql

root# chown -R mysql:wheel mysql

Masuk ke /usr/local/etc (atau tempat lain untuk file my.cnf) :

root# cd /usr/local/etc

Edit file my.cnf

root# vim my.cnf

Tambahkan baris seperti di bawah ini:

datadir = /usr/var/mysql
bdb_tmpdir = /usr/var/tmp
slave_load_tmpdir = /usr/var/tmp
tmpdir = /usr/var/tmp

Lalu jalankan kembali mysql dengan perintah

root# mysqld_safe &

Ketika teman-teman masuk ke phpmyadmin dan melihat informasi pada bagian variabel, maka teman-teman akan melihat bahwa datadir telah berganti ke /usr/var/mysql dan variabel penting lainnya sudah berubah ke direktori yang sesuai.

Yang terakhir adalah mengubah variabel dalam file /usr/local/etc/rc.d/mysql-server agar ketika kamu ingin me-restart mysql nya, teman-teman tidak mengalami eror. Cari baris di bawah ini :

: ${mysql_dbdir="/var/db/mysql"}

dan ganti menjadi:

: ${mysql_dbdir="/usr/var/mysql"}

Data MySQL akan disimpan pada direktori yang kita buat yang notabene lebih besar ukurannya dibanding dengan ukuran /var 🙂

Install Vsftpd pada FreeBsd

Vfsftpd adalah sebuah mesin server untuk menangani transfer file melalui  ftp. Situs utamanya ada di http://vsftpd.beasts.org/

Saya akan memberikan cara menginstall vsftpd lewat port.

a. Masuk ke directory vsftpd

root# cd /ur/ports/ftp/vsftpd

b. Atur konfigurasi awal lalu install

root# make config; make install clean

Untuk menjalankanvsftpd, jalankan dengan perintah

root# /usr/local/libexec/vsftpd &

Sekarang buka ftp anda lewat browser atau ftp client yang teman-teman punya.ftp://1.2.3.4 -> IP server

Direktori root ftp ada pada /var/ftp. Silahkan mengisi direktori ini untuk menyimpan file pada ftp.

Error /etc/rc.conf: Syntax error: Unterminated quoted string pada Freebsd

Hari ini saya nginstall ulang freebsd yang ada pada laptop saya. Kemaren pas lagi  mau ngoprek squirrel, web server nya bermasalah, terpaksa harus install ulang.

Nah, setelah selesai install ulang Freebsd nya, saya edit file konfigurasi rc.conf agar bisa ssh, lalu saya reboot. Pada saat akan masuk, malah keluar kata-kata error yang isinya kira-kira begini “/etc/rc.conf: Syntax eror: Unterminated quoted string”. Pesan error tersebut mengatakan bahwa ada error pada file /etc/rc.conf akibat tidak adanya string penutup pada syntax tersebut. Lalu kita disuruh agar masuk melalui bash sh.

Nah, masalahnya adalah kita ga bisa mengedit file rc.conf tersebut karena kita tidak bisa menggunakan ee atau vim. Lalu bagaimana kita harus mengeditnya? Setelah cari-cari di internet, kita disarankan untuk me-mount semua file yang perlu dengan cara mengetik perintah:

root# fsck
root# mount -a

Setelah itu kita baru bisa mengedit file rc.conf dan menambah string kutip penutup pada syntax tersebut.