วันพุธที่ 19 กันยายน พ.ศ. 2550

บันทึกการติดตั้ง Bind9 บน OpenBSD

วันนี้ไปจดโดเมนมาชื่อนึงครับ กะจะใช้มันทำโปรเจ็คจบซะหน่อย ได้ใช่ obsdcontrol.org มา อิอิ ก็จ่ายไป 300 ครับ แล้วอามาใส่บน server openbsd 4.1 ครั้งแรกก็ไปอ่านการ config จากเว็บ http://www.kernel-panic.it/openbsd/dns/ ดูเข้าไปดูแล้วหลักการก็ไม่ค่อยจะแตกต่างกับ linux เท่าไหร่เพราะใช้ bind9 เหมือนกัน

มาทำกันเลยดีกว่าครับ

openbsd ได้ติดตั้ง bind9 มาให้เราใช้งานอยู่แล้ว

1. หากต้องการให้ bind9 start เมื่อเริ่มต้นระบบ(boot)ให้แก้ไฟล์ /etc/rc.conf โดยเปลี่ยนค่าดังนี้

named = NO

เป็น

named = ""

2. ไฟล์ config ของ bind9 อยู่ที่ /var/named/ โดยที่ named.conf จะอยู่ที่ /var/named/etc/named.conf และไฟล์ zone ต่างๆ จะอยู่ที่ /var/named/master และก็ /var/named/slave ในที่นี้จะพูดถึงเฉพาะ master zone น่ะครับ

ตัวอย่างไฟล์ /var/named/etc/named.conf

options {
directory "/";
forwarders {
202.41.190.251;
202.41.171.6;
202.41.160.188;
};
};

key "rndc-key" {
algorithm hmac-md5;
secret "836nkuIfK3s4ZHmQ3BJzT2BoGZCeQCEVefmjXw7saFxRGe76pLNcfXxzE6Ji";
};

zone "obsdcontrol.org" {
type master;
allow-query { any; };
file "master/obsdcontrol.org";
};

zone "164.41.202.in-addr.arpa" {
type master;
allow-query { any; };
file "master/db.202.41.164";
};

ตัวอย่างไฟล์ /var/named/etc/rndc.conf ไฟล์นี้เราต้องสร้างขึ้นมาเองน่ะครับ

options {
default-server localhost;
default-port 953;
default-key "rndc-key";
};

server localhost {
key "rndc-key";
};

key "rndc-key" {
algorithm hmac-md5;
secret "836nkuIfK3s4ZHmQ3BJzT2BoGZCeQCEVefmjXw7saFxRGe76pLNcfXxzE6Ji";
};

ตัวอย่างไฟล์ /var/named/master/obsdcontrol.org ไฟล์นี้เราต้องสร้างขึ้นมาเองน่ะครับ

$TTL 3h
@ IN SOA ns1.obsdcontrol.org. root.obsdcontrol.org. (
2007020601 ; serial
3h ; refresh after 3 hours
1h ; retry after 1 hour
1w ; expire after 1 week
1h ) ; negative caching TTL of 1 hour

obsdcontrol.org. IN NS ns1.obsdcontrol.org.
obsdcontrol.org. IN NS ns2.obsdcontrol.org.

obsdcontrol.org. IN A 202.41.164.195

ftp IN A 202.41.164.195
mail IN A 202.41.164.195
www IN A 202.41.164.195

obsdcontrol.org. IN MX 10 mail

obsdcontrol.org. IN TXT "v=spf1 a mx ip4:202.41.164.195 ?all"

ตัวอย่างไฟล์ /var/named/master/db.202.41.164 ไฟล์นี้เราต้องสร้างขึ้นมาเองน่ะครับ

$TTL 3h

@ IN SOA ns1.obsdcontrol.org. root.obsdcontrol.org. (
2007020601 ; serial
3h ; refresh after 3 hours
1h ; retry after 1 hour
1w ; expire after 1 week
1h ) ; negative caching TTL of 1 hour

IN NS ns1.obsdcontrol.org.
IN NS ns2.obsdcontrol.org.

195 IN PTR mail.obsdcontrol.org.
195 IN PTR www.obsdcontrol.org.
195 IN PTR ftp.obsdcontrol.org.

3. การ start named โดยไม่ต้อง reboot เครื่องทำได้โดยสั่ง

named -g &

วันพุธที่ 5 กันยายน พ.ศ. 2550

1 วันเต็มๆ กับ Ubuntu 7.10 Gutsy Gibbon Tribe 5

วันนี้ผมนึกสนุกขึ้นมาครับ ผมลบ Feisty ออกแล้วลง Gutsy แทนแต่มันไม่สนุกอย่างนั้นสิครับผมใช้ Notebook Acer Spire 1640 ใช้ Sound Card ของ Intel
ที่ว่าไม่สนุกน่ะเหรอครับ ก็เพราะพอผมลง ubuntu เสร็จแล้วเสียงไม่ดังสักกะแอะ ไม่มีเสียงอะไรเลยทั้งๆ ที่เครื่องมันเจอ sound card และก็มี driver ทุกอย่างมีปุ่ม volume ให้ปรับเปิดปิดได้เช็คดูว่า mute ไว้หรือเปล่าก็ไม่ได้ mute แต่ที่ติดใจอยู่ก็คือมัน
ทำไมเครื่องเรามันไม่มี /etc/init.d/alsasound หว่า
ก็เลยพยายามทำให้มันดังอยู่ทั้งวัน

ได้ผลสรุปมาว่าต้อง compile driver กันใหม่มาทำกันเลยครับ

ติดตั้ง packages พื้นฐานสำหรับการ compile

$sudo apt-get install build-essential ncurses-dev gettext
$sudo apt-get install linux-headers-`uname -r`

หยุดการทำงานของ service alsa-utiles

$sudo /etc/init.d/alsa-utils stop

สร้างโฟล์เดอร์สำหรับเก็บ source
$cd ~
$mkdir alsa-src
$cd alsa-src

ดาวน์โหลด source alsa

$wget ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.14rc4.tar.bz2
$wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.14rc4.tar.bz2
$wget ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.14rc4.tar.bz2

คลายการบีบอัด
$tar xvf alsa-driver-1.0.14rc4.tar.bz2
$tar xvf alsa-lib-1.0.14rc4.tar.bz2
$tar xvf alsa-utils-1.0.14rc4.tar.bz2

ดาวน์โหลด patch สำหรับ realtek

$wget http://lenovo.dropshock.com/files/realtek6.tar.gz
$tar xvf realtek6.tar.gz
$cp patch_realtek.c ~/alsa-src/alsa-driver-1.0.14rc4/alsa-kernel/pci/hda/

คอมไพล์ alsa-driver

$cd alsa-driver-1.0.14rc4
$./configure --with-cards=hda-intel
$make
$sudo make install

คอมไพล์ alsa-lib

$cd ../alsa-lib-1.0.14rc4
$./configure
$make
$sudo make install

คอมไพล์ alsa-utils

$cd ../alsa-utils-1.0.14rc4
$./configure
$make
$sudo make install

ตอนนี้จะได้ service alsasound มาแล้วครับ ให้ stop alsa-utils กับ alsasound

$sudo /etc/init.d/alsa-utils stop
$sudo /etc/init.d/alsasound stop

$sudo modprobe -r snd-hda-intel && sudo modprobe snd-hda-intel

เริ่มการทำงานใหม่ของ asla service

$sudo /etc/init.d/alsa-utils start
$sudo /etc/init.d/alsasound start

ลอง reboot สักนึงรอบน่ะครับ
หลังจากที่ผมเปิดเครื่องได้ลองเปิดหนังกับโปรแกรม VLC ในที่สุด Notebook ผมก็หายจากอาการเป็นไบ้
สำหรับเพื่อนๆ ที่เจอปัญหาเดียวกับผมก็ลองเอาไปประยุกต์ใช้กันดูน่ะครับ

วันอังคารที่ 28 สิงหาคม พ.ศ. 2550

สคริปส์สำหรับเพิ่ม Font thai ให้ Ubuntu

หลายๆ คนที่ใช้ Open Office และต้องการใช้ฟอนท์ Angsana New UPC, Cordia New UPC แต่ไม่รู้ว่าจะติดตั้งฟอนท์เหล่านั้นยังไง วันนี้ผมเอาสคริปส์สั้นๆ แต่รับรองคุณภาพมาฝากครับ

โดยฟอนส์ที่รวบรวมอยู่ในสคริปส์นี้มี

Angsana New UPC

Cordia New UPC

Tahoma

Microsoft Sans Serif

ขั้นตอน
1. ดาวน์โหลดสคริปส์ thfont.sh <- ได้จากที่นี่
2. สั้ง run script
$chmod +x thfont.sh
$sudo ./thfont.sh

