MAMP (รวมถึง MAMP Pro) นั้นเป็นเครื่องมือที่ดีสำหรับติดตั้ง local web server บน OSX แต่ปัญหาที่ผมพบกับ MAMP คือกินแรมเยอะ (และใช้งานยุ่งยากด้วย) ซึ่งจริงๆ แล้วเราไม่ต้องมี MAMP ก็รัน web server ในเครื่องได้
จริงๆ แล้ว OSX มี Apache กับ PHP ติดมาด้วยอยู่แล้ว แต่สำหรับ PHP นั้นยังเป็นเวอร์ชั่นเก่าอยู่ ซึ่งเราสามารถลง PHP เวอร์ชั่นล่าสุดได้จาก Homebrew ครับ
Homebrew คือพระเอกของเราครับ ช่วยให้เราลง package สารพัดได้ใน OSX ได้อย่างไม่ยากเย็นนัก (สำหรับผมที่มาจากโลก Ubuntu Homebrew คือเปรียบเสมือนคำสั่ง apt-get
นั่นเอง)
- โพสต์นี้ทดสอบบน OSX 10.8+ นะครับ
Update 27/07/2014 – ทดสอบทั้งบน OSX Mavericks กับ Yosemite Beta แล้ว ได้เหมือนกันครับ
ติดตั้ง Homebrew
รัน command ใน terminal
$ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
ใช้งาน Apache
ตั้งแต่ OSX 10.8 เป็นต้นมานั้น ไม่มีตัวเลือก Web Sharing ให้เลือกใน System Preferences > Sharing แล้ว ซึ่งเราสามารถรัน Apache ได้จาก terminal ครับ
$ sudo apachectl start
ติดตั้ง PHP 5.4
Update 27/07/2014 – ใน homebrew นั้นมี PHP เวอร์ชั่นใหม่ๆ มาตลอด รวมถึง rc ด้วย ลองเช็คผ่าน
brew search php
ดูก่อน สำหรับผมจะเลือกเวอร์ชั่น stable ล่าสุดเสมอครับ
ต่อไปก็ต้องลง PHP ผ่าน Homebrew ครับ สำหรับการลง package ด้วย homebrew นั้นใช้ command brew install <package name>
แต่ถ้าไม่แน่ใจว่า package name
นั้นมีอะไรบ้าง ใช้ command brew search
หาดูก่อนได้ครับ
สำหรับ PHP 5.4 นั้นชื่อ package php54
(ณ วันที่เขียนยังไม่มี PHP 5.5 ใน homebrew ครับ)
เลขเวอร์ชั่นของ PHP อาจจะต่างออกไป ตามเวอร์ชั่นที่เลือกลง โพสต์นี้เขียนตอน PHP 5.4 ครับ
$ brew install php54
รอสักพักจนเสร็จ PHP 5.4 ก็จะถูกติดตั้งไว้ที่
/usr/local/Cellar/php54/5.4.15
Package ที่ติดตั้งผ่าน Homebrew จะอยู่ที่
/usr/local/Cellar
ครับ
ติดตั้ง MySQL
ใช้คำสั่ง brew install
เหมือนเดิม
$ brew install mysql
หลังจาก install เสร็จก็เซ็ต root password ด้วย command
$ mysql_secure_installation
ทำตามขั้นตอนไปเรื่อยๆ จนจบได้เลย
แก้ path ของ PHP สำหรับ Apache
หลังจากลง PHP ด้วย homebrew แล้ว เราก็ต้องบอก Apache ให้โหลด module php5 จากที่ลงใหม่ ไม่ใช่จากของเดิมที่ติดมากับเครื่องครับ
ซึ่งก็คือ เราต้องไปแก้ path ในไฟล์ httpd.conf
ครับ
$ sudo vim /etc/apache2/httpd.conf
หาบรรทัดนี้
LoadModule php5_module libexec/apache2/libphp5.so
แล้วแก้เป็น
LoadModule php5_module /usr/local/Cellar/php54/5.4.15/libexec/apache2/libphp5.so
จากนั้น restart Apache
$ sudo apachectl restart
เซ็ต DocumentRoot
ปกติผมจะเซ็ตให้ directory ~/code
เป็น root directory ของ localhost ครับ (เปรียบเสมือน /var/www/
ใน Ubuntu) ซึ่งก็ต้องไปแก้ path ในไฟล์ httpd.conf
เหมือนเดิม
$ sudo vim /etc/apache2/httpd.conf
หา
DocumentRoot "/Library/WebServer/Documents"
เปลี่ยนเป็น
DocumentRoot "/Users/armno/code" # อย่าลืมเปลี่ยน username เป็นของคุณ
และตรง <Directory>
ก็ต้องเปลี่ยนเป็น path เดียวกันด้วยครับ
<Directory "/Users/armno/code">
สุดท้าย ค้นหา
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
เพิ่ม index.php
เข้าไปก่อน index.html
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
จากนั้น save file แล้วก็ restart Apache อีกครั้งครับ (command เดียวกับข้างบน) พอรัน http://locahost
Apache ก็จะชี้ไปที่ ~/code
เป็น root directory
ทดสอบ
\$ echo "<?php phpinfo();" > ~/code/info.php
แล้วเปิด http://localhost/info.php
ใน browser ก็จะเจอข้อมูล phpinfo
ครับ
เสร็จแล้ว :D
Update - OSX Yosemite
ล่าสุดทดสอบบน OSX Yosemite beta ด้วยการอัพเกรดจาก Mavericks พบว่าต้องเซ็ตค่าในไฟล์ httpd.conf
ใหม่ ส่วน php นั้นต้องลบแล้วก็ลงใหม่ ถึงจะใช้งานได้ ส่วนวิธีการก็เหมือนเดิมทุกอย่างครับ
$ brew uninstall php55
$ brew install php55