การสร้าง virtualhost บน Apache2 web server (2.4.x ขึ้นไป)

ขอเล่าเรื่องการสร้าง virtualhost บน Apache2 web server (2.4.x ขึ้นไป) อย่างง่ายๆ แต่ก็เป็นผลมาจากการเปลี่ยนจาก ubuntu 12.04 server ไปเป็น ubuntu 14.04 server เมื่อเร็วๆนี้ Apache 2.4.x เช่น 2.4.7 ที่มาพร้อม ubuntu 14.04 server จะมีการจัดการเรื่อง Document root ที่แตกต่างจากเวอร์ชั่นที่ต่ำกว่า เช่น Document root จะอยู่ที่ /var/www/html แทนที่จะเป็น /var/www เหมือนเดิม ดังนั้นเมื่อทำ virtualhost จึงต้องมีการวางไดเรกทอรีไว้ที่ /var/www และทำ virtualhost เช่น www.example.com และชี้ documentroot ที่ /var/www/www.example.com มาดูกันครับว่าจะต้องทำอย่างไรบ้าง เริ่มต้นที่หลังจากติดตั้ง ubuntu 14.04 เสร็จแล้ว พร้อมทั้งได้ติดตั้ง packages LAMP หากไม่แน่ใจก็ตรวจสอบด้วยคำสั่ง sudo tasksel ในบทความมีการอ้างถึง editor ที่ใช้แก้ไขไฟล์ชื่อ vi หากไม่คุ้นเคยวิธีใช้ก็ให้เปลี่ยนเป็นคำว่า nano จะเป็น full screen editor ใช้ง่ายกว่า ตรวจสอบว่าเรามีโดเมนเนมแล้ว (check domain name) mama@ubuntu:$ host www.example.com www.example.com is an alias for iserver.example.com. iserver.example.com has address 10.0.100.9 เข้าไปที่ไดเรกทอรี mama@ubuntu:$ cd /var/www/ สร้างไดเรกทอรีชื่อ www.example.com mama@ubuntu:/var/www$ sudo mkdir www.example.com สร้างไฟล์ตัวอย่างของเว็บไซต์ mama@ubuntu:/var/www$ sudo vi www.example.com/index.php มีข้อความเพียง 1 บรรทัด <?php echo “WWW Hello, world!”; ?> ใช้คำสั่งแสดงรายการ จะเห็น mama@ubuntu:/var/www$ ls www.example.com/ index.php ใช้คำสั่งแสดงข้อมูลในไฟล์ จะเห็น mama@ubuntu:/var/www$ cat www.example.com/index.php <?php echo “WWW Hello, world!”; ?> เข้าไปไดเรกทอรีสำหรับจัดการ config site mama@ubuntu:/var/www/html$ cd /etc/apache2/sites-available ใช้คำสั่งแสดงรายการ จะเห็น mama@ubuntu:/etc/apache2/sites-available$ ls 000-default.conf  default-ssl.conf สร้างไฟล์สำหรับ config virtual host ชื่อมี .conf ต่อท้ายด้วย mama@ubuntu:/etc/apache2/sites-available$ sudo cp 000-default.conf www.example.com.conf แก้ไขไฟล์ www.example.com.conf mama@ubuntu:/etc/apache2/sites-available$ sudo vi www.example.com.conf แก้ไขเฉพาะบรรทัดข้างล่างนี้ NameVirtualHost www.example.com:80 <VirtualHost www.example.com:80> ServerName www.example.com ServerAdmin webmaster@localhost DocumentRoot /var/www/www.example.com สั่งให้ apache2 รับ site ใหม่ mama@ubuntu:/etc/apache2/sites-available$ sudo a2ensite www.example.com สั่ง reload apache2 mama@ubuntu:/etc/apache2/sites-available$ sudo service apache2 reload ทดสอบ www.example.com ด้วยคำสั่ง w3m mama@ubuntu:/etc/apache2/sites-available$ w3m http://www.example.com จะเห็นหน้าเว็บเพจ WWW Hello, world! กด

Read More »

Error 0x8007232b or 0x8007007B occurs when you try to activate Windows

