เปิดใช้ Apache, PHP เว็บเซิร์ฟเวอร์บน Mac OS X

สำหรับผู้ใช้ Mac ที่เป็นเว็บโปรแกรมเมอร์ สามารถใช้เครื่อง Mac ของคุณ รันเป็นเว็บเซิร์ฟเวอร์เพื่อใช้เป็นเครื่องพัฒนาและทดสอบเว็บโปรแกรมเช่น php ได้เลย

Mac OS X ตั้งแต่เวอร์ชัน 10.0 เป็นต้นมา จะมี Apache Web Server ติดตั้งมาด้วย เพียงแต่อาจไม่ได้รันหรือเปิดการใช้งานไว้

ลองมาดูการเปิดใช้งานเว็บเซิร์ฟเวอร์ขึ้นมาบนเครื่อง Mac รวมทั้งคอนฟิกให้สามารถเขียนโปรแกรมภาษา php ได้ด้วย

หมายเหตุ ในที่นี้ทดสอบบน MacBook Pro ที่ติดตั้ง OS X Yosemite (Version 10.10.1)

เปิดโปรแกรม Terminal (Finder -> Applications -> Utilities -> Terminal)

ใช้คำสั่ง httpd -V (V ตัวพิมพ์ใหญ่) เพื่อดูเวอร์ชันและคอนฟิกของ Apache ที่ติดตั้ง

macbook:~ alice$ httpd -V
Server version: Apache/2.4.9 (Unix)
Server built:   Sep  9 2014 14:48:20
Server's Module Magic Number: 20120211:31
Server loaded:  APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_FLOCK_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/usr"
 -D SUEXEC_BIN="/usr/bin/suexec"
 -D DEFAULT_PIDLOG="/private/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"

ใช้ sudo เพื่อรันคำสั่ง apachectl เพื่อรันเว็บเซิร์ฟเวอร์

macbook:~ alice$ sudo apachectl start 
Password:

หมายเหตุ
– การใช้คำสั่ง sudo คือการรันคำสั่งด้วยสิทธิ์ root หรือ administrator ถ้าไม่เคยเข้ามาก่อน หรือใช้นานกว่า 5 นาทีแล้ว จะต้องใส่รหัสผ่าน (Password) ของผู้ใช้เอง
– ใน Mac OS X ผู้ที่จะใช้ sudo ได้ ต้องเปิด [x] Allow user to administer this computer ในหน้า Users & Groups (System Preferences -> Users & Groups)

ใช้คำสั่ง ps เพื่อดูโปรเซส httpd

macbook:~ alice$ ps -ef | grep httpd
    0  1385     1   0  3:48PM ??         0:00.05 /usr/sbin/httpd -D FOREGROUND
   70  1386  1385   0  3:48PM ??         0:00.00 /usr/sbin/httpd -D FOREGROUND

ไฟล์คอนฟิกของ Apache ที่ติดตั้งมาโดยดีฟอลต์ของ Mac OS X จะอยู่ที่ /private/etc/apache2/httpd.conf

ดูในบรรทัดคอนฟิก DocumentRoot เพื่อดูไดเร็กทอรีหลักในการเขียนเว็บ

macbook:~ alice$ sudo vi /private/etc/apache2/httpd.conf
...
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
...

ลองดูไฟล์ใน DocumentRoot

macbook:~ alice$ cd /Library/WebServer/Documents/
macbook:Documents alice$ ls -l 
total 72
-rw-r--r--  1 root  wheel   3726 Sep 10 05:11 PoweredByMacOSX.gif
-rw-r--r--  1 root  wheel  31958 Sep 10 05:11 PoweredByMacOSXLarge.gif
-rw-r--r--  1 root  wheel     45 Jun 12  2007 index.html.en

แก้ไขไฟล์ index.html.en โดยเพิ่มการแสดงรูป PoweredByMacOSXLarge.gif

macbook:Documents alice$ sudo vi index.html.en
<html>
<body>
<h1>It works!</h1>
<img src="PoweredByMacOSXLarge.gif">
</body>
</html>

หมายเหตุ ปกติแล้วถ้าไม่ได้ระบุชื่อไฟล์ในพาธ เว็บเซิร์ฟเวอร์จะหาไฟล์ index.html มาแสดงผล แต่ในตัวอย่างข้างบน เซิร์ฟเวอร์สามารถดึงไฟล์ index.html.en มาแสดงได้ด้วย เป็นเพราะคุณสมบัติของ mod_negotiation ของ Apache Web Server เพื่อให้หน้าเว็บแสดงผลได้หลายภาษา

ลองใช้ browser โดยระบุที่อยู่เว็บเป็น http://localhost เพื่อเปิดจากเว็บเซิร์ฟเวอร์บนเครื่องตัวเอง

m-01

นอกจาก Apache แล้ว ใน Mac OS X ยังมี php ติดตั้งมาโดยดีฟอลต์ด้วย

ดูเวอร์ชันของ php และโมดูลที่ติดตั้งมา ค่อนข้างครบถ้วนสำหรับการพัฒนาโปรแกรมเลยทีเดียว

macbook:~ alice$ php -v
PHP 5.5.14 (cli) (built: Sep  9 2014 19:09:25) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies

macbook:~ alice$ php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dba
dom
ereg
exif
fileinfo
filter
ftp
gd
hash
iconv
json
ldap
libxml
mbstring
mysql
mysqli
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
Reflection
session
shmop
SimpleXML
snmp
soap
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tidy
tokenizer
wddx
xml
xmlreader
xmlrpc
xmlwriter
xsl
zip
zlib

[Zend Modules]

หากต้องการเปิดให้เขียน php บนเว็บเซิร์ฟเวอร์ได้ด้วย ต้องแก้ไขไฟล์ httpd.conf โดยเอาเครื่องหมาย # ออกหน้าบรรทัด LoadModule php5_module

macbook:~ alice$ sudo vi /private/etc/apache2/httpd.conf
...
LoadModule php5_module libexec/apache2/libphp5.so
...

ใช้ apachectl รีสตาร์ตเว็บเซิร์ฟเวอร์ เพื่อให้คอนฟิกใหม่มีผล

macbook:~ alice$ sudo apachectl restart

สร้างไฟล์ test.php

macbook:~ alice$ cd /Library/WebServer/Documents/
macbook:Documents alice$ vi test.php
<?php
print '<img src="PoweredByMacOSX.gif">';
phpinfo();
?>

ลองเปิดบน browser อีกครั้ง

m-02

 

หากต้องการปิด ก็ใช้คำสั่ง apachectl stop

macbook:~ alice$ sudo apachectl stop

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.