ติดตั้ง Apache, PHP, MySQL บน OSX แบบไม่ง้อ MAMP

Published on

MAMP (รวมถึง MAMP Pro) นั้นเป็นเครื่องมือที่ดีสำหรับติดตั้ง local web server บน OSX แต่ปัญหาที่ผมพบกับ MAMP คือกินแรมเยอะ (และใช้งานยุ่งยากด้วย) ซึ่งจริงๆ แล้วเราไม่ต้องมี MAMP ก็รัน web server ในเครื่องได้

จริงๆ แล้ว OSX มี Apache กับ PHP ติดมาด้วยอยู่แล้ว แต่สำหรับ PHP นั้นยังเป็นเวอร์ชั่นเก่าอยู่ ซึ่งเราสามารถลง PHP เวอร์ชั่นล่าสุดได้จาก Homebrew ครับ

Homebrew คือพระเอกของเราครับ ช่วยให้เราลง package สารพัดได้ใน OSX ได้อย่างไม่ยากเย็นนัก (สำหรับผมที่มาจากโลก Ubuntu Homebrew คือเปรียบเสมือนคำสั่ง apt-get นั่นเอง)

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 หาดูก่อนได้ครับ

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

installed php 5.4

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 ครับ

phpinfo

เสร็จแล้ว :D

Update - OSX Yosemite

ล่าสุดทดสอบบน OSX Yosemite beta ด้วยการอัพเกรดจาก Mavericks พบว่าต้องเซ็ตค่าในไฟล์ httpd.conf ใหม่ ส่วน php นั้นต้องลบแล้วก็ลงใหม่ ถึงจะใช้งานได้ ส่วนวิธีการก็เหมือนเดิมทุกอย่างครับ

$ brew uninstall php55
$ brew install php55

Share

(Edit on GitHub)