เป็นอันเสร็จพิธี เข้าโปรแกรม Writer ของ Open Office ก็จะฟอนท์ Angsana New ให้เราใช้แล้วละครับ

สำหรับคนที่ใช้ Firefox และ aMSN ก็ลองปรับเปลี่ยนฟอนท์ดูน่ะครับจะมี Tahoma และ Microsoft Sans Serif ให้ได้ใช้เช่นกัน

aMSN ทางเลือกใหม่สำหรับคนรัก MSN

สำหรับคนรัก MSN เป็นชีวิตจิตใจอย่างผม เพื่อนผมหลายคนเคยติดตั้ง amsn แล้วไม่คอยสบอารมณ์กับภาษาไทยของมันเท่าไหร่ เมื่อคืนเพิ่งลง Gutsy Gibbon ไปครับรู้สึกว่าเล่น Pidgin มันไม่ค่อยมันมือเหมือน amsn เลยหาวิธีลงก็เพิ่งได้เมื่อไม่กี่ชั่วโมงนี้เอง ตอนแรกก็ลง

$sudo apt-get install amsn

แล้วเจอปัญหาภาษาไทยไม่ค่อย Work เลยหาวิธีทำให้มันใช้ภาษาไทยได้อย่างสมบูรณ์ Search google แล้ว Search อีก สุดท้ายเข้าเว็ป http://ubuntuforums.org แล้ว Search คำว่า amsn เท่านั้นแหละครับเจอของดีเข้าให้เลยครับ

เป็น shell script สำหรับติดตั้ง amsn ลองๆ อ่านที่เค้าเขียนไว้ดูน่ะครับ
Automatic Script for Anti-Aliasing aMSN


This is a fully automated script to add anti-aliasing support to aMSN. This will compile the latest beta of Tcl and Tk and recompile the latest stable aMSN
release for it. This will NOT replace your existing Tcl/Tk
installation, so this method is much safer to use and easier to revert
than other non-compilation methods. This script works on Edgy, Feisty
and Gutsy, and works on both 32-bit and 64-bit processors.

ขั้นตอนวิธีติดตั้งก็มีดังนี้ครับ

แนะนำว่าให้ลบ amsn ที่มีเติมอยู่ออกก่อนน่ะครับ

$sudo apt-get autoremove amsn

ดาวน์โหลด fixamsn.sh <- ได้จากที่นี่

แตกไฟล์ด้วยคำสั่ง tar

$tar zxvf fixamsn.tar.gz

จากนั้น run shell script fixamsn.sh

$bash fixamsn.sh



รอสักไม่เกิน 10 นาทีก็จะได้ aMSN ที่สามารถใช้ภาษาไทยมาแชทกับเพื่อนแล้วละครับ

Refer : http://ubuntuforums.org/showthread.php?t=297676&highlight=amsn

วันพฤหัสบดีที่ 16 สิงหาคม พ.ศ. 2550

/var/log/messages fills with loopback

ไม่รู้ใครเป็นอย่างผมบ้างหรือเปล่าน่ะครับ ตั้งแต่ผม update snmpd บน server ของคณะทำให้มี log ซึ่งมีข้อความว่า

Aug 16 07:35:02 eng snmpd[16274]: Connection from - 127.0.0.1
Aug 16 07:35:02 eng snmpd[16274]: transport socket = 12
Aug 16 07:35:02 eng snmpd[16274]: Connection from - 127.0.0.1
Aug 16 07:35:02 eng snmpd[16274]: transport socket = 12
Aug 16 07:35:02 eng snmpd[16274]: Connection from - 127.0.0.1
Aug 16 07:35:02 eng snmpd[16274]: transport socket = 12

เข้ามาอยู่ใน /var/log/messages
ทุกๆ 5 นาที ที่ mrtg ทำงานทำให้ log ใหญ่เร็วมาก
ตอนนี้ผมใช้ net-snmp-5.1.2-11.EL4.10 บน CentOS 4.5 ก็พยายามหาทางที่จะไม่ให้มันเก็บเพราะเยอะจริงๆ เวลา monitor log ใน /var/log/messages ก็จะเจอแต่บรรทัดเหล่านี้ ข้อมูลสำคัญๆ นี่หายไปหมด ทนไม่ไหวจึงถามพี่ google ได้ความมาว่าให้แก้ไฟล์

/etc/init.d/snmpd ตรงบรรทัดต่อไปนี้

OPTIONS="-Lsd -Lf /dev/null -p /var/run/snmpd -a"

ให้แก้เป็น

OPTIONS="-LS 4 d -p /var/run/snmpd -a"

ได้ผลทันตาครับแก้แล้ว restart snmpd ผลคือไอ้บรรทัดที่รำคาญลูกกะตาหายไปอย่างไม่น่าเชื่อ
ใครเจอปัญหาแบบผมก็ลองเอาไปใช้กันดูน่ะครับ

วันอังคารที่ 17 กรกฎาคม พ.ศ. 2550

วิธีเปลี่ยน Registered owner name บน Windows XP

เนื่องด้วย Windows XP บน Notebook ผมเดี้ยงไปครับ เลยไปโหลดแ่ผ่น Windows มาจาก Bittorrent ก็ได้แผ่นพันทิพย์มาลงทิ้งไว้ไม่ต้องทำอะไรเลยแป๊ปเดียวเสร็จมันทำเองให้หมดทุกขั้นตอน(ตอนลงเผลอหลับไปนิดนึง ตื่นมาเสร็จหมดแล้ว) แต่มีปัญหาอยู่นิดนึงครับคือ Register Owner Name ดันเป็นชื่อคนทำแผ่นก็อยากจะเปลี่ยนให้เป็นชื่อของเราก็ Search ไปมา จนเจอวิธีครับ เลยเอามาฝากกันเผื่อใครต้องการเปลี่ยน โดยขั้นตอนการเปลี่ยนก็จัดการกับ Registry เลยครับ

ขั้นตอนมีดังนี้

1. คลิก Start -> Run พิมพ์ regedit แล้วกด Enter
2. เข้าไปตามนี้เลยครับ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
3. ด้านขวามือให้ดับเบิลคลิก RegisteredOwner
4. ในช่อง value data ให้ใส่ชื่อที่ต้องการ เสร็จแล้วคลิก OK
5. หากต้องการแก้ไขชื่อองค์กร ก็สามารถทำได้โดยการดับเบิลคลิกที่ RegisteredOrganization แล้วใส่ชื่อที่ต้องการ เมื่อเสร็จแล้วคลิก OK

วันจันทร์ที่ 16 กรกฎาคม พ.ศ. 2550

วิธีแก้ปัญหาเมื่อลืม password root ของ mysql

1. stop mysql

/etc/init.d/mysqld stop

2. mysqld_safe --skip-grant-tables &

3. mysql -u root

4. mysql> use mysql;

5. mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';

6. mysql> flush privileges;

7. mysql> quit

8. /etc/init.d/mysqld stop

9. /etc/init.d/mysqld start

10. mysql -u root -p
กรอก password ใหม่ที่ตั้งใหม่


Written by mrGilL

วิธีเปลี่ยน Port MySQL

เมื่อคืนต้อง configure mysql ให้เพื่อนครับ ต้องเปลี่ยน port จาก 3306 เป็น 4242 เนื่องจากทางมหาวิทยาลัยเขา block port 3306 ให้เพื่อนผม Remote เข้าไปได้เลยเอาวิธีการเปลี่ยน port สำหรับ mysql มาฝาก

ขั้นตอน

1.) เปิดไฟล์ /etc/my.cnf
2.) เพิ่มบรรทัดต่อไปนี้เข้าไป

[mysqld]
port=<new_port_number>

[client]
port=
<new_port_number>


**สำหรับ
<new_port_number> เปลี่ยนได้ตามต้องการเลยครับ


3.) จากนั้น Restart Mysql

# service mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]


4.) สั่ง netstat ดูผลครับ

netstat -apnt | grep mysqld


วันเสาร์ที่ 7 กรกฎาคม พ.ศ. 2550

วิธีแสดง Uptime ในหน้าเว็บเพจ

หลักการก็ไม่ยากเลยครับเขียน Perl Script ขึ้นมาแล้วให้มัน Redirection output ออกไปเป็นไฟล์ html แล้วที่นี่จะเอาไปใส่เป็น frame, iframe ไว้ในไฟล์ไหนก็ได้

ตัวอย่างผมสร้างไฟล์ชื่อ /etc/admin/scripts/uptime_html.sh โดยมี code ของไฟล์ดังนี้

#!/usr/bin/perl
$uptime = `uptime`;
$uptime =~ /up (.*?) day/;
$up = int($1);
print "<html>";
print "<head><title>Uptime</title></head>";
print "<body>";
print "<font size=1 color=#a9a9a9></br>Uptime $up"; print " Days";
print "</body>";
print "</html>";


จากนั้นก็ chmod +x /etc/admin/scripts/uptime_html.sh เพื่อให้ execute ได้

