8 ขั้นตอนง่าย ๆ ในการเปลี่ยน desktop ให้เป็น Ubuntu Server


Posted in:
scent's picture

เอาไว้สำหรับเป็นโปรเจคเล็กๆ เล่นยามว่าง ในที่นี้สมมุติว่าคุณมี Ubuntu 7.10 "Gutsy" (เวอร์ชั่น desktop) ติดตั้งในเครื่องแล้วนะ แล้วจะช้าอยู่ใย ลงมือกันเลยดีกว่า

ขั้นตอนที่ 0: จะทำเองหรือเสียตังค์? - จริงๆ แล้วมีวิธีการรันเซิฟเวอร์แอปพริเคชั่นได้หลายวิธี ด้วยสนนราคาที่ไม่แพงนัก เช่น Linode หรือ Bytemark ก็สามารถนำมาทำ "virtual root" ของเซิฟเวอร์ลีนุ๊กซ์ได้ในราคาประมาณ 600 บาทต่อเดือน โดยใช้ลีนุ๊กซ์แมชชีนเช่น User-Mode Linux (UML), Xen, และ VMWare.
แต่ถ้าไม่อยากเสียตังค์ก็เอาเครื่องของเราเองนี้แหล่ะมาทำได้ แต่ต้องเป็นโปรเจคเล็กๆ นะ วิธีการที่จะทำกันต่อจากนี้สามารถนำไปประยุกต์ใช้ได้กับ 'เวอร์ชวลรูทโฮสติ้งเซอร์วิส (virtual root hosting service)' ทั้งนี้เนื่องจากว่ายังไงคุณก็ต้องติดตั้งซอฟแวร์ของเซิฟเวอร์แบบเดียวกัน

ขั้นตอนที่ 1: หาทางเชื่อมต่อกับเซิฟเวอร์ - คุณต้องแน่ใจว่าคุณมี stable IP address และโดเมนเนมที่จะใช้ในการเชื่อมต่อไปยังเครื่องของคุณ คุณอาจต้องคุยกับผู้ดูแลระบบ หรือซื้อโดเมนของคุณเอง มีหลายๆ บริษัทให้บริการจดโดเมนในราคาไม่แพงนัก หรือคุณอาจจะหาโดเมนเนมจากบริษัทที่ให้บริการฟรีก็ได้ ถ้าคุณต้องการทราบไอพีแอดเดรสและโดเมนเนมของคุณเอง ก็สามารถใช้คำสั่งเช่น "ifconfig" และ "nslookup" หรือไปยังเวปไซต์พวก
whatismyip.com และ samspade.com ก็ได้ ถึงตอนนี้เมื่อคุณได้รับไอพีแอดเดรสและโดเมนเนมแล้ว ให้ตั้งโดเมนเนมสำหรับเครื่องของคุณโดยการแก้ไขไฟล์ /etc/hostname:

sudo nano /etc/hostname

แล้วใส่โฮสเนมในบันทัดเดียวกันหมด:

my.domain.name.th

พิมพ์ control-X เพื่อออกมาแล้ว saveไฟล์ คุณอาจเพิ่มข้อมูลอื่นๆ เกี่ยวกับไอพีแอดเดรสและโฮสเนมไปยังไฟล์ /etc/hosts เช่นถ้าไอพีของคุณคือ 123.123.123.123 ให้เพิ่มบันทัดต่อไปนี้ไปยังไฟล์ (โดยการใช้ "sudo nano /etc/hosts"):

123.123.123.123 your.domain.name.th

ขั้นตอนที่ 2: ตั้งพาสเวิร์สให้ยากๆ หน่อย - ถ้าตั้งพาสเวิอร์ดยาวๆ มีทั้งตัวเล็ก ตัวใหญ่ ผสมกับหมายเลข และสัญญลักษณ์ได้จะดีมาก เป็นเรื่องสำคัญมากที่ต้องพยายามทำให้ได้ คุณอาจทำได้ง่ายๆ โดยไปที่ System->Administration->Users and Groups หรือที่ command line (กรณีใช้ Terminal) ให้รันคำสั่ง:

passwd

