Chúng tôi có thể lưu trữ trang web PHP trên IIS không?

Bài viết này mô tả cách định cấu hình mô-đun FastCGI và PHP để lưu trữ các ứng dụng PHP trên IIS 7 trở lên. QUAN TRỌNG. Bài viết này cung cấp hướng dẫn

12/05/2007

f1143e47-6a11-4429-b8e6-e106661a7187

/learning/application-frameworks/install-and-configure-php-applications-on-iis/using-fastcgi-to-host-php-applications-on-iis

tác giả nội dung

Sử dụng FastCGI để lưu trữ các ứng dụng PHP trên IIS 7

của Ruslan Yakushev

Bài viết này mô tả cách định cấu hình mô-đun FastCGI và PHP để lưu trữ các ứng dụng PHP trên IIS 7 trở lên

[. QUAN TRỌNG]. loại hình ảnh = "biểu tượng" nguồn = "using-fastcgi-to-host-php-applications-on-iis/_static/image2. gif". Bài viết này hướng dẫn cách cài đặt và sử dụng thành phần FastCGI trên Windows Server 2008 và Windows Vista SP1. SP1 được yêu cầu trên Windows Vista

Tổng quan

Mô-đun FastCGI trong IIS cho phép các khung ứng dụng phổ biến hỗ trợ giao thức FastCGI được lưu trữ trên máy chủ Web IIS theo cách đáng tin cậy và hiệu suất cao. FastCGI cung cấp giải pháp thay thế hiệu suất cao cho Giao diện cổng chung [CGI], đây là cách tiêu chuẩn để giao tiếp các ứng dụng bên ngoài với máy chủ Web vốn là một phần của bộ tính năng IIS được hỗ trợ kể từ lần phát hành đầu tiên

Các chương trình CGI là các tệp thực thi được máy chủ Web khởi chạy cho mỗi yêu cầu để xử lý yêu cầu và tạo các phản hồi động sau đó được gửi lại cho máy khách. Vì nhiều khung trong số này không hỗ trợ thực thi đa luồng, CGI cho phép chúng thực thi đáng tin cậy trên IIS bằng cách thực hiện chính xác một yêu cầu cho mỗi quy trình. Thật không may, nó cung cấp hiệu suất kém do chi phí khởi động và tắt quy trình cho mỗi yêu cầu cao

FastCGI giải quyết các vấn đề về hiệu suất vốn có trong CGI bằng cách cung cấp một cơ chế để tái sử dụng lặp đi lặp lại một quy trình cho nhiều yêu cầu. Ngoài ra, FastCGI duy trì khả năng tương thích với các thư viện không an toàn theo luồng bằng cách cung cấp một nhóm các quy trình có thể tái sử dụng và đảm bảo rằng mỗi quy trình chỉ xử lý một yêu cầu tại một thời điểm

Kích hoạt Hỗ trợ FastCGI trong IIS

Windows Server 2008

Chuyển đến Trình quản lý máy chủ> Vai trò> Thêm dịch vụ vai trò. Trên trang Chọn dịch vụ vai trò, chọn hộp kiểm CGI. Điều này cho phép cả dịch vụ CGI và FastCGI

WinVista SP1

Chuyển đến Bảng điều khiển> Chương trình và Tính năng> Bật hoặc tắt các tính năng của Windows. Trong hộp thoại Tính năng của Windows, chọn hộp kiểm CGI. Điều này cho phép cả dịch vụ CGI và FastCGI

loại hình ảnh = "biểu tượng" nguồn = "using-fastcgi-to-host-php-applications-on-iis/_static/image2. gif". QUAN TRỌNG. Cài đặt Bản cập nhật cho Mô-đun FastCGI

Bản cập nhật cho mô-đun IIS FastCGI khắc phục một số sự cố tương thích đã biết với các ứng dụng PHP phổ biến. Cài đặt bản cập nhật từ một trong các vị trí sau

  • Cập nhật cho Windows Server 2008
  • Cập nhật cho phiên bản Windows Server 2008 x64
  • Cập nhật cho Windows Server 2008 cho các hệ thống dựa trên Itanium
  • Cập nhật cho Windows Vista SP1
  • Bản cập nhật cho Windows Vista SP1 cho Hệ thống dựa trên x64

Cài đặt gói quản trị cho IIS

[. LƯU Ý] Bước này là tùy chọn

Trong số các tính năng hữu ích khác, Gói quản trị cho IIS có giao diện người dùng thuận tiện để định cấu hình cài đặt FastCGI. Gói quản trị có thể được cài đặt từ các vị trí sau

  • Gói quản trị cho IIS 7 trở lên - x86
  • Gói quản trị cho IIS 7 trở lên - x64