ทดลองสั่งให้ script ทำงาน

#/etc/admin/scripts/uptime_html.sh > /var/www/html/uptime.html

ทดลองเรียก http://localhost/uptime.html ดูครับ

ทีนี้ก็อาศัยความสามารถของ crontab สำหรับตั้งเวลาให้ script ที่เราเขียนเมื่อกี้ทำงาน

#crontab -e

แล้วเพิ่มบรรทัดต่อไปนี้เข้าไป

*/30 * * * * /etc/admin/scripts/uptime_html.sh > /var/www/html/uptime.html

ทีนี้จะเอา uptime.html ไปแทรกเป็น frame หรือ iframe ก็แล้วแต่ความชอบน่ะครับอิอิ

ตัวอย่างผล html ที่จะได้

Uptime 7 Days

วันพฤหัสบดีที่ 5 กรกฎาคม พ.ศ. 2550

หยุด Spam Mail ก่อนที่มันจะเข้ามาใน MailBox ของคุณ

เซิร์ฟเวอร์ที่ผมดูแลอยู่ใช้ Postfix เป็น MTA ครับ เคยโดน spam เยอะมากเลยหาวิธีตรวจสอบมันก่อนที่จะเข้ามากินเนื้อที่ mailbox วิธีแก้ไขทำได้โดยเพิ่มบรรทัดต่อไปเข้าไปในในไฟล์ /etc/postfix/main.cf ของ postfix น่ะครับ

smtpd_helo_required = yes
disable_vrfy_command = yes
strict_rfc821_envelopes = yes
invalid_hostname_reject_code = 554
multi_recipient_bounce_reject_code = 554
non_fqdn_reject_code = 554
relay_domains_reject_code = 554
unknown_address_reject_code = 554
unknown_client_reject_code = 554
unknown_hostname_reject_code = 554
unknown_local_recipient_reject_code = 554
unknown_relay_recipient_reject_code = 554
unknown_sender_reject_code = 554
unknown_virtual_alias_reject_code = 554
unknown_virtual_mailbox_reject_code = 554
unverified_recipient_reject_code = 554
unverified_sender_reject_code = 554

smtpd_recipient_restrictions =
reject_invalid_hostname,
reject_unknown_recipient_domain,
reject_unauth_pipelining,
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_rbl_client multi.uribl.com,
reject_rbl_client dsn.rfc-ignorant.org,
reject_rbl_client dul.dnsbl.sorbs.net,
reject_rbl_client list.dsbl.org,
reject_rbl_client sbl-xbl.spamhaus.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client ix.dnsbl.manitu.net,
reject_rbl_client combined.rbl.msrbl.net,
reject_rbl_client rabl.nuclearelephant.com,
permit

smtpd_error_sleep_time = 1s
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20

credit : http://www.howtoforge.com/block_spam_at_mta_level_postfix and http://www.cyberciti.biz/tips/postfix-spam-filtering-with-blacklists-howto.html

วันพุธที่ 4 กรกฎาคม พ.ศ. 2550

วิธีป้องกัน Malware สำหรับ Postfix

วันนี้ปรับปรุง Mail Server นิดหน่อยครับ เลยเอาวิธีป้องกัน Malware มาฝากกัน
หลักการก็มีอยู่ว่าให้ postfix ตรวจสอบ body ของ e-mail ที่ส่งมาโดยเปรียบเทียบกับไฟล์ Blacklist น่ะครับ

ขั้นตอนการทำ

1.) ดาว์โหลดไฟล์ Blacklist มาไว้บนเครื่อง

#wget -O - http://www.malware.com.br/cgi/submit?action=list_postfix > /etc/postfix/mbl-body-deny

2.) เปิดไฟล์ /etc/postfix/main.cf แล้วแก้ไขบรรทัดต่อไปนี้

body_checks = regexp:/etc/postfix/mbl-body-deny

หากไม่มีบรรทัด body_checks พิมพ์เข้าไปเองน่ะครับ

3.) สั่งให้ postfix โหลด /etc/postfix/mbl-body-deny เข้าทำงาน

#postmap /etc/postfix/mbl-body-deny

4.) restart postfix

#/etc/init.d/postfix restart

ขั้นตอนต่อไปเป็นการสั่งให้ update blacklist อัตโนมัติ
1.) สร้าง shell script สำหรับ update blacklist

#nano /etc/postfix/fetch.postfixmalware.sh

แล้วเพิ่มบรรทัดเหล่านี้เข้าไป

#!/bin/bash
# Script to update malware urls
/usr/bin/wget -O - http://www.malware.com.br/cgi/submit?action=list_postfix > /etc/postfix/mbl-body-deny
/usr/sbin/postmap /etc/postfix/mbl-body-deny
/etc/init.d/postfix reload

บันทึกและออกจาก nano editor
3.)เปลี่ยน permission ให้กับ /etc/postfix/fetch.postfixmalware.sh

#chmod +x /etc/postfix/fetch.postfixmalware.sh

4.) เพิ่ม crontab ดังนี้

#crontab -e

จากนั้นเพิ่ม

40 03 * * * /etc/postfix/fetch.postfixmalware.sh >/dev/null 2>&1


credit : http://www.cyberciti.biz/tips/howto-setup-postfix-mail-server-to-block-malware.html

วิธี Block Mail ที่แนบไฟล์ .bat .exe .com .vbs บน Postfix

วิธีนี้เป็นการสั่งให้ postfix ตรวจสอบ mime header ของเมล์ที่ส่งเข้ามาโดยให้ป้องกันไฟล์ที่มีนามสกุล .bat, .exe, .com, .vbs ซึ่งเป็นไฟล์พื้นฐานของพวกไวรัสคอมพิวเตอร์
ซึ่งมีวิธีการให้ postfix ตรวจสอบไฟล์เหล่านั้นดังนี้

1.) เปิดไฟล์ /etc/postfix/main.cf

#nano /etc/postfix/main.cf

2.)กำหนด mime_header_checks ดังนี้

mime_header_checks = regexp:/etc/postfix/mime_header_checks

หากไม่มี mime_header_checks ให้พิมพ์เพิ่มเข้าไปเองน่ะครับ

3.) สร้างไฟล์ /etc/postfix/mime_header_checks

#echo "/name=[^>]*\.(batcomexedllvbs)/ REJECT" > /etc/postfix/mime_header_checks

4.) สั่งให้ postfix โหลด mime_header_checks ทำงาน

#/usr/sbin/postmap /etc/postfix/mime_header_checks

5.) restart postfix

#/etc/init.d/postfix restart


credit : http://www.cyberciti.biz/tips/postfix-block-mime-attachment-files.html

วันจันทร์ที่ 2 กรกฎาคม พ.ศ. 2550

การติดตั้ง OAMP (OpenBSD, Apache, MySQL, PHP) บน OpenBSD 4.1

อยู่ปี 4 แล้วครับ ก็ต้องทำโปรเจ็คจบ คิดอยู่นานว่าจะทำอะไรดี ไม่ชอบโปรแกรมมิงเอาซะเลยแต่ก็หนีมันไม่พ้น เป็นแอดมินนี่ครับ เลยอยากทำอะไรที่ช่วยให้เราทำงานง่ายขึ้น เลยคิดว่าจะเขียนเว็บสำหรับควบคุมเซอร์วิสของเซิฟเวอร์ ที่จริงก็มีรุ่นพี่เคยทำไว้แล้วละครับ เขาทำไว้บน Linux แต่ผมคิดว่าจะทำบนระบบปฏิบัติการที่ไม่ค่อยมีใครใช้กัน พอดีได้คุยกับ อ.วิริยะ (ว.ณ.สุราษฎร์ธานี) พี่เขาเก่ง OpenBSD ไอ้ผมเองก็ไม่เคยใช้ได้ข่าวว่ามันมีความปลอดภัยสูงและค่อนข้างใช้งานยาก ด้วยเหตุนี้ผมก็เลยคิดว่าจะใช้มันทำโปรเจ็คซะเลย

ก่อนจะใช้งานมันได้ก็ต้องศึกษาการทำงานของมันก่อนละครับ ก็ได้เว็ป อ.วิริยะ นี่แหละครับเป็นเว็บสำหรับศึกษาในเบื้องต้น (http://viriya.sru.ac.th/) ก็ลองติดตั้งตามที่เว็ปพี่เขาแนะนำละครับ แต่วันนี้อยากเอามาเขียนอีกทีในแบบสไตท์ของผมเองมาเริ่มกันเลยดีกว่า


การติดตั้ง Apache

1.) OpenBSD ได้มี Apache ให้เราใช้งานตั้งแต่ติดตั้งอยู่แล้วครับโดยเวอร์ชั่นที่ติดมากับ Openbsd เป็นเวอร์ชั่น 1.3 ซึ่งเราสามารถสั่งให้ Apache ทำงานได้โดยใช้คำสั่ง

