ติดตั้ง LAMP Server บน Linux Mint 13

LAMP Server เป็นชื่อเรียกสั้นๆ ของ Linux + Apache + MySQL + PHP ครับ สำหรับบน Windows เราเรียกกันว่า WAMP (Windows + Apache + MySQL + PHP) ซึ่งปกติที่เราใช้กันก็ไม่พ้น AppServ หรือ XAMPP อะไรพวกนี้ ซึ่งเราเพียงแค่โหลดตัวติดตั้งมา และติดตั้งมันลงไป ก็พร้อมใช้งาน

สำหรับบน Linux นั้นอาจจะไม่มีตัวติดตั้งสำเร็จรูปแบบบนวินโดวส์ (ผมเคยเจอก็เป็นลักษณะของ shell script) แต่ก็ยังคงสามารถติดตั้งได้ผ่านการลงแพ็คเกจแต่ละตัวลงไปเอง พร้อมกับคอนฟิกเพิ่มเติมนิดหน่อยครับ วันนี้เลยจะพาไปดูการติดตั้ง LAMP บน Linux Mint 13 กันครับ (ลีนุกซ์สายพันธุ์ Debian อื่นๆ เช่น Debian หรือ Ubuntu ก็ใช้วิธีไม่ต่างกันนัก)

ติดตั้ง Apache2

แพ็คเกจที่เราจะต้องติดตั้งก็คือแพ็คเกจ apache2 ครับ เราสามารถค้นหาใน Software Manager ได้เลย

หรือสามารถติดตั้งผ่าน Terminal ก็ได้เช่นกัน ด้วยคำสั่ง

sudo apt-get install apache2

Apache 2 ไม่ต้องคอนฟิกอะไรมากครับ เมื่อติดตั้งเสร็จสามารถเปิดเบราเซอร์และลองเข้า http://localhost ดูได้เลย ก็สมควรจะเจอหน้าทดสอบของ Apache แล้วครับ

แก้ไข Document root ของ Apache2

เรื่องน่ารำคาญอย่างหนึ่งของ Apache2 หลังจากที่เราติดตั้งลงไปใหม่ๆ ก็คือ Document root ของมันจะไปอยู่ที่ /var/www ครับ ซึ่งเราจำเป็นจะต้องเป็น root หรือใช้คำสั่ง sudo ทุกครั้งที่ต้องการแก้ไขไฟล์ในนั้น ซึ่งไม่ค่อยจะน่ารื่นรมย์สักเท่าไหร่นัก ดังนั้นเราจึงต้องแก้ให้ Document root ไปอยู่ในไดเรคทอรี่ที่เรียกใช้ได้สะดวกๆ นั่นคือใน home ของเรานั่นเองครับ

แต่ละ User บนลีนุกซ์ มักจะมี home directory ของตัวเองอยู่ใน /home/<username> (เช่นของผมที่ใช้ user ว่า jirayu ก็จะเป็น /home/jirayu หรือถ้าใช้ user ว่า xxx ก็จะอยู่ใน /home/xxx) ดังนั้นผมจึงจะสร้างไดเรคทอรี่ /home/jirayu/www เอาไว้ เพื่อใช้เก็บไฟล์สำหรับเว็บไซต์ครับ เอาล่ะ เปิด home แล้วไปสร้างโฟลเดอร์ www กันซะ

จากนั้นก็ให้ไปแก้ไขไฟล์ /etc/apache2/sites-enabled/000-default ครับ ซึ่งต้องอาศัยสิทธิ์ของ root ในการแก้ไข ถ้าผ่าน terminal เราก็ใช้คำสั่งอย่างเช่น

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

หรือ

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

ในการแก้ไขได้ในทันที หรือถ้าผ่าน File Manager อย่าง Nautilus ก็เข้าไปที่ File System > etc > apache2 > sites-enabled และคลิกขวาที่ไฟล์ 000-default?และเลือก Open as administrator

ให้เราแก้ไข directory สองจุด คือตรง

DocumentRoot /var/www

และ

<Directory /var/www/>

ให้ตรงกับไดเรคทอรี่ใหม่ที่สร้างไว้ เช่น

DocumentRoot /home/jirayu/www

และ

<Directory /home/jirayu/www/>

เสร็จเรียบร้อยให้เซฟเอาไว้ และลองไปก็อปไฟล์ /var/www/index.html ไปไว้ที่ /home/<username>/www ครับ แล้วจะลองแก้ไขไฟล์ index.html ให้ข้างในต่างจากเดิมบ้างก็ได้ (เพื่อจะได้เห็นความต่าง) จากนั้นให้ restart apache2 หนึ่งรอบ ผ่านคำสั่ง

sudo service apache2 restart

เรียบร้อยแล้วก็เปิดเบราเซอร์ขึ้นมา และเปิดไปที่ http://localhost เหมือนเดิม ถ้าไม่มีอะไรผิดพลาดก็ควรจะขึ้นหน้า index.html ของเราใน ~/www เป็นที่เรียบร้อยแล้วครับ

จากนี้จะของเรียก /home/<username>/www ว่า ~/www นะครับ เนื้องจากบนลีนุกซ์ ไดเรคทอรี่ ~ คือช็อตคัทเข้าไปยัง home directory ของเราครับ เช่นถ้าผมสั่ง cd ~ มันก็จะไปโผล่ที่ /home/jirayu นั่นเอง

ติดตั้ง PHP

แพ็คเกจต่อมาที่เราจะต้องติดตั้งก็คือแพ็คเกจเกี่ยวกับ PHP ครับ ในส่วนนี้เราต้องการ 2 แพ็คเกจ นั่นก็คือ php5 และ libapache2-mod-php5 และเช่นเคยว่าสั่งสองแพ็คเกจนี้สามารถหาเอาได้ Software Manager ครับ หรือพิมพ์คำสั่งติดตั้งลงไปว่า