Cài đặt và cấu hình PHP

Bạn nên sử dụng bản dựng PHP an toàn không theo luồng với IIS FastCGI. Bản dựng PHP an toàn không theo luồng cung cấp hiệu suất tăng đáng kể so với bản dựng tiêu chuẩn bằng cách không thực hiện bất kỳ kiểm tra an toàn luồng nào, điều này không cần thiết, vì FastCGI đảm bảo môi trường thực thi theo luồng đơn

Để cài đặt PHP

  1. Tải xuống gói zip an toàn không luồng mới nhất với các tệp nhị phân của PHP. http. //www. php. mạng/tải xuống. php

  2. Giải nén các tập tin vào thư mục bạn chọn [e. g. C:\PHP]. Đổi tên php. ini được đề xuất thành tệp php. ban đầu

  3. mở php. tập tin ini. Bỏ ghi chú và sửa đổi cài đặt như sau

    • Đặt fastcgi. mạo danh = 1. FastCGI trong IIS hỗ trợ khả năng mạo danh mã thông báo bảo mật của máy khách đang gọi. Điều này cho phép IIS xác định ngữ cảnh bảo mật mà yêu cầu chạy bên dưới

    • Đặt cgi. fix_pathinfo=1. cgi. fix_pathinfo cung cấp hỗ trợ *thực* PATH_INFO/PATH_TRANSLATED cho CGI. Trước đây, hành vi của PHP là đặt PATH_TRANSLATED thành SCRIPT_FILENAME và không xác định PATH_INFO. Để biết thêm thông tin về PATH_INFO, hãy xem thông số cgi. Đặt giá trị này thành 1 sẽ khiến PHP CGI sửa đường dẫn của nó để phù hợp với thông số kỹ thuật

    • Đặt cgi. lực_redirect = 0

    • Đặt open_basedir để trỏ đến thư mục hoặc đường dẫn mạng chứa nội dung của [các] trang Web

    • Đặt extension_dir để trỏ đến vị trí đặt các tiện ích mở rộng PHP. Thông thường, đối với PHP 5. 2. X, giá trị sẽ được đặt là extension_dir = ". /ext"

    • Kích hoạt tiện ích mở rộng PHP được yêu cầu bằng cách bỏ nhận xét các dòng tương ứng, chẳng hạn

      tiện ích mở rộng = php_mssql. dll
      tiện ích mở rộng = php_mysql. dll

  4. Mở dấu nhắc lệnh và chạy lệnh sau để xác minh rằng PHP đã cài đặt thành công

    [. code-consoleMain]

Nếu PHP được cài đặt chính xác và tất cả các phụ thuộc của nó có sẵn trên máy, lệnh này sẽ xuất thông tin cấu hình PHP hiện tại

Định cấu hình IIS để xử lý các yêu cầu PHP

Để IIS lưu trữ các ứng dụng PHP, bạn phải thêm một ánh xạ trình xử lý yêu cầu IIS chuyển tất cả các yêu cầu dành riêng cho PHP tới khung ứng dụng PHP bằng cách sử dụng giao thức FastCGI

Định cấu hình IIS để xử lý các yêu cầu PHP bằng cách sử dụng Trình quản lý IIS

  1. Mở trình quản lý IIS. Ở cấp độ máy chủ, bấm đúp vào Ánh xạ trình xử lý

  2. Trong ngăn Hành động, nhấp vào Thêm ánh xạ mô-đun. Trong hộp thoại Thêm bản đồ mô-đun, chỉ định cài đặt cấu hình như sau

    • đường dẫn yêu cầu. *. php
    • mô-đun. FastCgiModule
    • thực thi được. "C. [Đường dẫn đến bản cài đặt PHP của bạn]\php-cgi. exe"
    • Tên. PHP qua FastCGI
  3. Nhấp vào OK

  4. Trong hộp thoại xác nhận Thêm bản đồ mô-đun hỏi bạn có muốn tạo ứng dụng FastCGI cho tệp thực thi này không, bấm Có

  5. Kiểm tra xem ánh xạ trình xử lý có hoạt động chính xác không bằng cách tạo tệp phpinfo. php trong thư mục C:\inetpub\wwwroot có chứa đoạn mã sau

    [. mã-xmlMain]

  6. Mở trình duyệt và điều hướng đến //localhost/phpinfo.php. Nếu mọi thứ đã được thiết lập chính xác, bạn sẽ thấy trang thông tin PHP chuẩn

    [. LƯU Ý] Nếu bạn không thấy FastCgiModule trong Mô-đun. danh sách, mô-đun chưa được đăng ký hoặc chưa được bật. Để kiểm tra xem mô-đun FastCGI đã được đăng ký hay chưa, hãy mở tệp cấu hình IIS có tại %windir%\windows\system32\config\applicationHost.config và kiểm tra xem dòng sau có trong phần không

    [. mã-xmlMain]

    Trong cùng một tệp, cũng kiểm tra xem mô-đun FastCGI có được thêm vào phần không

    [. mã-xmlMain]