#apachectl start #สำหรับ start http ธรรมดา

#apachectl startssl #สำหรับ start http และ https


สำหรับการสั่ง apachectl startssl นั้นเราต้องทำการสร้างไฟล์ Certificates server.crt และ server.key ก่อน


2.) การสร้างไฟล์ Certificates server.crt และ server.key

#cd /etc/ssl

#openssl genrsa -out server.key 1024

#openssl req -new -days 365 \
>-key server.key \
>-out server.csr


#openssl x509 -in server.csr \
>-out server.crt -req \
>-signkey server.key \
>-days 365

#chmod 400 server.*

#mv server.key private/

เมื่อมีไฟล์ Certificates แล้วก็มา startssl กัน

#apachectl startssl

3.) การกำหนดให้ Apache ทำงานเองทุกครั้งเมื่อมีการเปิดเครื่อง

โดยแก้ไขไฟล์ /etc/rc.conf

ตรงส่วนของ httpd_flages=NO แก้เป็น

httpd_flages=""

หรือถ้าต้องการ start https ด้วยให้แก้ไขดังนี้

httpd_flages="-DSSL" #ใส่ "-DSSL" สำหรับให้เริ่มการทำงาน HTTPS ด้วย

4.) ทดสอบโดย reboot

เปิด Browser จากนั้นเรียก http://your_server_ip/ และ https://your_server_ip/

สำหรับ Directory การทำงานของ Apache ที่ติดมากับ OpenBSD นั้นจะอยู่ที่ /var/www โดยได้มีการ chroot (jail)ไว้เพื่อความปลอดภัย ซึ่งการใช้งานค่อนข้างยุ่งยากนิดหน่อยน่ะครับถ้าไม่ต้องการใช้ chroot ก็สามารถสำหนด httpd_flages="-u" ในไฟล์ /etc/rc.conf ได้

ตามความเข้าใจของผมน่ะครับ chroot /var/www = / ทำให้ระบบมอง /var/www เหมือน / ซึ่งข้อมูลที่อยู่ใน /var/www จะไม่สามารถเรียกไฟล์หรือโฟลเดอร์ที่อยู่นอก /var/www ได้เดี๋ยวจะอธิบายต่อในการติดตั้ง PHP น่ะครับ


การติดตั้ง MySQL
การติดตั้งโปรแกรมต่างๆ บน OpenBSD สามารถติดตั้งได้หลายแบบ เช่น ติดตั้งผ่าน Ports, pkg_add, หรือดาวน์โหลดมา Compile เอง แต่วิธีที่ผมจะได้คือ pkg_add เพราะว่าสะดวกและรวดเร็วว่าวิธีอื่นๆ โดยขั้นแรกต้องกำหนดตัวแปร PKG_PATH ก่อนด้วยคำสั่ง

export PKG_PATH=http://ftp.gillclub.com/pub/OpenBSD/4.1/packages

#2บรรทัดด้านบนอยู่บรรทัดเดียวกัน export PKG_PATH

ซึ่ง URL ดังกว่าผมได้สร้างขึ้นมาเองโดยดาวน์โหลด Packages มาจากเว็บของ OpenBSD มาไว้บนเซิฟเวอร์ของผมเองเพื่อความเร็ว ถ้ามีเวลาผมแนะนำว่าให้ดาวน์โหลดมากับไว้น่ะครับเวลาติดตั้งโปรแกรมจะเร็วมากๆ เนื้อที่ก็ประมาณ 5 GB กว่าๆ ครับ

จากนั้น echo $PKG_PATH จะได้ http://ftp.gillclub.com/pub/OpenBSD/4.1/packages
มี tip สำหรับการกำหนด PKG_PATH นิดนึงครับถ้าหากเรา reboot เครื่อง PKG_PATH ที่เราเคยกำหนดไว้จะหายไป วิธีแก้ปัญหานี้ทำได้โดยแก้ไขไฟล์ ~/.profile โดยเพิ่งบรรทัดต่อไปนี้เข้าไปน่คะรับ

export PKG_PATH=http://ftp.gillclub.com/pub/OpenBSD/4.1/packages

#2บรรทัดด้านบนอยู่บรรทัดเดียวกัน export PKG_PATH

ทีนี้ทุกครั้งที่เรา login เข้ามาในระบบ PKG_PATH ก็จะถูกกำหนดให้เราโดยอัตโนมัติครับ

***หมายเหตุ PKG_PATH สามารถเปลี่ยนแปลงได้ตามความเหมาะสมของท่านนะครับสะดวกใช้ mirror ที่ไหนก็เปลี่ยนแปลงตามชอบนะครับ

มาติดตั้ง MySQL ก่อนต่อหลังจากเรากำหนด PKG_PATH แล้วก็มาเริ่มกันเลย

1.) pkg_add mysql-server

2.) จากนั้นสั่ง

#mysql_install_db

...
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/local/bin/mysqladmin -u root password 'new-password'
/usr/local/bin/mysqladmin -u root -h bsd.gillclub.com password 'new-password'
See the manual for more instructions.

สั่งให้ MySQL ทำงาน

#mysqld_safe &


จากนั้นกำหนดรหัสผ่านสำหรับ root ของ mysql


#mysqladmin -u root password 'new-password' #แก้ไขเป็น 'new-password' เป็น Password ที่ต้องการ

#mysqladmin -u root -h bsd.gillclub.com password 'new-password' #แก้ไขเช่นกัน

3.) แก้ไขไฟล์ /etc/sysctl.conf เพิ่มบรรทัดต่อไปนี้เข้าไป

# Increase for MySQL
kern.maxfiles=4096

ค่าปกติของ kern.maxfiles คือ 1772 ซึ่งดูได้จาก

sysctl kern.maxfiles

ค่าปกติของ kern.maxfiles ถูกจำกัดไว้ที่ 1772 ซึ่งถ้าหากเราต้องการเรียก table ของ mysql หลายๆ table พร้อมกันอาจเกิดปัญหาได้จึงได้เพิ่มให้เป็น 4046 เพื่อที่จะได้เรียก table ได้มากขึ้น

สั่งให้เปลี่ยนค่า kern.maxfiles โดยไม่ต้อง reboot โดย

# sysctl kern.maxfiles=4096
kern.maxfiles: 1772 -> 4096

4.) แก้ไขไฟล์ /etc/login.conf โดยเพิ่มบรรทัดต่อไปนี้เข้าไป

# Setting used by MySQL daemon
_mysql:\
:datasize=infinity:\
:maxproc=infinity:\
:openfiles-cur=2048:\
:openfiles-max=4096:\
:stacksize-cur=8M:\
:localcipher=blowfish,8:\
:tc=default:

5.) ทำการเพิ่ม script สำหรับให้ MySQL ทำงานเมื่อเปิดเครื่องโดยแก้ไขไฟล์ /etc/rc.local ดังนี้

# Start MySQL server

if [ -x /usr/local/bin/mysqld_safe ] ; then

su -c _mysql root -c '/usr/local/bin/mysqld_safe &' > /dev/null & echo -n ' mysql'

for i in 1 2 3 4 5 6;
do if [ -S /var/run/mysql/mysql.sock ]; then

break

else sleep 1 echo -n 00.00

fi done

#

sleep 5

#

ln -f /var/run/mysql/mysql.sock /var/www/var/run/mysql/mysql.sock

#2บรรทัดด้านบนอยู่บรรทัดเดียวกัน ln -f /var/run/...

fi

# End MySQL Setting

6.) อย่างที่บอกไปแล้วในตอนติดตั้ง Apache ว่า Apache ที่ติดมากับ OpenBSD นั้นได้มีการ chroot ไว้ ดังนั้นถ้าหากต้องการให้ Apache ใช้งานร่วมกับ MySQL ได้จะต้องมีการสร้าง symbolic link ให้ mysql.sock ให้กับ Apache โดยการสร้างโฟลเดอร์สำหรับเก็บ mysql.sock

#mkdir -p /var/www/var/run/mysql/

ซึ่ง symbolic link ของ mysql.sock จะถูกสร้างโดยคำสั่งใน /etc/rc.conf บรรทัดที่

ln -f /var/run/mysql/mysql.sock /var/www/var/run/mysql/mysql.sock

#2บรรทัดด้านบนอยู่บรรทัดเดียวกัน ln -f /var/run/...

7.) สุดท้ายแก้ไขไฟล์ /etc/my.cnf ค้นหาบรรทัด

#skip-networking #เอา # หน้าบรรทัดออกเป็น

skip-networking


การติดตั้ง PHP

1.) pkg_add php5-core

/usr/local/sbin/phpxs -s

จากนั้นให้แก้ไขไฟล์ /var/www/conf/httpd.conf โดยค้นหาบรรทัดต่อไปนี้

