แสดงบทความที่มีป้ายกำกับ OpenBSD แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ OpenBSD แสดงบทความทั้งหมด

วันพุธที่ 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 &

วันจันทร์ที่ 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