server

สุดท้ายเป็นการเก็บกวาดเล็กน้อย
งานที่ทำคือ...

ย้าย 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"
...
สำรองข้อมูลทั้งหมด

แม้จะนอกรายการไปนิดนึง แต่ก็ขอบันทึกไว้เพื่อให้สมบูรณ์อย่างที่ตั้งใจครับ

Taxonomy upgrade extras: 

ทำ 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
Taxonomy upgrade extras: 

ทำ 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
Taxonomy upgrade extras: 

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
Taxonomy upgrade extras: 

ทำ 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
Taxonomy upgrade extras: 

ทำ 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:
Taxonomy upgrade extras: 

ทำ dns server โดยใช้ bind9

จะทำให้สามารถใช้งานได้ทั้งภายใน และภายนอก (ภายนอกไม่ค่อยจำเป็น แต่ติดตั้งไว้เผื่อในอนาคตอาจเพิ่มการ lookup จากเซิร์ฟเวอร์ของเราที่อยู่ภายนอก)
โดยจะแยกไอพีภายในและภายนอกเป็น 2 กลุ่ม
และสร้างกรงขังด้วย (chroot jail)

สมมุติว่า

  • มีโซนภายใน โดเมนหลักเป็น example.com มีชื่อทุกเครื่องในเครือข่าย โดยจะทำ reverse ip ด้วย (คือค้นย้อนกลับจากเลขไอพีได้) และโดเมนรองเป็น example.org มีชื่อเครื่องนี้เครื่องเดียว ไม่ทำค้นย้อน (ทำไม่ได้ เพราะไอพีซ้ำกัน) ทั้งสองโดเมนมีไอพีเป็น 192.168.1.0/24
  • โซนภายนอก โดเมนเป็น example.com และ example.org โดยที่ทุกโดเมนมีไอพีเดียวกัน เพราะถือว่าต่อสาย adsl สายเดียว และแต่ละโดเมนอาจมีหลายชื่อ โดยใช้ CNAME เทียบเอา
Taxonomy upgrade extras: 

ทำเรื่อง dynamic dns client

สมมุติว่าได้สมัครเป็นสมาชิก ddns client ไว้ที่ www.zoneedit.com และ www.everydns.net ไว้เรียบร้อยแล้ว การนี้เราจะใช้ทั้งคู่ในการเป็น name server ให้เรา กันเหนียวไว้ เวลาอันไหนตาย อีกอันจะได้ทำหน้าที่แทน
(อย่าลืมใส่ค่า name server ให้เป็นทั้งคู่ ตอนจดทะเบียนโดเมนด้วย)

จากประวัติพบว่า zoneedit เสถียรและอัปเดตเร็วกว่า เราจึงให้ขึ้นเป็น primary

งานที่ต้องทำคือ

  1. สคริปต์ดูเลขไอพีจากเราเตอร์ หรืออาจให้เริ่มการทำงานเราเตอร์ใหม่
  2. สคริปต์ cron ที่จะตรวจไอพีมาเก็บไว้เป็นระยะ ทุก 5 นาที ถ้าไม่เท่าเก่าจึงสั่งอัปเดต แบบอัปเดตทุกโซน
  3. สคริปต์ cron ที่จะตรวจไอพีซ้ำ จาก dns ภายนอก ทุกครึ่งชั่วโมง ถ้าไอพีไม่ตรงค่อยสั่งอัปเดต เฉพาะโซนที่ไม่ตรง
Taxonomy upgrade extras: 

เรื่อง network

ปรับตั้ง interfaces

# vi /etc/network/interfaces
auto eth0
iface eth0 inet static
    address 192.168.1.3
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255

auto eth1
iface eth1 inet static
    address 192.168.5.3
    netmask 255.255.255.0
    network 192.168.5.0
    broadcast 192.168.5.255
    gateway 192.168.5.1

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

# vi /etc/sysctl.conf
...
net.ipv4.ip_forward=1

ทำให้มีผลทันที

#  echo 1 > /proc/sys/net/ipv4/ip_forward

portsentry + iptables พื้นฐาน

ติดตั้ง

# aptitude install portsentry iptables

สำหรับ portsentry ใช้ค่าปริยายทั้งหมด

สำหรับ iptables จะทำเป็นแบบสคริปต์ ไว้รันเวลาเปิดเครื่อง (จริง ๆ คือ รันตอนอินเทอร์เฟซ eth1 เปิดขึ้นมาใช้งาน)
มีการเพิ่มกฎในการบล็อคไอพีนิดหน่อย ทำให้ลดภาระ web server ในการกรองไอพี

เตรียมไฟล์ข้อมูล

Taxonomy upgrade extras: 

คำจำกัดความ

  • LTSP: Linux Terminal Server Project เป็นโครงการที่พัฒนาระบบเครื่องแม่ข่าย (server) เพื่อให้บริการกับเครื่อง thin clients (เครื่องคอมพิวเตอร์ที่มีประสิทธิภาพต่ำ ทำหน้าที่เป็นเครื่องลูกข่าย) การเรียกใช้โปรแกรมต่าง ๆ จะถูกประมวลผลที่เครื่องแม่ข่าย และส่งข้อมูลมาแสดงผลที่เครื่องลูกข่าย ซึ่งเป็นไปตามชื่อของโครงการคือ terminal ...
Topic: 

Pages

Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้