ตรวจสอบว่าแจ้ง IP address แล้วหรือไม่ หากยังไม่ด้แจ้งมาสามารถแจ้งได้ที่ http://www.cc.psu.ac.th/complains ตั้งค่า DNS Suffix แล้วหรือไม่ ให้ตั้งค่า DNS Suffix ว่า psu.ac.th หากมีหลายโดเมนก็ให้ psu.ac.th เป็นอันแรก ตั้ง Time zone เป็น GMT+7 แล้วหรือไม่ รอให้มัน activate เองซึ่งปกติจะ activate เองอัตโนมัติทันทีเมื่อข้อ 1-3 ผ่านหมดแล้ว กรณีที่รอหลายวันแล้ว (เกิน 7 วัน) มันก็ยังไม่ activate ให้ตรวจสอบตามข้อถัดไป เปิด cmd ด้วยสิทธิ์ของผู้ใช้ในกลุ่ม administrators ping kms1.psu.ac.th ต้องได้ผลลัพธ์ว่า Pinging kms1.psu.ac.th [192.168.102.167] with 32 bytes of data: Reply from 192.168.102.167: bytes=32 time=1ms TTL=127 Reply from 192.168.102.167: bytes=32 time=3ms TTL=127 Reply from 192.168.102.167: bytes=32 time=1ms TTL=127 Reply from 192.168.102.167: bytes=32 time=1ms TTL=127 Ping statistics for 192.168.102.167:     Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 1ms, Maximum = 3ms, Average = 1ms nslookup -type=all _vlmcs._tcp ต้องได้ผลลัพธ์ว่า _vlmcs._tcp.psu.ac.th   SRV service location: priority       = 0 weight         = 0 port           = 1688 svr hostname   = kms1.psu.ac.th _tcp.psu.ac.th  nameserver = dc5.psu.ac.th _tcp.psu.ac.th  nameserver = dc2.psu.ac.th _tcp.psu.ac.th  nameserver = dc3.psu.ac.th _tcp.psu.ac.th  nameserver = dc7.psu.ac.th _tcp.psu.ac.th  nameserver = dc6.psu.ac.th _tcp.psu.ac.th  nameserver = dc1.psu.ac.th _tcp.psu.ac.th  nameserver = dc4.psu.ac.th kms1.psu.ac.th  internet address = 192.168.102.167 dc1.psu.ac.th   internet address = 192.168.100.59 dc2.psu.ac.th   internet address = 192.168.101.37 dc3.psu.ac.th   internet address = 192.168.128.23 dc4.psu.ac.th   internet address = 192.168.192.28 dc5.psu.ac.th   internet address = 192.168.240.31 dc6.psu.ac.th   internet address = 192.168.224.11 dc7.psu.ac.th   internet address = 192.168.100.97 สั่งคำสั่งต่อไปนี้ cscript

Read More »

อยากได้ linux mint ไปใช้ ต้องทำอย่างไร

หากท่านต้องการแผ่นดีวีดี linux mint เพื่อนำไปทดลองใช้งาน หรือ ติดตั้งลงฮาร์ดดิสก์ สำหรับท่านที่อยู่ต่างประเทศ แนะนำให้ไป download จากเว็บไซต์ http://www.linuxmint.com/ แต่สำหรับพวกเราที่อยู่ใน ม.อ. หรือ ในประเทศไทย สามารถเลือก download ได้ที่ https://licensing.psu.ac.th/ เลือก Search Results for: linux mint เวอร์ชั่นปัจจุบันที่เขียน blog ในวันนี้ เป็นเวอร์ขั่นที่ออกเมื่อ 31 พ.ค. 2557 linux mint 17 อยู่ที่ https://licensing.psu.ac.th/linux-mint-17-qiana-released/ การเลือกแผ่นดีวีดีที่ต้องการ หากต้องการการแสดงผลที่หวือหวา วูบวาบ ก็เลือก cinnamon หากต้องการให้ compat กับเกมส์ Windows ที่จะนำมาลงผ่านโปรแกรม Wine ของ linux ก็เลือก mate หากเครื่องคอมฯมี RAM มากกว่า 4 GB ก็ใช้รุ่น 64 bit ไฟล์ iso ที่จะ Download มีชื่อแบบนี้ linuxmint-17-cinnamon-dvd-32bit.iso linuxmint-17-cinnamon-dvd-64bit.iso linuxmint-17-mate-dvd-32bit.iso linuxmint-17-mate-dvd-64bit.iso การเขียนแผ่นดีวีดี linux mint จากไฟล์ iso เมื่อ download ไฟล์ iso ของ linux mint มาได้แล้ว สำหรับ linux ก็ให้ใช้โปรแกรมสำหรับเขียนแผ่นดีวีดี ชื่อ Brasero จาก Menu > Sound & Video > Brasero > เลือก burn สำหรับ Windows 7, 8, 8.1 คลิกขวาและเลือกคำสั่ง burn นอกจากนี้ ผมยังได้ทำแผ่นพิเศษขึ้นเพื่อแนะนำซอฟต์แวร์โอเพนซอร์สที่น่าใช้และติดตั้งเพิ่มได้จาก linux mint ไม่ได้ไป download จากที่เว็บไหนเลย หากสนใจวิธีทำก็อ่าน เบื้องหลังการทำแผ่น ครับ) หากต้องการ download ไฟล์ iso ของ linux mint ฉบับติดตั้งโปรแกรมเพิ่มแล้ว ที่นี่ครับ http://ftp.psu.ac.th/pub/linuxmint/linuxmint-17-psu-cc-32bit.iso md5sum: ตรวจสอบจากไฟล์ http://ftp.psu.ac.th/pub/linuxmint/linuxmint-17-psu-cc-32bit.iso.md5 และมีของแถมเป็นแผ่นพับ (Bochure) คำแนะนำการใช้แผ่นดีวีดี linux mint http://opensource.cc.psu.ac.th/wiki-opensource/images/b/bb/Bochure-linuxmint-2-for-printing-only.pdf สุดท้าย ผมมีเอกสารแนะนำการใช้งาน linux mint อยู่บ้างที่นี่ครับ http://opensource.cc.psu.ac.th/Linuxmint  

