server
all-in-one tip1: แก้ปัญหา fsck ตอนบูต
Submitted by wd on 4 July, 2008 - 00:12.to webmaster: ไม่ต้อง publish ก็ได้นะครับ เพราะเป็นความรู้พื้น ๆ (ช่วงนี้ผมห่างเน็ต ค้นอะไรได้ก็ต้องรีบเขียน ไม่มีเวลาคิดมาก)
จากเรื่อง all-in-one ผมแบ่งพาร์ติชั่น /sys1 โดยผูกติดกับ / (root) ไว้ ซึ่งจะทำให้ไม่สามารถยกเลิกการเมานต์ในระหว่างการใช้งานได้
สำหรับเครื่องที่เปิดไว้ตลอด 24 ช.ม.คงไม่มีปัญหาอะไร แต่ถ้าเป็นเครื่องที่ต้องมีการปิดเปิดตามเวลา จะพบปัญหาที่ระบบไฟล์จะทำการตรวจสอบตัวเองเมื่อทำการเมานต์ครบ 30 ครั้ง ซึ่งถ้าพาร์ติชั่นไม่ใหญ่ก็คงไม่เป็นไรนัก เพราะโปรแกรม fsck ทำงานแป๊ปเดียวก็เสร็จ แต่ถ้าเป็นพาร์ติชั่นที่ใหญ่เกิน 200G ขึ้นไปจะเกิดปัญหาการบูตที่นานเกินควร
บันทึกการติดตั้งเซิร์ฟเวอร์เดเบียน etch all-in-one แบบลูกทุ่ง
Submitted by wd on 16 March, 2008 - 11:11.ควรสงสัยไว้ก่อนว่า ข้อเขียนนี้ต้องมีที่ผิดพลาดแน่นอน หากจะทำตาม ควรมีความรู้เรื่องลินุกซ์พอควรที่จะแก้ปัญหาที่เกิดจากการผิดพลาดในข้อเขียนได้
จะติดตั้งเซิร์ฟเวอร์แบบ all-in-one สำหรับใช้ในหน่วยงานเล็ก ๆ โดย
all-in-one 9 (backup cron task)
Submitted by wd on 5 March, 2008 - 23:06.สุดท้ายเป็นการเก็บกวาดเล็กน้อย
งานที่ทำคือ...
ย้าย cron ของ apt-proxy มารวมกับการสำรองฐานข้อมูล
จุดประสงค์คือการรวมศูนย์การใช้งาน cron แบบรายวัน ไว้ที่ไฟล์นี้ไฟล์เดียว
ยกเลิก cron ของ apt-proxy
# crontab -e
... #5 0 * * * /etc/init.d/apt-proxy restart >&2 ...
เปลี่ยนมาบรรจุคำสั่งใน d.cron-daily แทน
# vi /usr/local/sbin/d.cron-daily
#!/bin/bash #-----RESTART APT-PROXY------------------------------------ /etc/init.d/apt-proxy restart #-----BACKUP DB-------------------------------------------- ROOT="/sys1/sysb/backupdb" ...
สำรองข้อมูลทั้งหมด
แม้จะนอกรายการไปนิดนึง แต่ก็ขอบันทึกไว้เพื่อให้สมบูรณ์อย่างที่ตั้งใจครับ
all-in-one 8 (samba)
Submitted by wd on 5 March, 2008 - 22:58.ทำ file server ใช้ samba
จะสร้าง 2 แชร์ บรรจุไว้ใน /sys1/sysb/samba แล้วโยงลิงก์ไปที่รูต เป็น /samba เฉย ๆ
สำหรับอ่านอย่างเดียวตั้งชื่อว่า app และ สำหรับอ่านเขียนตั้งชื่อว่า data
Workgroup ตั้งชื่อว่า smbdomain
ตั้งชื่อกลุ่มผู้มีสิทธิ์ใช้งานว่า smbgroup
ผู้คุมระบบชื่อ admin
ผู้ใช้มีชื่อ user1, user2, ... ตามลำดับ
มีพิเศษเพิ่มเติม คือแชร์ที่ทำ ftp ไว้แล้ว จะให้มาแชร์ใน samba ด้วย เพื่อให้ผู้ใช้งานเครือข่ายภายใน สามารถใช้งานได้ง่าย
สร้างโฟลเดอร์ขึ้นมารองรับก่อน
# mkdir -p /sys1/sysb/samba/{app,data}
# ln -sf /sys1/sysb/samba /
# mkdir -p /sys1/sysb/etc/samba
# ln -sf /sys1/sysb/etc/samba /etcติดตั้ง samba
# aptitude install samba
Workgroup/Domain Name: <<<--- smbdomain Modify smb.conf to use WINS settings from DHCP? <<<--- No
สร้างกลุ่มของ samba
# groupadd -g 1100 smbgroup
all-in-one 7 (multisite proftpd)
Submitted by wd on 5 March, 2008 - 22:54.ทำ ftp ใช้ proftpd
ที่ทำเป็น คือใช้ proftpd (ตัวอื่นทำ VirtualHost ไม่เป็น หรืออาจทำยาก)
เนื่องจากเรามี 2 โดเมน คือ example.com และ example.org เราต้องการทำ ftp ทั้งสองโดเมน จึงต้องทำเรื่อง VirtualHost
แต่เนื่องจากระบบ VirtualHost ใน proftpd ไม่เหมือนใน apache2 เสียทีเดียว เนื่องจากเขาไม่ถือชื่อโฮสต์เป็นสำคัญ แต่จะถือไอพีและพอร์ตเป็นตัวจำแนกแทน ดังนั้นถ้าเราต้องการแยกไดเรกทอรีระหว่าง example.com และ example.org เราจะต้องใช้พอร์ตเป็นตัวแยกแทน
สมมุติฐานมีดังนี้คือ
- Anonymous user ให้ไปใช้ที่ /var/ftp/pub/ โดยให้ ftp เป็นเจ้าของ อยู่ในกลุ่ม nogroup ใช้พอร์ตมาตรฐาน คือ 21
- example.com - anonymous ใช้ที่ /var/ftp/example.com/ ให้ user1:comgroup เป็นเจ้าของ ใช้พอร์ต 10021
- example.org - anonymous ใช้ที่ /var/ftp/example.org/ ให้ user2:orggroup เป็นเจ้าของ ใช้พอร์ต 10022
all-in-one 6 (apache2+php5+mysql5+postgresql8)
Submitted by wd on 5 March, 2008 - 22:49.apache2 + mysql5 + php5 + phpmyadmin
เตรียมสร้างไดเรกทอรีข้อมูลให้ apache2 และ mysql
อันนี้ลักไก่ ใช้คำสั่งเดียว แล้วสั่งหยุดบริการเลย
# aptitude install phpmyadmin mysql-server-5.0 # /etc/init.d/apache2 stop # /etc/init.d/mysql stop
ตัวคอนฟิกของ apache2 mysql และ php5 จะเอามาเก็บไว้ที่ /sys1/sysb
# mv /etc/apache2/ /sys1/sysb/etc/ # ln -sf /sys1/sysb/etc/apache2/ /etc # mv /etc/mysql/ /sys1/sysb/etc/ # ln -sf /sys1/sysb/etc/mysql/ /etc # mv /etc/php5 /sys1/sysb/etc/ # ln -sf /sys1/sysb/etc/php5 /etc
ตัวข้อมูล apache2 เอามาเก็บที่ /sys1/sysb
# mv /var/www /sys1/sysb/var/ # ln -sf /sys1/sysb/var/www /var
ตัวข้อมูลของ mysql ไม่สำรองแบบคัดลอกปกติ จึงเอามาเก็บไว้ที่ /sys1/syst แทน
# mkdir -p /sys1/syst/var/lib # mv /var/lib/mysql /sys1/syst/var/lib # mv /var/lib/mysql-cluster /sys1/syst/var/lib # ln -sf /sys1/syst/var/lib/mysql /var/lib # ln -sf /sys1/syst/var/lib/mysql-cluster /var/lib
สั่งให้บริการ
# /etc/init.d/mysql start # /etc/init.d/apache2 start
all-in-one 5 (postfix ส่งโดย gmail+courier)
Submitted by wd on 5 March, 2008 - 22:39.ทำ mail server ใช้ postfix + Courier
หัวข้อนี้สบายมาก เพราะไม่รู้เรื่องเลย ลอกมาอย่างเดียว จาก The Perfect Setup - Debian Etch (Debian 4.0) - Page 5
ของเราแปลงนิดเดียว ตรงที่จะให้กูเกิลเป็นตัวส่งเมลแทน (เรารับเหมือนเดิม แต่ให้กูเกิลส่งให้)
ทีแรกกะว่าจะใช้ exim4 แต่หาเอกสารติดตั้งที่สมบูรณ์ยาก และความนิยมของ postfix มีมากกว่า เลยตัดสินใจใช้อันนี้ครับ
ติดตั้ง
# aptitude install postfix libsasl2 sasl2-bin libsasl2-modules\ libdb3-util procmail # dpkg-reconfigure postfix
General type of configuration? <<<--- Internet Site Where should mail for root go <<<--- [ENTER] Mail name? <<<--- mail.example.com Other destinations to accept mail for? (blank for none) <<<---\ mail.example.com, server1.example.com, localhost.example.com,\ localhost, mail.example.org Force synchronous updates on mail queue? <<<--- No Local networks? <<<--- 127.0.0.0/8, 192.168.0.0/16 Use procmail for local delivery? <<<--- Yes
all-in-one 4.1 (bind9 - zone generator script)
Submitted by wd on 5 March, 2008 - 22:28.ทำ dns server โดยใช้ bind9 - ต่อส่วนขยาย
ท่อนนี้ไม่มีอะไรมาก เพียงแต่ต้องการรวมศูนย์ข้อมูลไว้ในไฟล์เดียว เพื่อต้องการให้ดูง่ายตรวจสอบง่ายและลดโอกาสผิดพลาดในการแก้ไขไฟล์โซนและไฟล์รีเวิร์สโซน จึงสร้างเป็นสคริปต์เล็ก ๆ ขึ้นมาเพื่อใช้อ่านค่าข้อมูลที่เราสร้างเอาไว้ แล้วผลิตไฟล์โซนต่าง ๆ ออกมาให้ครบตามที่เราตั้งไว้
สคริปต์ตั้งชื่อว่า d.bind-genzone เอาไว้ที่ /usr/local/sbin มีดังนี้
# vi /usr/local/sbin/d.bind-genzone
#!/bin/bash
# GENERATE ZONE FILE [AND REVERSE ZONE FILE IF ADD OPTION -b]
# READ DATA FROM DATAFILE IN FORMAT
# zone:ZONENAME:HOSTNAME:SERIAL:IP_ABC
# ns:NAMESERVER1 NAMESERVER2
# mx:MAILSERVER1,RR1 MAILSERVER2,RR2
# IP_D:NAME CNAME1 CNAME2 ...
# ...
# EXAMPLE:
# zone:example.com:server1:43:192.168.1
# ns:ns1 ns2
# mx:mail,10 mail2,20
# 1:server1 ns1 mail www ftp
# 2:ns2
# 101:work1
# 102:work2
# ...
#GLOBAL VAR
TTL=86400
BINDUSER="bind"
BINDGROUP="bind"
#FUNTION
function usage {
cat << EOF
Script to generate zone file and reverse zone file
USAGE: $0 [-b] DATAFILE
OPTIONS:all-in-one 4 (bind9 - internal/external+dynamic update)
Submitted by wd on 5 March, 2008 - 22:23.ทำ dns server โดยใช้ bind9
จะทำให้สามารถใช้งานได้ทั้งภายใน และภายนอก (ภายนอกไม่ค่อยจำเป็น แต่ติดตั้งไว้เผื่อในอนาคตอาจเพิ่มการ lookup จากเซิร์ฟเวอร์ของเราที่อยู่ภายนอก)
โดยจะแยกไอพีภายในและภายนอกเป็น 2 กลุ่ม
และสร้างกรงขังด้วย (chroot jail)
สมมุติว่า
- มีโซนภายใน โดเมนหลักเป็น example.com มีชื่อทุกเครื่องในเครือข่าย โดยจะทำ reverse ip ด้วย (คือค้นย้อนกลับจากเลขไอพีได้) และโดเมนรองเป็น example.org มีชื่อเครื่องนี้เครื่องเดียว ไม่ทำค้นย้อน (ทำไม่ได้ เพราะไอพีซ้ำกัน) ทั้งสองโดเมนมีไอพีเป็น 192.168.1.0/24
- โซนภายนอก โดเมนเป็น example.com และ example.org โดยที่ทุกโดเมนมีไอพีเดียวกัน เพราะถือว่าต่อสาย adsl สายเดียว และแต่ละโดเมนอาจมีหลายชื่อ โดยใช้ CNAME เทียบเอา
all-in-one 3 (dynamic ip script)
Submitted by wd on 5 March, 2008 - 22:05.ทำเรื่อง dynamic dns client
สมมุติว่าได้สมัครเป็นสมาชิก ddns client ไว้ที่ www.zoneedit.com และ www.everydns.net ไว้เรียบร้อยแล้ว การนี้เราจะใช้ทั้งคู่ในการเป็น name server ให้เรา กันเหนียวไว้ เวลาอันไหนตาย อีกอันจะได้ทำหน้าที่แทน
(อย่าลืมใส่ค่า name server ให้เป็นทั้งคู่ ตอนจดทะเบียนโดเมนด้วย)
จากประวัติพบว่า zoneedit เสถียรและอัปเดตเร็วกว่า เราจึงให้ขึ้นเป็น primary
งานที่ต้องทำคือ
- สคริปต์ดูเลขไอพีจากเราเตอร์ หรืออาจให้เริ่มการทำงานเราเตอร์ใหม่
- สคริปต์ cron ที่จะตรวจไอพีมาเก็บไว้เป็นระยะ ทุก 5 นาที ถ้าไม่เท่าเก่าจึงสั่งอัปเดต แบบอัปเดตทุกโซน
- สคริปต์ cron ที่จะตรวจไอพีซ้ำ จาก dns ภายนอก ทุกครึ่งชั่วโมง ถ้าไอพีไม่ตรงค่อยสั่งอัปเดต เฉพาะโซนที่ไม่ตรง












