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 Show
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 7củ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
Tổng quanMô-đ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 IISWindows Server 2008Chuyể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 SP1Chuyể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 FastCGIBả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ài đặt gói quản trị cho IIS
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
Cài đặt và cấu hình PHPBạ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
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
Đị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ệnhNgoà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
Thực tiễn tốt nhất để định cấu hình FastCGI và PHPTải xuống 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
Để 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
Đị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 PHPNhiề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. [. 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
[. code-consoleMain] Khuyến nghị bảo mật PHPCá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 PHPKích hoạt cấu hình PHP trên mỗi trang webPhầ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 webKhi 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 đầuKhi 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. [. 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 Cung cấp chức năng viết lại URL cho các ứng dụng PHPPhầ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
|