server

ส่ง SMS ผ่าน Google calendar ด้วย gcalcli

Google calendar นั้นมีบริการส่ง SMS ไปยังโทรศัพท์มือถือของผู้ใช้ เพื่อแจ้งเตือนกิจกรรม ต่าง ๆ ในปฏิทิน โดยผู้ใช้ต้องยืนยันตัวตนกับ Google ก่อน การส่ง SMS เตือนนั้นจะมีค่าโดยปริยายคือ เตือนล่วงหน้า 10 นาที

ในบทความนี้เราจะสร้าง shell script ที่ใช้ส่ง SMS โดยความต้องการพื้นฐานมีดังนี้

  • ยืนยันตัวตนและหมายเลขโทรศัพท์มือถือกับ Google calendar
  • ติดตั้งโปรแกรม ntpdate เพื่อใช้ปรับเวลาเครื่องให้ตรง
  • ติดตั้งโปรแกรม gcalcli ซึ่งใช้ในการติดต่อกับ Google calendar

ในส่วนการยืนยันตัวตนและหมายเลขโทรศัพท์มือถือนั้น จะไม่กล่าวถึง

เริ่มด้วยติดตั้งโปรแกรม ntpdate และ gcalcli

$ sudo aptitude install ntpdate gcalcli

จากนั้นสร้าง shell script ที่ใช้ส่ง SMS

$ vi sms.sh

บันทึกติดตั้ง WebVZ บน lenny

WebVZ เป็นโปรแกรมจัดการ OpenVZ แบบ web based ตอนนี้ยังทำอะไรไม่ได้มาก แต่ติดตั้งไว้ก็ดี เผื่อทำงานอะไรเล็ก ๆ น้อย ๆ

ทดลองติดตั้ง Xen บน Lenny

Xen เป็นซอฟต์แวร์ที่ใช้ทำ virtualization ในทางทฤษฎีสามารถรัน guest OS ใด ๆ ก็ได้ โดยมีข้อแม้คือ ซีพียูต้องรองรับการทำ virtualization ด้วย แต่ถ้าซีพียูไม่รองรับ ต้องใช้กับ OS ที่ดัดแปลงให้ใช้กับ Xen เท่านั้น

ข้อดีคือ เร็วพอควร และสามารถ swap หน่วยความจำได้ ทำให้ใช้งานได้เหมือนในระบบลินุกซ์ปกติ

ข้อเสียคือ เนื่องจากแยกเคอร์เนลและฮาร์ดแวร์กันอย่างเด็ดขาด จึงทำให้ต้องการฮาร์ดแวร์มากกว่าปกติ และหากหน่วยความจำที่แบ่งให้แต่ละ guest OS ไม่พอ Xen ก็จะสลับหน่วยความจำลงดิสก์ ทำให้ระบบทำงานช้ามาก (ซึ่งจะมีผลกับทุก ๆ โพรเซสที่ยังค้างอยู่ในหน่วยความจำ คือช้าทั้งระบบ)

ทดลองติดตั้ง OpenVZ บน lenny

OpenVZ เป็นซอฟต์แวร์ที่ใช้ทำ virtualization ที่ใช้กับลินุกซ์เท่านั้น มีข้อแตกต่างจาก xen ตรงที่ใช้เพียงเคอร์เนลเดียว

ข้อดีคือ เร็วและพร้อมใช้

ข้อเสียคือ ไม่มีการ swap หน่วยความจำ ถ้าหน่วยความจำเต็ม โพรเซสที่มาทีหลังจะตายหมด

(แต่ก็ยังมีข้อดีในข้อเสีย คือ openvz จะบริหารการสลับหน่วยความจำระหว่าง guest OS อย่างมีประสิทธิภาพ และโพรเซสที่รันอยู่ก่อนที่หน่วยความจำจะเต็ม จะยังคงได้ความเร็วที่เกือบคงที่)

ทำแคชให้ apt ด้วย approx

approx เป็นซอฟต์แวร์ที่ใช้เก็บแพกเกจ deb ที่ apt จะมาเรียกไปติดตั้ง ใครมีเครื่องลินุกซ์ที่ใช้แพกเกจ apt ในหน่วยงานตั้งแต่สองเครื่องขึ้นไป ควรติดตั้งไว้ที่เครื่องเซิร์ฟเวอร์เป็นอย่างยิ่ง

จากการทดลองใช้งานพบว่า ช้ากว่า apt-proxy (ซึ่งช่วงหลังมีปัญหาตายบ่อยมาก) แต่เสถียรกว่าเยอะ ใช้พอร์ต 9999 เป็นพอร์ตเดียวกับ apt-proxy ทำให้ปรับใช้แทน apt-proxy ได้อย่างง่ายดาย

ติดตั้งสแกนเนอร์สำหรับใช้ในเครือข่าย

deiban: ติดตั้งสแกนเนอร์เครือข่าย