sudo apt-get install php5 libapache2-mod-php5

เมื่อติดตั้งเสร็จ เราสามารถสร้างไฟล์ php เพื่อทดสอบได้ครับ ให้ลองสร้างไฟล์ phpinfo.php ขึ้นมา และใส่ข้างในให้มีโค๊ดดังนี้

<?
echo "DocRoot: ".$_SERVER['DOCUMENT_ROOT'];
echo "<hr>";
phpinfo();
?>

เรียบร้อยให้เซฟเอาไว้ใน ~/www และเมื่อเปิดเบราเซอร์ไปที่ http://localhost/phpinfo.php ก็ควรจะเจอหน้าตาประมาณนี้ครับ

ติดตั้ง MySQL

มาถึงส่วนสุดท้าย (แต่อาจไม่ท้ายสุด) ของการติดตั้ง LAMP กันครับ นั่นคือ MySQL ครับ ในขั้นตอนนี้จะใช้แพคเกจ 3 ตัวด้วยกัน นั่นคือ mysql-server, libapache2-mod-auth-mysql, และ php5-mysql ครับ ทั้งสามแพ็คเกจนี้สามารถหาได้จากใน Software Manager เช่นเคย หรือสามารถติดตั้งผ่าน Terminal ก็ได้เช่นกัน โดยเราจะแบ่งการติดตั้งออกเป็น 2 ขั้นตอนครับ คือการติดตั้ง mysql-server และการติดตั้ง libapache2-auth-mysql กับ php5-mysql

เริ่มด้วยการติดตั้ง MySQL ผ่านคำสั่ง

sudo apt-get install mysql-server

อย่างไรก็ตาม ในขั้นตอนติดตั้ง mysql-server ผมยังไม่เคยลองติดตั้งผ่าน Software Manager จึงไม่ทราบว่ามันจะขึ้นมาให้ตั้งรหัสผ่านของ root เหมือนอย่างการติดตั้งผ่าน Terminal ซึ่งถ้าหากว่ามันไม่ขึ้นมาให้ตั้งรหัสผ่าน เราสามารถตั้งรหัสผ่านได้เองครับ โดยขึ้นแรกให้เปิด Terminal ขึ้นมา และเรียกใช้ mysql

mysql -u root

เสร็จแล้วมันจะขึ้นพรอมท์ mysql> มาให้ครับ ให้เราพิมพ์คำสั่งต่อไปนี้ลงไป (และอย่าลืม ; ปิดท้ายนะครับ)

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('รหัสผ่านที่ต้องการ');

ก็เป็นอันเสร็จขั้นตอนการตั้งรหัสผ่านให้ root จากนั้นเราสามารถพิมพ์ quit หรือปิดหน้าต่าง Terminal ออกมาได้เลยครับ

ขั้นตอนต่อไปคือการติดตั้ง libapache2-auth-mysql และ php5-mysql ซึ่งสามารถหาได้ใน Software Manager เช่นเคย หรือผ่าน Terminal ด้วยคำสั่งต่อไปนี้

sudo apt-get install libapache2-mod-auth-mysql php5-mysql

เมื่อติดตั้งเรียบร้อย ก็ให้ทำการ restart apache2 สักรอบครับ

sudo service apache2 restart

เราสามารถทดสอบว่า MySQL ใช้งานได้หรือยัง ด้วยการลองต่อกับฐานข้อมูลดูครับ ให้เปิดไฟล์ phpinfo.php ของเรากลับขึ้นมา และใส่โค๊ดเหล่านี้ลงไปแทนของเดิม

<?
$db['host'] = "localhost";
$db['user'] = "root";
$db['pass'] = "รหัสผ่านที่ตั้งไว้";

$connect = mysql_connect($db['host'], $db['user'], $db['pass']);

if($connect){
	echo "Database is now connected";
}else{
	echo "Database connection fail";
}
?>

หากไม่มีปัญหาอะไร ก็ควรจะขึ้นว่า Database is now connected ดังภาพครับ

ถึงตอนนี้ ทุกอย่างก็พร้อมใช้งานแล้วครับ ขาดก็เพียงแต่ phpMyAdmin ซึ่งผมจะเขียนให้อีกทีในภายหลังครับ (หรือไม่ก็สามารถหาวิธีติดตั้ง phpMyAdmin บนลีนุกซ์ได้จากในกูเกิลครับ)

และถ้าหากใครต้องการลองทำโดเมนหลอกๆเอาไว้ในเครื่องตัวเองเพื่อทดสอบหลายๆเว็บ (เช่นทำ wordpress.loc ไว้สำหรับทดสอบเวิร์ดเพรส และทำ drupal.loc ไว้สำหรับทำสอบดรูปอล) สามารถตามไปอ่านได้ในบทความนี้เลยครับ

ปล.ไฟล์ v-host ของ Apache2 บน debian จะเก็บเอาไว้ที่ /etc/apache2/sites-enable ครับ ลองดูไฟล์ 000-default เป็นตัวอย่างได้เลย (บทความในตัวอย่างเป็นการทำบน Windows ครับ เดี๋ยวไว้ว่างๆจะเขียนเวอร์ชั่นลีนุกซ์ให้อีกทีนะครับ)

Posted by jirayu

WordPress Developer ที่พอมีประสบการณ์อยู่บ้าง วันไหนไม่ทำงานอยู่บ้านว่างๆ ก็นั่งเลี้ยงแมว

Leave a Reply

Your email address will not be published. Required fields are marked *