Read More »

การทำแผ่นดีวีดี linux mint ฉบับติดตั้งโปรแกรมเพิ่มแล้ว

ผมแจกฟรีแผ่น DVD linux mint 17 ฉบับติดตั้งโปรแกรมเพิ่ม ที่ห้องโถงอาคารศูนย์คอมพิวเตอร์ ผมก็คิดว่าน่าจะนำความรู้มาเผยแพร่ไว้ตรงนี้ด้วย ลองอ่านดูนะครับ เริ่มต้น ผมก็ไปเอาไฟล์ linuxmint-17-mate-dvd-32bit.iso จากเว็บไซต์ https://licensing.psu.ac.th/linux-mint-17-qiana-released/ ซึ่งไฟล์ที่วางไว้ในเว็บไซต์นี้ก็ไป download มาจากของแท้ที่เมืองนอกนะครับ นำมาติดตั้งเป็น Virtual Machine ในโปรแกรม Oracle VM VirtualBox โดยสร้าง username คือ mint password คือ mint และตั้งให้ auto login จากนั้นก็ปรับแต่งการอัปเดตเวอร์ชั่นให้อัปเดตจากเซิร์ฟเวอร์ในมหาวิทยาลัย (ในเมืองไทย) โดยการแก้ไขที่ไฟล์ official-package-repositories.list ด้วยคำสั่งดังนี้ sudo vi /etc/apt/sources.list.d/official-package-repositories.list โดยเปลี่ยน 2 แห่ง คือ 1.เปลี่ยนจาก archive.ubuntu.com เป็น th.archive.ubuntu.com 2.เปลี่ยนจาก packages.linumint.com เป็น mirrors.psu.ac.th/linuxmint-packages ต่อไปก็ตั้งค่า time zone ดังนี้ Menu > Administration > Time and Date > Click to make changes Time zone: Asia/Bangkok ต้องการให้ผู้ได้รับแผ่นดีวีดีนี้ไปใช้งานได้สะดวก จึงเพิ่มคำสั่งนี้เพื่อให้ไม่ต้องถาม password ทุกครั้งที่จะเพิ่มโปรแกรม sudo sh -c “echo ‘mint ALL=NOPASSWD: ALL’ >> /etc/sudoers” ผู้ใช้งานส่วนใหญ่จะใช้ฟอนต์ภาษาไทย TH SarabanPSK ผมก็ช่วยลงให้ซะเลย sudo wget ftp://ftp.psu.ac.th/pub/thaifonts/sipa-fonts/*ttf -P /usr/share/fonts/truetype/thai ติดตั้งโปรแกรมต่างๆเพิ่มดังนี้ สำหรับแสดงรายชื่อ hardware sudo apt-get install lshw-gtk สำหรับตรวจเช็คสถานะ LAN card sudo apt-get install ethtool สำหรับดึงข้อมูลเว็บเพจมาดำเนินการ sudo apt-get install curl สำหรับใช้งานเบราว์เซอร์ google chrome sudo touch /etc/default/google-chrome แล้วไป download จากเว็บไซต์ของ google อาจทำด้วยคำสั่งข้างล่างนี้ wget -q -O – https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add – sudo sh -c ‘echo “deb http://dl.google.com/linux/chrome/deb/ stable main” >> /etc/apt/sources.list.d/google.list’ sudo apt-get update sudo apt-get install google-chrome-stable ติดตั้งโปรแกรมต่างๆ ผ่านทาง Menu > Software Sources 1. Tuxmath  : เกมส์คิดเลขเร็ว 2. Tuxpaint  : เด็กหัดใช้เมาส์วาดภาพและตัวปั้มหมึก 3. Shutter  : screen capture tool 4. RecordMyDesktop and gtk-recordmydesktop  : บันทึกหน้าจอเป็นวิดีโอ 5. winff  : แปลงชนิดไฟล์ของไฟล์เสียง 6. audacity  : ตัดหรือต่อไฟล์เสียง 7. gparted  : สร้างหรือเปลี่ยนแปลง disk partition 8. openshot  : ตัดหรือต่อวิดีโอ ไฟล์เสียง เพื่อทำเป็นวิดีโอ 9. libavcodec-extra-54 

