Thursday, June 4, 2009

Install IIS7 and Config PHP on Vista SP1

  • ก่อนหน้าเนี๋ยไม่ค่อยเข้าใจการลงสักเท่าใหร่ ลอกเค้าทำตามเค้าไม่ลืมหูลืมตาเลยเรา
  • บทความเนี๋ยเขียนขึ้นมาจากความเข้าใจ(ผิดๆ) ด้วยตัวเอง

สิ่งแวดล้อมในการติดตั้ง

  • Windows Vista SP1
  • PHP5.2
  • MySQL 5.1

IIS7
  • การติดตั้ง iis7 ครั้งนี้จะทำให้ใช้ asp.net และ พร้อมสำหรับการคอนฟิก php ด้วยโดยให้เราเปิดไอคอน Computer ด้านล่าง location bar เราจะเจอ "Uninstall or change a program" หรือ ถ้าไม่เจอให้เราเข้าไปหาใน Control Panel (Add/Remove ใน xp นั่นเองเค้าเปลี่ยนชื่อหว่า)
  • หลังจากเปิดขึ้นมาแหละจะได้หน้าจอสำหรับ ถอนโปรแกรม ให้เรามองไปทางด้านซ้ายจะเห็นคำว่า "Turn Windows features on or off" คลิกเลย
  • จากนั้นเราจะได้หน้าต่างสำหรับติดตั้งและถอนคอมโพเน้นของ vista เค้า ให้เรามองหา Internet Information Services (IIS นั่นเอง) ติ๊กเลือกมันซะ ส่วนสิ่งที่เราต้องติดตั้งเพื่อให้ iis7 รัน asp.net และ พร้อมสำหรับ php คือ
IIS7 ต่อ
  • หลังจากเลือกเสร็จเราก็นำแผ่น vista เราใส่ให้เครื่อง หรือใครใช้ iso ก็ mount ให้เรียบร้อยแล้วตามด้วย OK
  • ถ้าจำไม่ผิด หลังจากติดตั้ง คอมโพเน้นเสร็จ ระบบจะให้เรารีบูตด้วยก็ รีบูตซะ จบสำหรับการลง iis7
  • หลังจากติดตั้งเสร็จเราต้องทดสอบซะหน่อยโดย http://localhost จะได้ดังภาพซึ่งพาธของเว็บก็จะอยู่เหมือนใน xp อ่ะนะคือ C:\inetpub\wwwroot
เพิ่มเติม IIS7
  • ให้เราเลือก "asp.net" ก่อนเพื่อนเลยแล้วจะทำให้ iis7 เราใช้ asp.net ได้ และพร้อมสำหรับการคอนฟิก php
  • ส่วนในภาพมีการเลือก CGI ด้วยซึ่งไม่จำเป็นต้องเลือกเพราะเราไม่ใช้ cgi อยู่แล้ว
  • คอมโพเน้นตัวที่ 1 และ 2 สำหรับ asp.net ส่วนตัวที่ 3 และ 4 สำหรับ php
  • "Uninstall or change a program" ที่อยู่ใน Control Panel จะเป็นรูปเนี๋ยเลย