Định cấu hình IIS để xử lý các yêu cầu PHP bằng cách sử dụng dòng lệnh

Ngoài ra, bạn có thể hoàn thành các bước trên bằng cách sử dụng công cụ dòng lệnh A ppCmd

  1. Tạo nhóm quy trình ứng dụng FastCGI bằng cách chạy lệnh sau

    [. code-consoleMain]

  2. Tạo ánh xạ xử lý bằng cách chạy lệnh sau

    [. code-consoleMain]

    [. LƯU Ý] Nếu bạn đang sử dụng PHP phiên bản 4. X, bạn có thể sử dụng php. exe thay vì php-cgi. người cũ

Thực tiễn tốt nhất để định cấu hình FastCGI và PHP

Tải xuống //download.microsoft.com/download/A/2/F/A2F199C0-672E-44E6-BF1D-878E233C3F08/hostingPHPonIIS7.zip "Hosting PHP" chứa bản trình bày tóm tắt về các phương pháp hay nhất để lưu trữ PHP trong môi trường lưu trữ được chia sẻ

Cách ly bảo mật cho các trang web PHP

Đề xuất cách ly các trang web PHP trong môi trường lưu trữ được chia sẻ phù hợp với tất cả các đề xuất cách ly bảo mật chung cho IIS. Đặc biệt, nên

  • Sử dụng một nhóm ứng dụng cho mỗi trang Web
  • Sử dụng tài khoản người dùng chuyên dụng làm danh tính cho nhóm ứng dụng
  • Định cấu hình danh tính người dùng ẩn danh để sử dụng danh tính nhóm ứng dụng
  • Đảm bảo rằng giả mạo FastCGI được bật trong php. ini [fastcgi. mạo danh = 1]

Để biết thêm chi tiết về cách ly bảo mật trong môi trường lưu trữ được chia sẻ, hãy xem Đảm bảo cách ly bảo mật cho các trang web

Hành vi tái chế quy trình PHP

Đảm bảo rằng FastCGI luôn tái chế php-cgi. exe trước khi quá trình tái chế PHP gốc bắt đầu. Hành vi tái chế quy trình FastCGI được kiểm soát bởi thuộc tính cấu hình instanceMaxRequests. Thuộc tính này chỉ định số lượng yêu cầu mà quy trình FastCGI sẽ xử lý trước khi tái chế. PHP cũng có chức năng tái chế quy trình tương tự được kiểm soát bởi biến môi trường PHP_FCGI_MAX_REQUESTS. Bằng cách đặt instanceMaxRequests nhỏ hơn hoặc bằng PHP_FCGI_MAX_REQUESTS, bạn có thể đảm bảo rằng logic tái chế quy trình PHP gốc sẽ không bao giờ khởi động

Cài đặt FastCGI có thể được định cấu hình bằng cách sử dụng Trình quản lý IIS hoặc bằng cách sử dụng công cụ dòng lệnh A ppCmd

Định cấu hình cài đặt tái chế FastCGI bằng cách sử dụng Trình quản lý IIS

  1. Đảm bảo rằng đã được cài đặt trên máy chủ của bạn. Mở trình quản lý IIS. Ở cấp độ máy chủ, bấm đúp vào Cài đặt FastCGI

  2. Chọn ứng dụng FastCGI mà bạn muốn cấu hình. Trong ngăn Hành động, nhấp vào Chỉnh sửa

  3. Trong hộp thoại Chỉnh sửa ứng dụng FastCGI, đặt InstanceMaxRequests thành 10000. Bên cạnh cài đặt Biến môi trường, bấm vào nút Duyệt [. ] cái nút

  4. Trong hộp thoại Trình chỉnh sửa bộ sưu tập biến môi trường, hãy thêm biến môi trường PHP_FCGI_MAX_REQUESTS và đặt giá trị của nó thành 10000

    [. LƯU Ý] Nếu bạn không định cấu hình các cài đặt này, các cài đặt mặc định sau sẽ được sử dụng. instanceMaxRequests = 200, PHP_FCGI_MAX_REQUESTS = 500 [trên hầu hết các bản dựng PHP]