Read More »

แก้ปัญหา ubuntu server 14.04 เปลี่ยน eth0 เป็น em1

เรื่องมีอยู่ว่า ผมและวิศิษฐ ช่วยกันทำต้นฉบับ PSU12-Sritrang ใหม่เมื่อมี ubuntu 14.04 ออกมาแล้ว เดิมใช้ ubuntu 12.04 มาโดยตลอด ปัญหานี้เกิดขึ้นตั้งแต่ ubuntu เปลี่ยนเวอร์ชั่นเป็น 13.04 แล้ว คือ เมื่อ clone ไปแล้ว บูต server แล้วจะไม่เห็น eth0 เมื่อตรวจสอบด้วยคำสั่ง dmesg | grep eth0 ก็พบว่าบรรทัดที่มีข้อความว่า renamed eth0 to em1 วิศิษฐ ค้นเจอว่า หากต้องการบังคับให้ใช้แบบเก่า คือ ใช้ eth0 จะต้องแก้ไขไฟล์ /etc/default/grub ทำดังนี้ หากใช้ editor vi คล่อง ก็ใช้คำสั่งนี้ sudo vi /etc/default/grub หากไม่คล่อง ก็ใช้ดังนี้ sudo nano /etc/default/grub ในไฟล์ /etc/default/grub ให้หาบรรทัด GRUB_CMDLINE_LINUX_DEFAULT=”” แก้ไขเป็น GRUB_CMDLINE_LINUX_DEFAULT=”net.ifnames=1 biosdevname=0″ จากนั้นให้สั่งคำสั่งนี้ด้วย sudo update-grub เท่าที่ทดสอบผลกับเครื่องที่มีปัญหา สามารถบังคับให้ใช้ eth0 ได้ครับ ยังไม่พบว่าวิธีการนี้จะใช้ไม่ได้เมื่อมีการ update versions ของ ubuntu ยังคงต้องตรวจสอบในเวอร์ชั่นต่อไป   อัปเดตข้อมูล (17 มี.ค. 2559) ใน ubuntu 16.04 server ผมกลับพบว่า คำสั่งนี้ใช้ไม่ได้ GRUB_CMDLINE_LINUX_DEFAULT=”net.ifnames=1 biosdevname=0″ แต่คำสั่งข้างล่างนี้ใช้ได้ GRUB_CMDLINE_LINUX_DEFAULT=”net.ifnames=0″ ทำให้ใช้ eth0 ได้ ซึ่งการกำหนดค่า net.ifnames=0 นี้นำมาจากเอกสารที่อ้างอิง [1] ข้างล่างนี้ ผมเลือกใช้ option ที่ 3   และมีคำอธิบายในเรื่องความเปลี่ยนแปลงในการใช้ชื่อ network interface name ใน [2]   Reference: [1] http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/ [2] https://lists.ubuntu.com/archives/ubuntu-devel/2015-May/038761.html  

Read More »