Category Archive IIS

Byphunsanit

เซ็ต SSL เร็วและฟรีใน 5 นาที

ตั้งแต่ google ใช้ SSL ออกมาเป็นเงื่อนไขในการทำ SEO ทำให้ทุกเว็บต้องมาเปิดใช้ SSL ไม่งั้นอันดับจะตกลง

สามารถขอ SSL ฟรีได้ง่ายๆ โดยใช้บริการของ http://Let’s Encrypt’s เปิดให้ใช้ฟรีหรือจะบริจาคเล็กน้อยตามศรัทธาก็ได้ การติดตั้งง่ายๆ โดย

  • Web Hosting who support Let’s Encrypt จะเป็น host ที่ support อยู่แล้วสามารถเปิดใช้ได้เลยอย่าง hostgator.com
  • ใช้ certbot instructions เลือกว่าใช้ Apache, Haproxy, Nginx, Plesk และ os ที่ใช้อย่าง Arch Linux, CentOS 6, Debian, Fedora, FreeBSD, Gentoo, macOS, OpenBSD 6.0+, openSUSE, RHEL, Ubuntu, Windows มันจะบอกวิธิติดตั้งมาให้ภายใน 5 นาทีเว็บก็ใช้ SSL ได้เลยทุก domain !!!

อย่าง server ผมก็ทำแค่ SSH เข้าไปที่ host แล้วพิมพ์ตาม

sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --apache
sudo certbot certonly --apache

แล้วทดลองเรียกเว็บโดยใช้ SSL เท่านั้นเอง ง่ายจริงๆ

Byphunsanit

IIS: การเตรียม site (พื้นที่) สำหรับเว็บ

บางครั้งก็ต้องเซ็ตให้ server เดียวกันมี domain หลายตัว หรือสร้างเว็บที่มีหลาย port ตัว iis ก็ทำได้เหมือน apache เช่นกัน

  1. สร้าง folder ขึ้นมาใหม่ใน C:\inetpub\wwwroot เช่น C:\inetpub\wwwroot\documentRoot หรือไว้ที่อื่นก็ได้
  2. เซ็ต folder permission ให้ user ที่เหมาะสมสามารถเขียนและแก้ไขไฟล์ได้
  3. เปิดโปรแกรม Internet Information Services (IIS) Manager
  4. คลิกขวาที่ Sites เลือก add website
    Site name
    ให้ใส่ชื่อเว็บไซต์ เช่น panpan UAT
    Application pool:
    เลือก envalument ที่สามารถ run php ได้เช่น PHP 7.3 UAT หรือ DefaultAppPool
    Physical path
    ให้ใส่ path folder ที่สร้างในขั้นตอนที่ 1 หรือชี้ไป folder public เช่น C:\www\panpan_v1_UAT\public
    IP address
    ถ้าไม่ระบุใช้ใช้ ALL Unassigned
    Port
    เลขตั้งแต่ 0 – 65536 ที่นิยมคือ 80 และ 8080
  5. คลิก OK
  6. ใน message box คลิก yes
Byphunsanit

IIS: การตั้ง Virtual Directory

iis เดิมมีเว็บที่เป็น c# อยู่แล้วและไม่สะดวกที่จะเพิ่ม domain name เข้าไปใหม่ จะตั้งเป็น site ให้ใช้อีก port ก็ติด firewall ที่ยอมให้ใช้ port 80 เท่านั้น และเพื่อความปลอดภัย framework อย่าง laravel ไม่ควรวาง folder ให้สามารถเรียกใช้ php ไฟล์อื่นได้นอกจาก /public/index.php จึงเลือกที่ใช้วิธี Virtual Directory คือ การสร้าง folder ใน url ให้ชี้ไปอีก folder ที่อยู่นอก C:\inetpub\wwwroot

การตั้ง Virtual Directory

  1. เปิดโปรแกรม Internet Information Services (IIS) Manager
  2. คลิกขวาที่ site ที่ต้องการ เช่น Default Web Site
  3. Add Virtual Directory
    Alias
    คือ folder จำลอง เช่น punpun_uat
    Physical path:
    คือ path จริง ที่ทำ shortcut ชี้ไปหา เช่น C:\www\punpun_v1_uat
  4. (ไม่จำเป็น) คลิกที่ site หรือ server แล้ว restart
  5. ทดสอบโดยเรียก url เช่น http://localhost/punpun_uat