Định cấu hình cài đặt tái chế FastCGI bằng cách sử dụng dòng lệnh

Định cấu hình hành vi tái chế của FastCGI và PHP bằng cách sử dụng AppCmd ​​bằng cách chạy các lệnh sau

[. code-consoleMain]

Phiên bản PHP

Nhiều ứng dụng PHP dựa vào các chức năng hoặc tính năng chỉ có trong một số phiên bản PHP nhất định. Nếu các loại ứng dụng này được lưu trữ trên cùng một máy chủ, các phiên bản PHP khác nhau phải được bật và chạy song song. Trình xử lý IIS FastCGI hỗ trợ đầy đủ việc chạy nhiều phiên bản PHP trên cùng một máy chủ Web

Ví dụ: giả sử rằng trên máy chủ Web của bạn, bạn dự định hỗ trợ PHP 4. 4. 8, PHP5. 2. 1 và PHP5. 2. 5 không chủ đề an toàn. Để bật cấu hình đó, bạn phải đặt các tệp nhị phân PHP tương ứng trong các thư mục riêng biệt trên hệ thống tệp [e. g. C:\php448\, C:\php521\C:\php525nts] rồi tạo nhóm quy trình ứng dụng FastCGI cho mỗi phiên bản

[. code-consoleMain]

Nếu bạn có ba trang Web [site1, site2, site3] và mỗi trang web phải sử dụng một phiên bản PHP khác nhau, giờ đây bạn có thể xác định ánh xạ trình xử lý trên từng trang web đó để tham chiếu nhóm quy trình ứng dụng FastCGI tương ứng

[. LƯU Ý] Mỗi nhóm quy trình FastCGI được xác định duy nhất bằng sự kết hợp của các thuộc tính fullPath và đối số

[. code-consoleMain]

Khuyến nghị bảo mật PHP

Các cài đặt sau có thể được sử dụng để thắt chặt bảo mật cho cài đặt PHP. Để thực hiện các thay đổi được đề xuất, hãy định vị và mở tệp php. ini và chỉnh sửa cài đặt cấu hình như được mô tả bên dưới

SettingDescriptionallow_url_fopen=Tắt allow_url_include=Tắt URL từ xa cho các chức năng xử lý tệp, điều này có thể gây ra lỗ hổng chèn mã. register_globals=Tắt register_globals. open_basedir="c. \inetpub"Hạn chế nơi quy trình PHP có thể đọc và ghi trên hệ thống tệp. safe_mode=Tắt safe_mode_gid=Tắt chế độ an toàn. max_execution_time=30 max_input_time=60Giới hạn thời gian thực thi tập lệnh. memory_limit=16M upload_max_filesize=2M post_max_size=8M max_input_nesting_levels=64Giới hạn sử dụng bộ nhớ và kích thước tệp. display_errors=Tắt log_errors=Bật error_log="C. \path\of\your\choice"Cấu hình thông báo lỗi và ghi nhật ký. nhanhcgi. logging=0Mô-đun IIS FastCGI sẽ không yêu cầu khi PHP gửi bất kỳ dữ liệu nào trên thiết bị lỗi chuẩn bằng cách sử dụng giao thức FastCGI. Vô hiệu hóa ghi nhật ký FastCGI để ngăn PHP gửi thông tin lỗi qua thiết bị lỗi chuẩn và tạo 500 mã phản hồi cho máy khách. Exposure_php=OffẨn sự hiện diện của PHP

Kích hoạt cấu hình PHP trên mỗi trang web

Phần này mô tả cách được đề xuất để kích hoạt cấu hình PHP trên mỗi trang web. Đề xuất này đã được Radney Jasmin phát hiện và xác thực với nhà cung cấp dịch vụ lưu trữ GoDaddy. com hiện cung cấp dịch vụ lưu trữ PHP trên Windows Server 2008 bằng cách sử dụng FastCGI

Nhóm quy trình PHP trên mỗi trang web

Khi mỗi trang Web có nhóm ứng dụng riêng, đây là một thực tiễn được khuyến nghị trên IIS, có thể liên kết nhóm quy trình FastCGI chuyên dụng với từng trang Web. Nhóm quy trình FastCGI được xác định duy nhất bởi sự kết hợp của thuộc tính fullPath và đối số. Nếu bạn cần tạo một số nhóm quy trình FastCGI cho cùng một quy trình có thể thực thi được, chẳng hạn như php-cgi. exe, bạn có thể sử dụng thuộc tính đối số để phân biệt các định nghĩa nhóm quy trình. Với php-cgi. exe, bạn cũng có thể sử dụng công tắc dòng lệnh "-d" để xác định mục nhập INI cho quy trình PHP. Bạn có thể sử dụng công tắc này để đặt cài đặt PHP làm cho chuỗi đối số trở nên duy nhất