#AddType application/x-httpd-php .php เอา # หน้าบรรทัดนี้ออกเป็น

AddType application/x-httpd-php .php

DirectoryIndex index.php index.html #เพิ่ม index.php เข้าไป

จากนั้น

cp /usr/local/share/examples/php5/php.ini-recommended /var/www/conf/php.ini

จากนั้นเพื่อความปลอดภัยให้ทำการแก้ไขไฟล์ /var/www/conf/php.ini โดยเพิ่มบรรทัดต่อไปนี้เข้าไป

disable_functions = escapeshellarg, escapeshellcmd, exec, passthru, proc_open, proc_close, proc_get_status, proc_nice, proc_terminate, shell_exec, system, apache_child_terminate, apache_get_modules, apache_get_version, apache_getenv, apache_lookup_uri,apache_note, apache_request_headers, apache_reset_timeout, apache_response_headers, apache_setenv, getallheaders, virtual, popen, pclose

*** หมายเหตุ ทำให้อยู่บรรทัดเดียวกันน่ะครับ

ต่อไปก็มาติดตั้ง Extension ของ PHP กันเลย

#pkg_add php5-mysql

#/usr/local/sbin/phpxs -a mysql

#pkg_add php5-gd-5.1.6-no_x11p2

#/usr/local/sbin/phpxs -a gd

#pkg_add php5-imap

#/usr/local/sbin/phpxs -a imap

#pkg_add php5-pear

#/usr/local/sbin/phpxs -a pear

#pkg_add php5-soap

#/usr/local/sbin/phpxs -a soap

#pkg_add php5-bz2

#/usr/local/sbin/phpxs -a bz2

#pkg_add php5-mhash

#/usr/local/sbin/phpxs -a mhash

#pkg_add php5-mbstring

#/usr/local/sbin/phpxs -a mbstring

#pkg_add php5-mcrypt

#/usr/local/sbin/phpxs -a mcrypt

#pkg_add php5-ldap

#/usr/local/sbin/phpxs -a ldap

#pkg_add php5-snmp

#/usr/local/sbin/phpxs -a snmp

สำหรับปัญหาที่พบบ่อยหลังการติดตั้ง PHP ก็คือ ไม่เจอโฟลเดอร์สำหรับเก็บ session เพราะว่าปกติของ php จะเก็บ session ไว้ที่ /tmp แต่เมื่อมีการ chroot ไว้ php จึงไม่สามารถสร้างไฟล์ใน /tmp ปกติได้จึงต้องสร้าง /var/www/tmp สำหรับเก็บ session โดยการ

#mkdir /var/www/tmp
#chmod 777 /var/www/tmp

และฟังค์ชันเน็ตเวิร์คบางตัวต้องการไฟล์ /etc/resolf.conf และ /etc/services ก็ควร copy ไฟล์เหล่านี้ไปไว้ใน /var/www/etc เช่นกัน โดย

#mkdir /var/www/etc
#cp /etc/resolv.conf /var/www/etc
#cp /etc/services /var/www/etc

เสร็จแล้วครับ OAMP ของเรา

ทำการ reboot สัก 1 รอบแล้วมาดูผลกัน...

วันจันทร์ที่ 25 มิถุนายน พ.ศ. 2550

วิธีติดตั้ง OpenLDAP บน OpenBSD 4.1

วันนี้ลองลง OpenLDAP ครับจะเอาไปใช้กะ Project จบนิดหน่อย เริ่มกันเลย

1.) Download OpenLDAPจาก site : ftp://ftp.dti.ad.jp/pub/net/OpenLDAP/openldap-stable/openldap-stable-20070110.tgz

ผมดาวน์โหลดไปไว้ใน /root/Download

2.) tar zxvf openldap-stable-20070110.tgz

3.) cd openldap-2.3.32

4.) ./configure --prefix=/usr/local/openldap

เจอปัญหา

checking for Berkeley DB link (default)... yes
checking for Berkeley DB version match... yes
checking for Berkeley DB thread support... no
checking Berkeley DB version for BDB backend... no
configure: error: BDB/HDB: BerkeleyDB version incompatible

error นิดหน่อยไป search จึงได้คำตอบว่าต้องกำหนดตัวแปรนิดหน่อย

export CPPFLAGS="-I/usr/local/include/db4" LDFLAGS="-L/usr/local/lib/db4"

5.) กลับมา ./configure --prefix=/usr/local/openldap ใหม่อีกรอบผ่านหมดครับ

6.) make ก็ผ่านหมดรับ

7.) make depend ก็ผ่านเช่นกัน

8.) make install จบแบบ happy ending

ทุกอย่างผ่านหมดแล้ว ที่เหลือคือใช้ยังไงหง่ะ ใครช่วยตอบผมที T_T

วันจันทร์ที่ 11 มิถุนายน พ.ศ. 2550

การ Search หาชื่อโปรแกรมที่ต้องการใน Ports

ก่อนนอนอีกนิด วันนี้จะเขียนเรื่องเกี่ยวกับ FreeBSD มั้ง ที่จริงผมชอบเจ้า FreeBSD มากแต่ด้วยเหตุผลบางประการจึงไม่ได้ใช้งานมันจริงๆ จังๆ สักทีนี่ก็หลายเดือนแล้วที่ไม่ได้เล่นมันเลย วันนี้เลยจะมาเขียนเตือนความจำตัวเองกันสักหน่อย

เคยกันบ้างไหมครับ บางทีคิดจะติดตั้งโปรแกรมสักตัวจาก ports แต่ไม่รู้ว่ามันหลบซ่อนอยู่ที่ไหนเพราะ ports มี category เยอะมากเดาใจกันไม่ถูกวันนี้เลยเอาวิธีง่ายสำหรับ search หาโปรแกรมที่ต้องการ

สำหรับคำสั่งก็สั้นๆ ง่ายๆ ครับบรรทัดเดียวเอง

1. ขั้นแรกเราต้องเข้าไปใน /usr/ports ก่อน

2. คำสั่งสำหรับ search คือ

#make search key="packages_name"

ตัวอย่างเช่น ผมต้องการติดตั้ง mrtg ผมก็สั่ง

#make search key="mrtg"
Port: mrtg-2.13.2,1
Path: /usr/ports/net-mgmt/mrtg
Info: The multi-router traffic grapher
Maint: demon@FreeBSD.org
B-deps: freetype2-2.1.10_3 gd-2.0.33_4,1 jpeg-6b_4 perl-5.8.8 pkgconfig-0.20 png-1.2.8_3
R-deps: freetype2-2.1.10_3 gd-2.0.33_4,1 jpeg-6b_4 p5-PathTools-3.16 p5-Pod-Parser-1.34 p5-SNMP_Session-1.08 p5-Scalar-List-Utils-1.18,1 perl-5.8.8 pkgconfig-0.20 png-1.2.8_3
WWW: http://www.mrtg.org/

ซึ่งผลที่ได้จริงๆ อาจมีเยอะหน่อย ก็ต้องมานั่งไล่ดูกันนิดนึงน่ะครับ

เท่านี้ผมก็รู้แล้วว่า mrtg อยู่ที่

/usr/ports/net-mgmt/mrtg

ที่นี้ผมก็เข้าไปใน /usr/ports/net-mgmt/mrtg แล้ว make install clean เพื่อติดตั้งได้แล้ว

ติดตั้ง apt-get บน Fedora Core 6

apt เป็นโปรแกรมจัดการ packages ชนิดนึง เดิมมีใช้ในเฉพาะบน linux ค่าย debian แต่ได้มีการพัฒนาให้สามารถใช้งานบน Fedora ได้แล้ว ซึ่งปกติแล้ว Fedora จะใช้โปรแกรม yum ในการจัดการ packages จากประสบการณ์ใช้งานจริงของผม ผมคิดว่า apt นั้นมีความสามารถในการจัดการ packages ได้ดีกว่า yum มาก สามารถค้นหาชื่อ packages ,ติดตั้งและถอนการติดตั้ง packages ได้ง่ายกว่า รวมไปถึงการ update,upgrade packages ด้วย

การติดตั้ง apt

1. ติดตั้ง apt ด้วย yum

#yum install apt

2. เมื่อติดตั้งเสร็จแล้วให้สั่ง update

#apt-get update

มันจะทำการติดต่อกับ server และดาวน์โหลดรายการ update มาไว้ในเครื่อง

3. เมื่อสั่ง update ไปแล้วก็มา upgrade กันเลย

#apt-get upgrade

ถ้าหากการ update มีรายการ packages ที่ update version หรือมี patch แก้ไข การ upgrade จะดาวน์โหลด packages ใหม่ๆ มาติดตั้งให้เรา

4. การค้นหาชื่อ packages ที่ต้องการ เช่น ผมต้องการติดตั้ง Webalizer

# apt-cache search webalizer
webalizer - A flexible Web server log file analysis program.

