สำหรับผู้ใช้ 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 เพื่อเปิดจากเว็บเซิร์ฟเวอร์บนเครื่องตัวเอง
นอกจาก 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 อีกครั้ง
หากต้องการปิด ก็ใช้คำสั่ง apachectl stop
macbook:~ alice$ sudo apachectl stop