Ví dụ: nếu có hai trang Web "website1" và "website2" phải có bộ cài đặt PHP riêng, nhóm quy trình FastCGI có thể được định nghĩa như sau

[. mã-xmlMain]

Trong ví dụ này, cài đặt PHP open_basedir được sử dụng để phân biệt giữa các định nghĩa nhóm quy trình. Cài đặt này cũng thực thi rằng tệp thực thi PHP cho mỗi nhóm quy trình chỉ có thể thực hiện các thao tác tệp trong thư mục gốc của trang Web tương ứng

Sau đó, website1 có thể có ánh xạ trình xử lý PHP như sau

[. mã-xmlMain]

và website2 có thể có ánh xạ trình xử lý PHP như sau

[. mã-xmlMain]

Chỉ định php. vị trí ban đầu

Khi quá trình PHP bắt đầu, nó sẽ xác định vị trí của cấu hình php. ini bằng cách sử dụng các cài đặt khác nhau. Tài liệu PHP cung cấp mô tả chi tiết về quy trình khởi động PHP. Một trong những nơi mà quy trình PHP tìm kiếm tệp php. ini là biến môi trường PHPRC. Nếu quá trình PHP tìm thấy một php. ini trong đường dẫn được chỉ định trong biến môi trường này, nó sẽ sử dụng nó; . tập tin ini. Biến môi trường này có thể được sử dụng để cho phép khách hàng lưu trữ sử dụng các phiên bản php của riêng họ. tập tin ini

Ví dụ: nếu có hai trang Web "website1" và "website2" nằm ở đường dẫn tệp sau. C:\inetpub\wwwroot0 và C:\inetpub\wwwroot1, bạn có thể định cấu hình php-cgi. nhóm quy trình exe trong phần C:\inetpub\wwwroot2 của applicationHost. tập tin cấu hình như sau

[. mã-xmlMain]

Bằng cách này, trang web1 có thể có phiên bản php của riêng mình. ini nằm trong C:\inetpub\wwwroot0, trong khi trang web2 có thể có phiên bản php riêng. ini nằm ở C:\inetpub\wwwroot1. Cấu hình này cũng đảm bảo rằng nếu một php. ini không thể tìm thấy ở vị trí được chỉ định bởi biến môi trường PHPRC, thì PHP sẽ sử dụng php mặc định. ini nằm trong cùng thư mục chứa tệp php-cgi. exe được định vị

Cung cấp chức năng viết lại URL cho các ứng dụng PHP

Phần lớn các ứng dụng PHP phổ biến đều dựa vào chức năng viết lại URL trong các máy chủ Web để kích hoạt các URL thân thiện với người dùng và công cụ tìm kiếm. IIS cung cấp khả năng viết lại URL bằng cách sử dụng mô-đun viết lại URL

Để biết thêm thông tin về cách sử dụng mô-đun Viết lại URL, hãy xem các bài viết sau

  • Hướng dẫn mô-đun viết lại URL của Microsoft. Mô tả cách sử dụng mô-đun Viết lại URL

  • Microsoft URL Rewrite Tham chiếu cấu hình mô-đun Giải thích chức năng của mô-đun và cung cấp các mô tả về tất cả các tùy chọn cấu hình

    PHP có thể được lưu trữ trong IIS không?

    Giới thiệu Cách nhanh nhất và dễ dàng nhất để cài đặt PHP trên Dịch vụ thông tin Internet [IIS] là sử dụng Trình cài đặt nền tảng web Microsoft ® [Web PI].

    Làm thế nào để triển khai trang web PHP trên máy chủ?

    Triển khai các ứng dụng PHP trong vòng vài phút. Bốn công cụ tự động hóa để cắt giảm thời gian triển khai .
    Tạo tài khoản DeployHQ
    Tạo một dự án mới trong DeployHQ
    Kết nối DeployHQ với kho mã của bạn
    Thêm đường dẫn của kho lưu trữ Github
    Cấu hình máy chủ
    Triển khai

    Người dùng nào PHP chạy dưới dạng IIS?

    Vì vậy, PHP sử dụng cùng một tài khoản IIS của bạn [w3wp. exe] sử dụng. [ Người dùng. IUSR ]. Lưu câu trả lời này.

Chủ Đề