มันก็จะไปหาชื่อ packages ที่เราต้องและแสดงเป็น list ให้เรา

5. การติดตั้ง packages เช่น

#apt-get install webalizer

6. การถอนการติดตั้ง packages เช่น

#apt-get remove webalizer

ง่ายดีใช่ไหมครับ ลองทำกันดูครับ

วันอาทิตย์ที่ 10 มิถุนายน พ.ศ. 2550

การ Configure MRTG (Multi Router Traffic Grapher)

กรณีศึกษาใช้ Fedora Core 6
ก่อนการติดตั้ง mrtg ต้องติดตั้ง service snmp ก่อน

การติดตั้ง SNMP

1. ติดตั้ง snmp

yum install net-snmp net-snmp-utils net-snmp-devel

2. เมื่อติดตั้ง snmp ได้แล้วจะได้ไฟล์ /etc/snmp/snmpd.conf ให้ทำการเพิ่มบรรทัดด่อไปนี้เข้าไป

view systemview included .1

ตัวอย่าง
# Make at least snmpwalk -v 1 localhost -c public system fast again.
# name incl/excl subtree mask(optional)
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
view systemview included .1 #เพิ่มบรรทัดนี้เข้าไป

3. สั่งให้ snmpd ทำงานทุกครั้งเมื่อเปิดเครื่องด้วยคำสั่ง

chkconfig snmpd on

4. เช็คว่า snmpd ทำงานอยู่หรือเปล่าด้วยคำสั่ง

/etc/init.d/snmpd status #เช็คสถานะของ snmpd
/etc/init.d/snmpd start # start snmpd
/etc/init.d/snmpd restart # restart snmpd

5. ทดสอบ snmpd ด้วยคำสั่ง snmpwalk

snmpwalk -v 1 localhost -c public system

จะมี responds กลับมาประมาณด้านล่าง

[root@eng ~]# snmpwalk -v 1 localhost -c public system
SNMPv2-MIB::sysDescr.0 = STRING: Linux eng.ru.ac.th 2.6.9-55.ELsmp #1 SMP Wed May 2 14:28:44 EDT 2007 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (960677) 2:40:06.77
SNMPv2-MIB::sysContact.0 = STRING: Mr.Montree Phomkam
SNMPv2-MIB::sysName.0 = STRING: eng.ru.ac.th
SNMPv2-MIB::sysLocation.0 = STRING: Faculty Of Engineering,Ramkhamhaeng University
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (6) 0:00:00.06
.....................

จบ snmpd

การติดตั้ง MRTG

1. ติดตั้ง mrtg ด้วยคำสั่ง

yum install mrtg

หรือ

apt-get install mrtg

จะได้

/var/www/mrtg และ /etc/mrtg

2. แก้ไขไฟล์ /etc/httpd/conf.d/mrtg.conf
<Location /mrtg>
Order deny,allow
Deny from all
#Allow from 127.0.0.1 #ใส่ comment หน้าบรรทัดนี้
Allow from all
# Allow from .example.com
</Location>


3. สั่ง restart httpd

/etc/init.d/httpd restart

เปิด browser แล้วลองเข้า http://192.168.200.210/mrtg

4.มาเริ่มสร้างไฟล์ config โดยในตัวอย่างจะเป็นการจับ Traffic ของ Server ที่เป็น localhost สั่ง

ตั้งค่า locale ไม่ให้เป็น utf-8 ด้วยคำสั่ง

export LANG=en_US <<สำคัญมากอย่าลืมพิมพ์

echo "export LANG=en_US" >> /etc/rc.local

ให้ทุกครั้งที่เปิดเครื่องจะได้ export LANG=en_US ทุกครั้ง สร้าง directory สำหรับเก็บไฟล์ของ

mrtg mkdir /var/www/mrtg/traffic

สั่งสร้างไฟล์ config ด้วยคำสั่ง

cfgmaker -global "options[_]:bits,growright" --global "workdir: /var/www/mrtg/traffic" public@localhost > /etc/mrtg/traffic.cfg

*****มาเข้าใจโครงสร้างของ cfgmaker

"options[_]:bits,growright" << ส่วนนี้โดยปกติถ้าไม่กำหนดจะมันจะสร้างกราฟจากซ้ายไปขวาซึ่งทำให้ดูยาก จึงกำหนด growright เพื่อให้สร้างกราฟจากด้านขวาไปซ้าย ซึ่งแทน

"workdir: /var/www/mrtg/traffic" << ตรงส่วนนี้หมายถึงตำแหน่งที่เราต้องการจะเก็บไฟล์ .html กับกราฟที่เป็น .png ซึ่งก็คือ Directory ที่เราต้องการจะเก็บเว็ป mrtg นั้นเอง

"public@localhost" <<ส่วนนี้หมายถึง service name ของ snmp โดยปกติจะเป็น public ส่วน localhost หมายถึงกำหนดให้เป็นเครื่องตัวเองหรืออาจใส่ 127.0.0.1 ก็ได้

"> /etc/mrtg/traffic.cfg" << ตรงส่วนนี้เป็นการ redirection output เพื่อไปเขียนไฟล์ config ซึ่งระบบเป็น /etc/mrtg/traffic.cfg ก็หมายถึงให้สร้างไฟล์ชื่อ traffic.cfg ใน /etc/mrtg นั้นเอง

เมื่อสั่งคำสั่งด้านบนไปแล้วเราจะได้ไฟล์ /etc/mrtg/traffic.cfg มา

cat /etc/mrtg/traffic.cfg ก็จะแสดงรายละเอียดของไฟล์ออกมา

5. สั่งให้ mrtg สร้าง html และ graph มีโครงสร้างดังนี้

/usr/bin/mrtg /where/your/config/file << ตามด้วยที่อยู่ของไฟล์ config ตัวอย่าง

/usr/bin/mrtg /etc/mrtg/traffic.cfg

เมื่อสั่งไปแล้วจะมีข้อความแจ้ง warning นิดหน่อเพราะมันไม่สามารถเขียนทับไฟล์เก่าได้เนื่องจากเราสั่งเป็นครั้งแรก สั่งคำสั่งเดิมซ้ำอีก 2 รอบ warning ก็จะหายไป
ซึ่งตอนเราสร้างไฟล์ config เราได้กำหนด workdir เป็น /var/www/mrtg/traffic หลังจากสั่ง /usr/bin/mrtg /etc/mrtg/traffic.cfg ไปแล้วมันก็จะสร้างไฟล์ .html กับ .png ให้ซึ่งอยู่ใน /var/www/mrtg/traffic

ls -al /var/www/mrtg/traffic
-rw-r--r-- 1 root root 1592 Feb 15 21:15 localhost_2-day.png
-rw-r--r-- 1 root root 6546 Feb 15 21:15 localhost_2.html
-rw-r--r-- 1 root root 48211 Feb 15 21:15 localhost_2.log

ทดลองเรียก

http://202.41.164.210/mrtg/traffic/localhost_2.html

ก็จะแสดงกราฟออกมา ซึ่งจะยังไม่มีเส้นเพราะเพิ่งสร้างเป็นครั้งแรก การเรียก url แบบนี้หลายๆ ครั้งคงจำกันลำบาก ต่อไปเรามาสร้าง index ไฟล์เพื่อให้เรียกดูง่ายๆ กันโดยสั่ง

indexmaker --column=1 --output=/var/www/mrtg/traffic/index.html /etc/mrtg/traffic.cfg

มาเข้าใจโครงสร้างของ indexmaker กัน

"--column=1 " << ส่วนนี้คือจำนวนคอลัมน์ของกราฟที่ต้องการแสดง

"--output=/var/www/mrtg/traffic/index.html" << "/var/www/mrtg/traffic/" คือตำแหน่งที่เราจำสร้าง index.html นั้นเอง

"/etc/mrtg/traffic.cfg" <<คือตำแหน่งที่อยู่ของไฟล์ config ทีนี้ลองเปิดดูกราฟใหม่โดยเรียก

http://192.168.200.210/mrtg/traffic

มันจะ index หน้ากราฟมาให้เราดูโดยที่เราไม่ต้องกรอกชื่อเต็มๆ ของกราฟตัวนั้น ซึ่งเรามาสามารถคลิกที่รูปกราฟเพื่อดูรายละเอียดได้ สังเกตได้ว่ากราฟที่เราเปิดดูจะยังไม่มีเส้นแสดงรายละเอียดนั้นเป็นเพราะเราเพิ่งสร้างกราฟนั้นเป็นครั้งแรก

ต่อไปก็มาตั้งเวลาให้ mrtg สร้างกราฟให้เราทุกๆ 5 นาทีโดยใช้ crontab เข้ามาช่วยซึ่งโดยปกติ crond จะเป็น service ที่ start เองเมื่อเราเปิดเครื่องอยู่แล้วแต่เพื่อกันความผิดพลาดก่อนอื่นลองมาตรวจสอบว่า crond ได้ทำงานอยู่หรือไม่