ทริป IIS7
  • ASP.NET (ถ้าเราเลือกตัวนี้ก่อนอันอื่น จะมีการไปเลือกคอมโพเน้นอื่นให้เราอัตโนมัติเลย)
  • .NET Extensibility (ถ้าเราเลือก ASP.NET แล้วอันนี้จะโดนเลือกอัตโนมัติอยู่แล้ว รอบ 1)
  • ISAPI Extensions (ถ้าเราเลือก ASP.NET แล้วอันนี้จะโดนเลือกอัตโนมัติอยู่แล้ว รอบ 2)
  • ISAPI Filters (ถ้าเราเลือก ASP.NET แล้วอันนี้จะโดนเลือกอัตโนมัติอยู่แล้ว รอบ 3 ^^')
  • อธิบายแบบโมเมเอาเอง จริงๆ มันไม่ใช่หรอกมั้ง ^^'

IIS7 + PHP
  • ไปดาวน์โหลด php ซึ่งเราจะติดตั้งแบบใช้ isapi กัน ขั้นแรกเราต้องโหลดแบบ zip package ไม่เอาแบบ PHP x.x.x-x installer เด็ดขาด(เพราะ คอนฟิกไม่เป็น ^^') จากที่นี้ http://www.php.net/downloads.php
  • หลังจากได้ไฟล์ในที่นี้ได้ดาวน์โหลด PHP 5.2.9-2 zip package ไฟล์ที่ได้คือ php-5.2.9-2-Win32.zip ซึ่งข้างใน .zip จะไม่มี folder หลักที่เก็บไฟล์ทั้งหมด ฉะนั้นเราต้องไปสร้าง folder php5 สำหรับเก็บไฟล์ซะในที่นี้จะไปสร้าง C:\php5 หลังจากสร้าง php5 เสร็จเราก็แตกไฟล์ทั้งหมดใน zip file ไปวางที่ php5 ที่เราได้สร้างไว้
  • ใน C:\php5 เราจะพบไฟล์ php.ini-dist หรือ php.ini-recommended เลือกอันใหนก็ได้โดยเปลี่ยนชื่อให้เหลือแค่ php.ini แล้วนำไปวางที่ C:\Windows อีกไฟล์หนึ่งคือ php5ts.dll ให้คัดลอกไปวางไว้ที่ C:\Windows\System32
  • เราจะเริ่มคอนฟิกให้ iis7 รัน php ได้แหละ ให้เราใช้คีย์ลัดเลยดีกว่า กด ปุ่ม Windows + R คือ เรียกหน้าต่าง Run นั่นเอง ^^' จากนั้นพิมพ์ inetmgr จากนั้นให้เรา ดับเบิ้ลคลิกที่ "Handler Mappings" หลังจากนั้นให้เรา มองไปทางขวามั่ง เห็น "Add Script Map..." คลิกซะหน่อย
  • หลังจากคลิก "Add Script Map..." เราจะได้ หน้าต่างเพื่อให้กรอกอาไรก็ไม่รู้ เราก็กรอกประมาณนี้แล้ว Ok เลย
* Request path: *.php, Executable: C:\php5\php5isapi.dll, Name: PHP
  • หลังจากเราโอเคแหละ เราจะเห็น PHP อยู่ใน List นั้นแหละ เสร็จขั้นตอนคอนฟิกแหละมีแค่นี้อ่ะ
  • ทดสอบสิครับสร้างไฟล์ index.php โดยใส่โค้ด <?php phpinfo(); ?>

เพิ่มเติม IIS7 + PHP
  • x.x.x-x คือ หมายเลขเวอร์ชั่น php อ่ะนะ
  • สรุป ทำการ add script และ วาง php.ini ไปที่ C:\Windows ก็น่าจะพอ หรือ เราอาจจะนำ php5ts.dll ไปวางที่ C:\Windows\System32 อีกตัวก็ไม่น่าจะมีปัญหาอะไรทำได้ แต่ไม่เห็นจำเป็นอ่ะ จากที่ทดลองดูยังไม่ได้นำ php5ts.dll ไปวางที่ใหนเลยนะ ทำงานได้ไม่มีปัญหาอ่ะ
  • เราสามารถแก้ไขที่สำหรับเก็บไฟล์ Session ของเว็บ PHP ได้ที่ไฟล์ php.ini ใน system32
  • php5ts.dll ให้คัดลอกไปวางไว้ที่ C:\Windows\System32 อันนี้ไม่แน่ใจว่าต้องทำปะนะ เพราะลองไม่ก็อปไฟล์เนี๋ยไปวาง php ก็รันบน IIS7 ได้นะ


IIS7 + PHP + MySQL

  • สิ่งที่ต้องมีอย่างแรกเลยคือ MySQL ซึ่งได้ทำการติดตั้งอยู่ในระบบของเราอยู่แล้ว
  • คัดลอกไฟล์ libmysql.dll ซึ่งอยู่ใน C:\php5 นั่นแหละไปวางไว้ที่ C:\Windows\System32
  • ใช้ notepad เปิดไฟล์ php.ini ที่อยู่ใน C:\Windows ขึ้นมา แล้วค้นหาบรรทัดนี้เลย extension_dir แก้คำที่อยู่หลังเครื่องหมาย = ให้เป็น "C:\PHP5\ext" ผลลัพธ์ก็จะประมาณนี้ extension_dir="C:\PHP5\ext" อันนี้แค่เป็นการบอกตำแหน่งของ extension ให้ php รู้อ่ะนะว่าจะไปโหลดได้จากพาธนี้แหละ
  • สิ่งที่ต้องแก้อีกอย่างคือหาบรรทัดเนี๋ย ;extension=php_mysql.dll เอาเครื่องหมาย อัฒภาค (semicolon = ";") ออกจากนั้นก็ทำการบันทึกไฟล์ php.ini แล้วก็รีสตาร์ท iis7 สักรอบด้วยคำสั่ง iisreset (สั่งผ่าน command line ง่ายดี)
  • ที่นี้เราจะรู้ได้ไงว่า php สามารถติดต่อกับ mysql ได้แหละ เราก็ดูจาก phpinfo(); ซึ่งก็คือเปิด http://localhost/index.php นั่นเองซึ่งจะมี MySQL อยู่ในรายละเอียดของ php แหละ ถ้าใช้ได้นะ และ เพื่อความแน่ใจว่าใช้ได้ ทดสอบโดยโหลด phpMyAdmin ติดตั้งดูชัวร์ที่สุด

เพิ่มเติม IIS7 + PHP + MySQL
  • เราสามารถเลือกตำแหน่งเก็บไฟล์ session ของ user ที่เรียกใช้ php ได้โดยแก้ไขไฟล์ php.ini บรรทัด session.save_path="C:\php5"\sessions" ซึ่งค่าเริ่มต้น อันนี้จะโดนคอมเม้นไว้อยู่เราต้องเปิดคอมเม้นอ่ะนะ
  • เจอปัญหาตอนลง wordpress (C:\inetpub\wwwroot\wordpress แต่เคยลงก่อนหน้าเนี๋ยไว้ drive d ไม่เห็นมีปัญหาเรื่องสิทธิ์เลยหว่า) บน iis7 นิดหน่อยเรื่อง permission ไม่สามารถ write ไฟล์บางอย่างได้ เราต้องเพิ่มสิทธ์ของ web นั้นโดยคลิกขวาที่ site นั้นเลือก Properties แล้วไปที่แท๊ป Security ซึ่งผู้ใช้ที่เราต้องเพิ่มคือ IUSR และ เพิ่มสิทธิ์การเขียนให้เค้าด้วยหลังจากติดตั้งเสร็จค่อยลดสิทธิ์การเขียน
  • อีกอย่างถ้ามีปัญหาเกี่ยวกับ ssl ให้เราไปโหลด openssl มาติดตั้งแล้วเปิดคอมเม้นนี้ด้วย extension=php_openssl.dll รีสตาร์ท iis สักรอบน่าจะไม่มีปัญหารบกวนเรื่องนี้อีก(มั้ง)
  • เคยไปสังเกตตอนลง appserv ไฟล์ที่เค้าวางหลังจากลงเสร็จสังเกตุเห็นว่า มีการนำไฟล์ php4ts.dll ไปวางที่ C:\Windows\System32 ด้วยแหละที่แปลกคือ เป็น php5 นะที่ตอนเปิด index.php ดูอ่ะ สงสัยจะคนละรุ่นกับที่เราโหลดมา และเห็น libeay32.dll ,libmhash.dll ,libmysql.dll ไปวางไว้ที่ C:\Windows\System32 ให้เลยหว่าถ้าเราลง appserv นะ และแน่นอน php.ini จะไปอยู่ที่C:\Windows โดยอัตโนมัติถ้าเราลง appserv

สุดท้ายแหละ

  • ตั้งแค่คอนฟิก php กับ iis ก็ไม่ต่างกันเลยเรื่องตำแหน่งไฟล์ php.ini , php5isapi.dll , php5ts.dll คือจะวางไว้ใน windows, system32 ตั้งแต่ xp, server 2003 และ vista ก็ยังวางที่เดียวกันหมด
  • ที่ต่างกันก็เห็นจะเป็น interface inetmgr อ่ะ ทำให้การเพิ่ม script php งงๆ ไปบ้างจากของเดิมที่เคยทำมา
  • อีกอย่างผู้ใช้ default รู้สึกว่า IUSR เนี๋ย xp และ server 2003 จะใช้เป็น iusr_ชื่อเครื่อง อาไรประมาณนั้นซึ่งต่างกันอีกจุดอยู่นะ ถ้าจำไม่ผิด
  • อีกเรื่องจริงๆ บน Windows 7 ก็ติดตั้งประมาณนี้แหละ
  • ทำตามนี้รัน php ได้บน windows vista, 7 32 bit แน่นอน
  • แต่ 64 bit จะมีปัญหานะ

เกี่ยวข้อง

อ้างอิง

No comments:

Post a Comment

Popular Posts