ตัวเลือกเพิ่มเติม: คุณสามารถตั้งพาสเวิอร์ดสำหรับ bios ของคุณและสำหรับ grub bootloader ใน BIOS ของคุณก็เช่นกันคุณสามารถตั้งลำดับการบูทเครื่องโดยให้ใช้ฮาร์ดไดร์เป็นลำดับแรก เพื่อเป็นการป้องกันไม่ให้คนอื่นเอา CD มาควบคุมระบบของคุณได้
ขั้นตอนที่ 3: ติดตั้งเซิฟเวอร์ SSH - เพื่อที่ว่าคุณจะได้ล๊อคอินไปยังคอมพิวเตอร์ทางไกล ผ่านการเชื่อมต่อแบบ encrypted ได้ ถ้าคุณใช้ command line ของ shell application ของ Terminal คุณสามารถติดตั้งแบบนี้ก็ได้:

apt-get install ssh openssh-server

หรือมิฉะนั้นคุณสามารถใช้ Synaptic package manager เพื่อค้นหา "ssh" และติดตั้ง package เดียวกัน
ตัวเลือกเพิ่มเติม: แก้ไขไฟล์ /etc/ssh/sshd_config เพื่อเปลี่ยนพอร์ตของ ssh ที่ใช้สำหรับเชื่อมต่อ จากค่าปกติที่ 22 เป็นค่าอื่น เปลี่ยนที่บันทัดที่มีคำว่า "Port 22" ทั้งนี้เพราะพอร์ต 22 ง่ายต่อการถูกโจมตี (แต่ยังไงก็ตามที คุณควรจะรัน firewall และหมั่นดูแลระบบให้ทันสมัย และที่สำคัญควร backed up ข้อมูลบนเซิฟเวอร์บ่อยๆ เช่นกัน)

sudo nano /etc/ssh/sshd_config

รีสตาร์ท ssh

sudo invoke-rc.d ssh restart

ทดลองใช้คอมพิวเตอร์เครื่องอื่น เชื่อมต่อไปยังเซิฟเวอร์ของคุณโดยใช้ ssh client (อาทิเช่น "ssh" บน command line หรือ Putty บน
windows เป็นต้น) เช่น ถ้าคุณเปลี่ยนค่าพอร์ตเป็น 789 และ username ของคุณคือ "superman" ดังนั้นคำสั่งสำหรับการเชื่อมต่อคือ:

ssh superman@my.domain.name.th -p789

ขั้นตอนที่ 4: ติดตั้ง LAMP software - Apache 2 webserver, PHP 5,
& MySQL 5 วิธีการติดตั้งแบบง่ายๆ คุณอาจทำโดยใช้ tasksel (บน command line) หรือ Synaptic ในการทำแบบ Synaptic ให้เลือก Edit->Mark
Packages by Task...และเลือก LAMP server และติดตั้ง หรือมิฉะนั้นที่ command line ให้ run

sudo tasksel

แล้วเลือก LAMP server ถ้าคุณไม่ได้ติดตั้ง tasksel ก็ให้ run "sudo apt-get install tasksel" ตอนนี้ก็จะเห็นว่ามีการติดตั้ง Apache, MySQL, และ PHP และควรมีการถามหา root password เพื่อใช้กับ MySQL ก็เช่นเดียวกันควรเลือกพาสเวิร์ดที่ดี ดังที่กล่าวไว้แล้วในขั้นตอนที่ 2 และก็ควรตั้งค่า MySQL ไม่ให้ตอบรับการติดต่อใดๆ
ยกเว้นจากเครื่องของคุณ (local machine) ตัวไฟล์หลักในการจัดการ Apache อยู่ที่:

/etc/apache2/apache2.conf

/etc/apache2/sites-enabled/000-default

ในกรณีที่คุณอยากแก้ไขใดๆ
root folder สำหรับเอกสาร HTML ของ webserver HTML ของคุณคือ:

/var/www