/etc/init.d/crond status

ถ้าหากมันรายงาน pid ก็แสดงว่า crond ทำงานอยู่ ต่อไปมาสร้างตารางเวลาให้ mrtg ทำงานทุกๆ 5 นาที

crontab -e

มันจะเปิดหน้าจอ vi มาให้เรากด i แล้วพิมพ์บรรทัดต่อไปนี้เข้าไป

*/5 * * * * /usr/bin/mrtg /etc/mrtg/traffic.cfg

พิมพ์เสร็จแล้วกด esc ตามด้วย :wq เพื่อ save และออกจาก cronedit ดูรายละเอียดที่เราพิมพ์ไปเมื่อกี้ด้วยคำสั่ง

crontab -l

จะแสดงรายละเอียดของงานทั้งหมดที่ตั้งไว้ใน crontab สั่งให้ crond เริ่มทำงานใหม่ด้วย

/etc/init.d/crond restart

ดังนั้นทุกๆ 5 นาที mrtg จะสร้างกราฟให้เราใหม่ซึ่งก็จะทำให้กราฟมีเส้นที่แสดงอย่างต่อเนื่อง เปิด
browser : http://192.168.200.210/mrtg/traffic/index.html มันจะ refresh ตัวเองทุกๆ 5 นาที

#################################################################
ตัวอย่างการใช้ mrtg ตรวจสอบการทำงานของ cpu
ให้สร้างไฟล์ /etc/mrtg/cpu.cfg โดยมีรายละเอียดดังนี้

WorkDir: /var/www/mrtg/traffic
LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
Target[myhost-cpu]:ssCpuIdle.0&laLoadInt.1:public@localhost
RouterUptime[myhost-cpu]: public@localhost
MaxBytes[myhost-cpu]: 10000
Title[myhost-cpu]: Idle CPU and Load average
PageTop[myhost-cpu]: <H1>Idle CPU and Load average</H1>
ShortLegend[myhost-cpu]: %
YLegend[myhost-cpu]: CPU and Load Utilization
Legend1[myhost-cpu]: Idle CPU
Legend2[myhost-cpu]: Load average
LegendI[myhost-cpu]: Idle
LegendO[myhost-cpu]: Load
Options[myhost-cpu]: gauge, nopercent, growright

ตัวอย่างการใช้ mrtg ตรวจสอบการใช้งาน memory
ให้สร้างไฟล์ /etc/mrtg/mem.cfg โดยมีรายละเอียดดังนี้

LoadMIBs: /usr/share/snmp/mibs/HOST-RESOURCES-MIB.txt
Target[localhost.mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.6.0:public@localhost
PageTop[localhost.mem]:<H1>Memory</H1>
WorkDir: /var/www/mrtg/traffic/
Options[localhost.mem]: nopercent,growright,gauge,noinfo
Title[localhost.mem]: Free Memory
MaxBytes[localhost.mem]: 1000000
KMG[localhost.mem]: k,M,G,T,P,X
YLegend[localhost.mem]: bytes
ShortLegend[localhost.mem]: bytes
LegendI[localhost.mem]: Free Memory:
LegendO[localhost.mem]:
Legend1[localhost.mem]: Free memory, not including swap, in bytes

ตัวอย่างการใช้ mrtg ตรวจสอบ tcp connection
ให้สร้างไฟล์ /etc/mrtg/tcp.cfg โดยมีรายละเอียดดังนี้

WorkDir: /var/www/mrtg/traffic/
LoadMIBs: /usr/share/snmp/mibs/TCP-MIB.txt
Target[myhost-tcpestab]: tcpCurrEstab.0&tcpCurrEstab.0:public@localhost
RouterUptime[myhost-tcpestab]: public@localhost
MaxBytes[myhost-tcpestab]: 1000000
Title[myhost-tcpestab]: TCP Current Establish
PageTop[myhost-tcpestab]: <H1>TCP Current Establish </H1>
ShortLegend[myhost-tcpestab]: conns
YLegend[myhost-tcpestab]: conns
LegendI[myhost-tcpestab]: Current:
LegendO[myhost-tcpestab]:
Legend1[myhost-tcpestab]: Current, numbers of connections
Legend2[myhost-tcpestab]:
Options[myhost-tcpestab]: nopercent, growright, gauge

ตัวอย่างการใช้ mrtg ตรวจสอบ uptime
ให้สร้างไฟล์ /etc/mrtg/uptime.cfg โดยมีรายละเอียดดังนี้

WorkDir: /var/www/mrtg/traffic/
Target[server-uptime]: `/etc/mrtg/mrtg_uptime.pl`
Colours[server-uptime]: LIGHT BLUE#7AAFFF,BLUE#1000FF,DARK GREEN#006000,VIOLET#FF00FF
Options[server-uptime]: gauge,noinfo, nopercent, growright, unknaszero
MaxBytes[server-uptime]: 200
Title[server-uptime]: server uptime
YLegend[server-uptime]: Days
ShortLegend[server-uptime]: Days
Legend1[server-uptime]: Uptime
Legend2[server-uptime]:
LegendI[server-uptime]:
LegendO[server-uptime]: uptime :
PageTop[server-uptime]:<H1>Uptime in days</H1>

และสร้างไฟล์ /etc/mrtg/mrtg_uptime.pl โดยมีรายละเอียดดังนี้

#!/usr/bin/perl
#Affichage de l'uptime en nombre de jours pour MRTG
$uptime = `uptime`;
$uptime =~ /up (.*?) day/;
$up = int($1);
print "$up\n";
print "$up\n";

จากนั้น chmod 7777 /etc/mrtg/mrtg_uptime.pl
อย่าลืมเพิ่มคำสั่งใน crontab ด้วย

crontab -e

*/5 * * * * /usr/bin/mrtg /etc/mrtg/traffic.cfg
*/5 * * * * /usr/bin/mrtg /etc/mrtg/cpu.cfg
*/5 * * * * /usr/bin/mrtg /etc/mrtg/mem.cfg
*/5 * * * * /usr/bin/mrtg /etc/mrtg/tcp.cfg
*/5 * * * * /usr/bin/mrtg /etc/mrtg/uptime.cfg


การสั่งให้สร้างหน้า index ให้มีกราฟหลายๆ รูปทำได้ดังนี้

indexmaker --column=2 --output=/var/www/mrtg/traffic/index.html /etc/mrtg/traffic.cfg /etc/mrtg/cpu.cfg /etc/mrtg/mem.cfg /etc/mrtg/tcp.cfg /etc/mrtg/uptime.cfg

วันศุกร์ที่ 8 มิถุนายน พ.ศ. 2550

การติดตั้ง Java SDK 1.6 และ Apache Ant 1.7 บน CentOS 4,Fedora Core (4-6)

สวัสดีครับ วันนี้นำเรื่องการติดตั้ง Java SDK กับ Apache Ant มาฝากกัน ก็เป็นการติดตั้งแบบง่ายๆ ไม่มีอะไรยุ่งยากน่ะครับ มาเริ่มกันเลยดีกว่า

การติดตั้ง Java

1. ขั้นแรกเราต้องดาวน์โหลด Java SDK มาจากเว็ปไซต์http://java.sun.com/javase/downloads/index.jsp ผมดาวน์โหลดเป็น .bin มาน่ะครับ

2. upload .bin ที่ดาวน์โหลดมาไปไว้ใน /usr/lib/jvm เมื่อ upload เสร็จจะได้ /usr/lib/jvm/jdk-6u1-linux-i586.bin

3. extract ไฟล์ /usr/lib/jvm/jdk-6u1-linux-i586.bin

#cd /usr/lib/jvm
#chmod +x jdk-6u1-linux-i586.bin
#./jdk-6u1-linux-i586.bin
#rm -rf jdk-6u1-linux-i586.bin

4. เราก็จะได้ /usr/lib/jvm/jdk1.6.0_01/

5. ทำการสร้าง symbolic link ไว้ที่ /etc/alternatives

#ln -s /usr/lib/jvm/jdk1.6.0_01/bin/java /etc/alternatives/java
ln: `/etc/alternatives/java': File exists << แสดงว่าเครื่องเรามี java ติดตั้งอยู่

วิธีแก้ปัญหานี้ให้ลบ symbolic link เก่าออกก็ใช้ได้แล้วครับ

#rm -rf /etc/alternatives/java

แล้วสั่งสร้าง symbolic link ใหม่อีกที

#ln -s /usr/lib/jvm/jdk1.6.0_01/bin/java /etc/alternatives/java

6. สร้าง symbolic link ไว้ใน /usr/bin/java เพื่อสะดวกในการใช้งาน

#ln -s /etc/alternatives/java /usr/bin/java

ถ้ามันมี error แสดงขึ้นมาว่า
ln: `/usr/bin/java': File exists ก็ไม่ต้องสนใจมันครับแสดงว่ามีการทำ link ไว้แล้ว

ทดลองสั่ง
#java -version
java version "1.6.0_01"
Java(TM) SE Runtime Environment (build 1.6.0_01-b06)
Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing)