วิธีนี้จะมีข้อดีคือ

  1. สามารถติดตั้งหลายเว็บ โดยใช้ domain และ port เดียวกันได้
  2. สามารถควบคุมการเข้าถึงไฟล์ที่ไม่ต้องการได้เช่น ถ้าวาง file ของ larave ไว้ใน C:\inetpub\wwwroot ตามปกติ ผู้ไม่หวังดีสามารถเรียกใช้ไฟล์อื่นๆ นอกจากไฟล์ /public/index.php ได้โดยตรงเช่น ไฟล์ php ที่สามารถ upload ไฟล์ได้โดยไม่มีการตรวจสอบสิทธิทำให้ไม่ปลอดภัย
  3. สามารถรัน code เดียวกันโดยใช้ php หลาย version หรือมี config คนละแบบได้โดยใช้วิธี การติดตั้ง PHP หลายเวอร์ชั่น บน IIS
  4. ซ่อน หรือย้าย folder ที่เก็บงานไปไว้ไดร์อื่น
Byphunsanit

การติดตั้ง PHP หลายเวอร์ชั่น บน IIS

การติดตั้ง PHP หลายๆ เวอร์ชั่นบน IIS หรือการติดตั้ง UAT และ production server อยู่ในเครื่องเดียวกัน สามารถทำได้โดยใช้ Handler Mappings

การตั้งค่า Handler Mappings

  1. เปิดโปรแกรม Internet Information Services (IIS) Manager
  2. คลิกที่ site ที่ต้องการ, folder ที่จะให้สามารถ run PHP ได้ หรือที่ชื่อ server ถ้าต้องการให้ ทุก site สามารถ run PHP ได้
  3. คลิก Handler Mappings
    Request path:
    *.php
    Module:
    FastCgiModule ถ้าไม่มีให้เลือก GGI เพิ่มในตัวเลือกการติดตั้ง IIS หรืออ่าน note ในหน้า Using FastCGI to Host PHP Applications on IIS 7
    Executable:
    ใส่ path ชี้ไปที่ php-cgi.exe เช่น C:\Program Files\PHP\v7.2\php-cgi.exe อย่าลืมเปลี่ยนช่องด้านหลังจาก *.dll เป็น *.exe ด้วย
    Name:
    เช่น PHP_via_FastCGI 7.2
  4. คลิก OK
  5. ตอบ Yes
  6. (ไม่จำเป็น) คลิกที่ site หรือ server แล้ว restart
  7. Test
Byphunsanit

การติดตั้ง PHP บน IIS

มีความจำเป็นบางอย่างที่ทำให้ต้องลง PHP ใน Internet Information Services (IIS) แทน apache / xampp ตามปกติ แต่จริงๆ แล้วมันก็ไม่ได้ติดตั้งยากอะไร แค่มีวิธีการที่ต่างไปจากปกติเท่านั้นเอง

ขั้นตอนการติดตั้้ง

  1. download Web Platform Installer มาติดตั้งก่อน
  2. เปิดโปรแกรม Microsoft Web Platform Installer
  3. มุมขวาบนจะมีช่องให้ search หาส่วนติดตั้งที่ต้องการ เช่น PHP 7.4 โดยมีเคล็ดลับคือ ถ้าต้องลง sql server driver ด้วยให้หา Microsoft Drivers for PHP ที่มี version สูงมากที่สุดก่อน เพราะบางครั้งมี PHP version ใหม่มาแล้วแต่ไม่มี sql driver ให้เลือก เมื่อได้ที่ต้องการแล้วให้คลิก add ไว้ก่อน จากนั้นก็ไปหาส่วนที่ต้องการอื่น ๆ ต่อไปเช่น Web Platform Installer ต้องใช้ในการ rewrite url ใน iis
  4. เมื่อได้ครบแล้วคลิก Install
  5. คลิก I Accept
  6. ปิดโปรแกรมเมื่อไม่ต้องการติดตั้งเพิ่มเติมแล้ว

php จะถูกติดตั้งอยู่ใน C:\Program Files\PHP แยกตาม php version เช่น v7.3 โดยจะมี php.ini และ extension ต่างๆ แยกออกมาต่างหาก โดยในบรรทัดล่าง ๆ จะมี [PHP_WINCACHE] หรือ [ExtensionList] บอกตำแหน่งที่เกี่ยวกับ php / zend entension ที่ได้ถูกติดตั้งเอาไว้