แก้ไขไฟล์ index.html ตัวอย่างเช่นคุณต้องการเปลี่ยนค่า homepage
ให้ตรวจดูเวปเซิฟเวอร์ของคุณที่ http://your.domain.name.th/
ขั้นตอนที่ 5: ติดตั้ง Firewall - อันนี้เป็นสิ่งจำเป็นเช่นเดียวกัน คุณสามารถบล๊อกการติดต่อทั้งหมดจากภายนอกได้ ยกเว้นพอร์ตที่คุณต้องการจะเปิดไว้ เวปเซิฟเวอร์จะใช้พอร์ต 80 และ ssh ใช้ พอร์ต อะไรก็ได้ที่คุณตั้งใน /etc/ssh/sshd_config (ค่าปกติอคือ 22 )

สำหรับ firewall ใน Ubuntu จะมีให้เลือกอยู่ 2 ตัว ถ้าคุณยังคงใช้เครื่องนี้เป็น desktop ต่อไปด้วย คุณอาจใช้ FireStarter เป็น graphical firewall manager แต่ถ้าคุณใช้เครื่องนี้เป็นเซิฟเวอร์อย่างเดียว คุณอาจเลือก Shorewall เพราะคุณสามารถแก้ไขจาก command line (ไม่แน่ใจว่า Firestarter จะสามารถใช้ command line ได้หรือเปล่าไม่เคยลอง) ในการติดตั้ง Shorewall ให้พิมพ์บันทัดต่อไปนี้:

sudo apt-get install shorewall

จากนั้นพิมพ์คำสั่งต่อไปนี้:

cd /usr/share/doc/shorewall/default-config sudo cp interfaces /etc/shorewall/ sudo cp policy /etc/shorewall/ sudo cp rules /etc/shorewall/ sudo cp zones /etc/shorewall/

โดยการใช้คำสั่งในการแก้ไข (เช่น sudo nano หรือ sudo gedit) คุณต้องแก้ไขไฟล์ 4 ไฟล์ ให้เพิ่มบันทัดนี้ก่อนบันทัดสุดท้ายของ /etc/shorewall/interfaces:

net eth0 detect

เพิ่มบันทัดนี้ก่อนบันทัดสุดท้ายของ /etc/shorewall/zones:

net ipv4

คุณจะต้องมีบันทัดที่เขียนว่า "fw firewall" อยู่ใน zones file ให้ใส่บันทัดต่อไปนี้ก่อนบันทัดสุดท้ายของ /etc/shorewall/policy:

fw net ACCEPT net all DROP info all all REJECT info

และเพิ่มบันทัดเหล่านี้ไปยังไฟล์ /etc/shorewall/rules ของคุณหลังจาก SECTION NEW line:

#change "22" to the port you used for ssh if not the default one: ACCEPT net fw tcp 22 ACCEPT net fw tcp www,https

เปลี่ยนจาก 22 ไปเป็นพอร์ตที่คุณจะใช้สำหรับ ssh ให้เอาคำว่า ",https" ออก ถ้าคุณไม่คิดว่าจะติดตั้ง ssh module ใดๆ สำหรับ apache
webserver (เพื่อความปลอดภัยในการทำธุรกรรมซื้อขาย) สุดท้ายแก้ไขไฟล์ /etc/default/shorewall โดยเปลี่ยนบันทัดที่มีคำว่า startup=0 เป็น:

startup=1

คุณสามารถเปิด firewall โดยใช้คำสั่ง:

sudo invoke-rc.d shorewall start