ติดตั้ง Java SDK 1.6 สำเร็จแล้ว

การ Setup JAVA_HOME

1. สร้าง symbolic link ที่ใช้ไปยังไดเร็กทอรีที่ติดตั้ง Java ให้กับ JAVA_HOME

#ln -s /usr/lib/jvm/jdk1.6.0_01 /etc/alternatives/jdk

ทดสอบ

#ls -al จะแสดงรายละเอียดเหมือนกับ /usr/lib/jvm/jdk1.6.0_01

2. กำหนดตัวแปรโกลบอล JAVA_HOME

#nano /etc/profile

เพิ่ม 2 บรรทัดต่อไปนี้เข้าไปไว้บรรทัดสุดท้าย

export JAVA_HOME="/etc/alternatives/jdk"
export PATH="$PATH:$JAVA_HOME/bin"

3. logout ออกจากระบบ แล้วลอง login เข้ามาในระบบใหม่ จากนั้นสั่ง

#echo $JAVA_HOME จะได้
/etc/alternatives/jdk

เป็นอันเสร็จการตั้งค่า JAVA_HOME

การติดตั้ง Apache Ant

1. ดาวน์โหลด Apache Ant ได้จาก http://ant.apache.org/bindownload.cgi

#cd /usr/local
#wget http://mirror.in.th/apache/ant/binaries/apache-ant-1.7.0-bin.tar.gz

2. แตกไฟล์ apache-ant-1.7.0-bin.tar.gz

#tar zxvf apache-ant-1.7.0-bin.tar.gz
#rm -rf apache-ant-1.7.0-bin.tar.gz

3. สร้าง symbolic link ให้กับ ant

#ln -s /usr/local/apache-ant-1.7.0/bin/ant /etc/alternatives/ant
#ln -s /usr/local/apache-ant-1.7.0 /etc/alternatives/anthome
#ln -s /etc/alternatives/ant /usr/bin/ant

4. กำหนดตัวแปรโกลบอล ANT_HOME เหมือนกับ Java ด้านบน

#nano /etc/profile

เพิ่มบรรทัดต่อไปนี้เข้าไว้ด้านล่าง JAVA_HOME

export ANT_HOME="/etc/alternatives/anthome"

และเพิ่ม ANT_HOME เข้าไปไว้ใน PATH โดยแก้ไข

export PATH="$PATH:$JAVA_HOME/bin:$ANT_HOME"

5. logout และเข้าระบบใหม่

ตรวจสอบ ant

#ant -version
Apache Ant version 1.7.0 compiled on December 13 2006

ตรวจสอบ ANT_HOME

#echo $ANT_HOME
/etc/alternatives/anthome


เสร็จเรียบร้อยแล้วครับ ไม่ยากเลยใช่ไหมครับ

วันพุธที่ 30 พฤษภาคม พ.ศ. 2550

FireFox + CustomizeGoogle คู่มือนัก Search ตัวจริง

อยาก search ให้ไว แล้วเจอข้อมูลที่ต้องการได้รวดเร็ว ผมขอแนะนำให้ Search จาก Firefox

เดี่ยวจะแนะนำคู่ Duo ให้รู้จักFirefox + CustomizeGoogle
ซึ่งเจ้า CustomizeGoogle นี้เป็น Extensions เสริมของ Firefox น่ะครับมีความสามารถสูงโดยมันจะเอา search key ที่เคยมีคนหามาแล้วมาให้เราเลือก โดยจะบอกทั้ง search key ที่มีคนเคยหาและจำนวนหน้าที่พบให้เราใช้ติดสินใจเลือกด้วย (โอ้ว ซาร่า มันช่างวิเศษอะไรอย่างนี้ โอ้ พราะเจ้าช่วยกล้วยทอด พระเจ้าจอร์จมันยอดมาก หุหุ)

โหลด FireFox ได้ที่http://www.mozilla.com/firefox/

และโหลด CustomizeGoogle ได้ที่https://addons.mozilla.org/firefox/743/

ขั้นตอนการติดตั้ง

1. ติดตั้ง Firefox ก่อน

2. เปิด firefox แล้วเข้าไปที่ link https://addons.mozilla.org/firefox/743/

3. คลิกที่ Install Now

4. เมื่อติดตั้งเสร็จแล้วให้ปิด firefox แล้วเปิดขึ้นมาใหม่แล้วลองเข้า http://www.google.co.th/ ดู

จะรู้ได้อย่างไรว่า customizegoogle ได้ถูกติดตั้งแล้ว ก็ให้คลิกที่ Tools >> Extensions ก็จะเจอเองครับ เราควร update มันบ่อยๆ ด้วยน่ะครับ

เดี่ยวผมจะเอา screen shot มาให้ดูละกัน


เมื่อเราเริ่มพิมพ์ตัวอักขระใดๆ ในช่อง search ของ google มันจะ list รายการที่เคยมีคน search หามาแล้วให้เราเลือกเป็นทางเลือกที่ทำให้เราเข้าถึงข้อมุลที่ต้องการได้รวดเร็วยิ่งขึ้น

ความลับของ CustomizeGoogle คือมันได้เอา Google Suggest มาใส่ไว้ใน Firefox เลย ทำให้ทุกครั้งที่เข้า Google จึงเหมือนเราใช้

นอกจากนี้ CustomizeGoogle ยังมี Feature อีกมากมายลองเข้าไปดูในส่วนของ Option ของมันน่ะครับ

หวังว่าคงมีประโยชน์กับเพื่อนๆ น่ะครับ

วันอังคารที่ 29 พฤษภาคม พ.ศ. 2550

มาทำความรู้จักกับ Super Proxy Script (Proxy Loadbalancing) กัน

ข้อมูลสรุปนี้ไม่พร้อมใช้งาน โปรด คลิกที่นี่เพื่อดูโพสต์

บันทึกการติดตั้ง Ubuntu Studio

วันนี้ตัดสินใจลง ubuntu studio บน notebook acer ของเรา
ก็ลงตาม step ครับมั่วๆ เข้าไว้ ติดปัญหาหลังจากลงเสร็จนิดนึง
คือ notebook ของผมมันไม่มี VGA นอก ใช้ intel graphic chip
ที่ติดมากับ notebook เลยทำให้เข้า x-windows ไม่ได้ตอนแรกคิดว่า
ทำอะไรผิดแน่ๆ ลงใหม่ไป 4-5 รอบแล้วชักเซ็งในจิต เลยไปถามพี่ google
ก็ได้คำตอบมาว่า driver default ของมันเป็นการ์ด vesa ก็เลยจัดการโหลด driver ของ intel มาใส่แล้วก็ไขไฟล์ /etc/X11/xorg.conf นิดหน่อยก็เข้า x-windows ได้ดีใจสุดๆ

มาดูวิธีการแก้ปัญหานี้กัน

1. sudo apt-get install xserver-xorg-video-intel

2. sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.org


3. sudo nano /etc/X11/xorg.conf

ในส่วนของ Section ¨Device¨ Identifier ¨Generic Video Card¨ ให้เปลี่ยน ¨vesa¨
เป็น ¨intel¨ และเพิ่มบรรทัด VideoRam 128000 เข้าไปดังตัวอย่างนี้

Section "Device"
Identifier "Generic Video Card"
Driver "intel"
BusID "PCI:0:2:0"
VideoRam 128000
EndSection
บันทึกและออกจาก nano

reboot สัก 1 รอบ
เย้ๆ ได้ x-windows มาใช้แล้ว

original : http://ubuntuforums.org/showthread.php?t=447491

วันจันทร์ที่ 28 พฤษภาคม พ.ศ. 2550

เทคนิคการทำให้เวลาบนเครื่อง Server ของเราเที่ยงตรงเสมอ

ไม่ทราบว่าหลายคนเคยสังเกตกันหรือเปล่าเวลาเราใช้ linux ไปนานๆ
ลองสั่ง date เพื่อดูเวลาจะพบว่าเวลาของเครื่อง Server ของเราเดินไม่ตรงกับเวลาจริงเท่าไหร่ลองเพิ่มคำสั่งใน crontab แบบนี้ดูน่ะครับ

crontab -e

จากนั้นพิมพ์บรรทัดด้านล่างเพิ่มเข้าไป

*/30 * * * * /usr/sbin/ntpdate -u clock.nectec.or.th

ทีนี้ทุกๆ 30 นาทีเครื่องของเราก็จะ synchronize เวลากับ ntp server ของ nectec แน่ใจได้เลยว่า server ของคุณจะมีเวลาที่เที่ยงตรงแน่นอนครับ

Written by mrGilL