ใช้แพกเกจชุด sane ในการทำให้แสกนเนอร์ที่ติดตั้งอยู่ที่เครื่องเซิร์ฟเวอร์ สามารถใช้งานผ่านเครือข่ายได้

ทำที่เครื่องเซิร์ฟเวอร์

สมมุติว่าชื่อ server.example.com
ไอพี 192.168.1.1
ใช้งานเครือข่ายภายใน 192.168.1.0/24
และติดตั้งสแกนเนอร์ไว้แล้ว

apache2: การติดตั้งให้เรียกใช้งานเซิร์ฟเวอร์ภายในจากภายนอก

debian: lenny/etch
package: apache2.2 (2.2.9-10+lenny1/2.2.3-4+etch6)

สมมุติว่าเซิร์ฟเวอร์ภายนอก ชื่อ www.example.com มีการติดตั้ง apache2 ไว้แล้ว และเซิร์ฟเวอร์ภายใน ชื่อ internal.example.com มีการติดตั้ง apache2 ไว้แล้วเช่นกัน ต้องการให้ผู้ใช้ภายนอกเรียกเว็บที่ internal.example.com ได้

ทำที่เครื่องเซิร์ฟเวอร์ภายนอกอย่างเดียว โดยใช้มอดูล proxy_http

# a2enmod proxy
# a2enmod proxy_http
# /etc/init.d/apache2 reload

ติดตั้งชื่อไฟล์ไซต์ใน sites-available ว่า internal

# vi /etc/apache2/sites-available/internal
<VirtualHost *:80>
    ServerAdmin webmaster@internal.example.com
    ServerName internal.example.com
    ProxyRequests Off

    <Proxy *>
        Order Deny,Allow
        Allow from all
    </Proxy>

    ProxyPreserveHost On
    ProxyPass / http://internal.example.com/
    ProxyPassReverse / http://internal.example.com/
</VirtualHost>

เปิดใช้งาน

# a2ensite internal
# /etc/init.d/apache2 reload

เสร็จแล้ว

ถ้าเราตั้งค่า DNS ของภายนอกไว้แล้ว สามารถเรียกจากภายนอกผ่าน internal.example.com ได้

all-in-one tip1: แก้ปัญหา fsck ตอนบูต

to webmaster: ไม่ต้อง publish ก็ได้นะครับ เพราะเป็นความรู้พื้น ๆ (ช่วงนี้ผมห่างเน็ต ค้นอะไรได้ก็ต้องรีบเขียน ไม่มีเวลาคิดมาก)

จากเรื่อง all-in-one ผมแบ่งพาร์ติชั่น /sys1 โดยผูกติดกับ / (root) ไว้ ซึ่งจะทำให้ไม่สามารถยกเลิกการเมานต์ในระหว่างการใช้งานได้
สำหรับเครื่องที่เปิดไว้ตลอด 24 ช.ม.คงไม่มีปัญหาอะไร แต่ถ้าเป็นเครื่องที่ต้องมีการปิดเปิดตามเวลา จะพบปัญหาที่ระบบไฟล์จะทำการตรวจสอบตัวเองเมื่อทำการเมานต์ครบ 30 ครั้ง ซึ่งถ้าพาร์ติชั่นไม่ใหญ่ก็คงไม่เป็นไรนัก เพราะโปรแกรม fsck ทำงานแป๊ปเดียวก็เสร็จ แต่ถ้าเป็นพาร์ติชั่นที่ใหญ่เกิน 200G ขึ้นไปจะเกิดปัญหาการบูตที่นานเกินควร

บันทึกการติดตั้งเซิร์ฟเวอร์เดเบียน etch all-in-one แบบลูกทุ่ง

ควรสงสัยไว้ก่อนว่า ข้อเขียนนี้ต้องมีที่ผิดพลาดแน่นอน หากจะทำตาม ควรมีความรู้เรื่องลินุกซ์พอควรที่จะแก้ปัญหาที่เกิดจากการผิดพลาดในข้อเขียนได้

  • เป็นการบันทึกขั้นตอนการทำงานในระหว่างการเปลี่ยนฮาร์ดดิสก์ของเซิร์ฟเวอร์
  • บางรายการใช้แพกเกจที่มีความสามารถมากไป เรียกว่าขี่ช้างจับตั๊กแตน (บางรายการก็น้อยไป)
  • บางรายการมีแพกเกจอยู่แล้ว แต่ดันมาเขียนสคริปต์เอง (อ้างว่าเพื่อเพิ่มความยืดหยุ่น)
  • เรื่องความปลอดภัยจัดอยู่ในระดับ "ตายดาบหน้า"
  • ทั้งหมดมาจากเพราะภาษาอังกฤษไม่ดีครับ อ่านเอกสารไม่ค่อยเข้าใจ เลยทำเท่าที่ทำได้ครับ

จะติดตั้งเซิร์ฟเวอร์แบบ all-in-one สำหรับใช้ในหน่วยงานเล็ก ๆ โดย

all-in-one 9 (backup cron task)

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

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

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

Syndicate content

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