ส่วนตัวเลือกอื่นๆ คุณสามารถผ่านไปยัง invoke-rc.d รวมถึงการ start, stop, และ restart
ขั้นตอนที่ 6: รักษาระบบให้ทันสมัยอยู่เสมอ - Run คำสั่ง
sudo apt-get update sudo apt-get upgrade
เพื่อให้ซอฟแวร์ update สม่ำเสมอ จำเป็นมากทีเดียวเพราะโดยทั่วไปแล้วตัวที่ update จะมีการแก้ไขข้อผิดพลาดด้านความปลอดภัยของระบบ คุณสามารถ run คำสั่งข้างต้นได้ทุกวัน หรือแม้แต่ใช้ crontab ก็ได้ มีเวป สอนการใช้ crontab อยู่หลายๆ เวป
ขั้นตอนที่ 7: หมั่นดูแลตรวจสอบ Site ของคุณ - มีเครื่องไม้เครื่องมือมากมายที่คุณสามารถติดตั้ง และใช้ในการตรวจสอบ site ของคุณเช่น webalizer (apache
statistics), webmin (ตัวนี้ใช้ เป็นweb-based control panel สำหรับเซิฟเวอร์ของคุณ) เป็นต้น ตัว crontab ผสมผสานกับ shell scripts (ใน bash, python, perl, และอื่นๆ) สามารถนำมาใช้ในการส่งอีเมล์ถึงคุณเมื่อเซิฟเวอร์มีปัญหาหรือล่ม หรือคุณอาจสั่งให้รีสตาร์ทอัตโนมัติได้
ขั้นตอนที่ 8: Backup backup และก็ยัง backup นั่นแหล่ะ - คุณควรทำการเก็บ backups ไฟล์บนเซฟเวอร์ของคุณอย่างสม่ำเสมอ คุณอาจ backup ไปยังฮาร์ดไดร์สำรอง หรือรีโมทคอมพิวเตอร์ก็ได้ คุณสามารถตกแต่ง RAID configuration เผื่อว่าการทำไดร์หลายๆ ไดร์จะช่วยเก็บข้อมูลซ้ำๆ กันได้ โดยการ copy และ compress backup ไปยังอีกไดร์ คุณสามารถ run คำสั่งดังต่อไปนี้เช่น:

sudo tar cpzf /media/path/to/backup/folder/my-backup.tar.gz
--exclude=/proc/* --exclude=/lost+found/* --exclude=/dev/*
--exclude=/mnt/* --exclude=/media/* --exclude=/sys/* --exclude=/tmp/*
--exclude=/var/cache/apt/* /

สำหรับในแง่เซิฟเวอร์ จะเป็นการดีถ้าใช้บางอย่างที่เหมือน rsync สามารถจัดแต่งเพื่อใช้ในการ backup อะไรก็ตามที่มีการเปลี่ยนแปลง แม้เพียงครั้งเดียวหลังจากครั้งสุดท้ายที่คุณทำการ back up (incremental backups) โปรดดูตัวอย่างได้ที่:

ควรเรียนรู้การกู้ไฟล์จาก backup ของคุณด้วยเช่นกัน รายละเอียดเพิ่มเติม ดูได้ที่:

แหล่งข้อมูล Quickly Setting Up and Securing an Ubuntu Server

-*- แหล่มเลย

-*-
แหล่มเลย

โอ้ว

โอ้ว เขียนได้สุดยอดมากครับ

เยี่ยมยุท

เยี่ยมยุทธ

ขอบคุณมาก

ขอบคุณมากมาย กำลังสนใจจะเรียนรู้อยู่พอดี

ละเอียดดีแท้

ผมมีคำถามอยู่อย่างหนึ่งครับ
ถ้าหากตอนนี้เรามี dynamic IP ล่ะครับ จะมีคำแนะนำแะไรบ้างเอ่ย? ขอถามท่านผู้ทราบด้วยครับ เพราะว่าตอนนี้เราๆ ท่านๆ ใช้ ADSL กันแพร่หลาย ซึ่งส่วนใหญ่ทั้งหมดจะได้รับ dynamic IP ถ้าจะทำ host เองต้องทำยังงัย
จะขอบคุณมากๆครับ ผม

scent's picture

ไม่แน่ใจน

ไม่แน่ใจนะว่าใช้พวก IP Forwarding จะได้ไหม

Emm_IT's picture

DDNS

ไม่ทราบว่าจะใช้งานร่วมกับ Dynamic DNS ได้ด้วยหรือเปล่าครับ

Noppol Sakulratnasak

Dynamic DNS

Dynamic DNS ใช้ร่วมกันได้ซิ ผมใช้อยู่ครับ shorewall ก็ใช้ดีมากครับ ทำ chroot ด้วยนะครับ

น่าจะมีกา

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

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
  • Allowed HTML tags: <i> <center> <span> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <br> <dt> <dd> <object> <embed> <hr> <img> <blockquote> <b> <u> <del> <div> <p> <table> <tr> <td> <font>

More information about formatting options