PDA

View Full Version : Cấu hình IIS và Apache chạy trên cùng một máy trên cùng port 80



TheShinichi
15-11-2009, 06:20 PM
Cấu hình IIS và Apache chạy trên cùng một máy trên cùng port 80



Bạn là một webmaster hoặc đơn thuần chỉ là một sinh viên đang học tập, nghiên cứu về lĩnh vực web developing thì ắt hẳn không ít thì nhiều cũng sử dụng qua 2 web server (http://shinichi.microsync.net/blog/go.php/tags/webserver/) rất phổ biến là IIS (Internet Information Services) (http://shinichi.microsync.net/blog/go.php/tags/iis/) và Apache (http://shinichi.microsync.net/blog/go.php/tags/apache/) để chạy ASP (http://shinichi.microsync.net/blog/go.php/tags/asp/)/ASP.NET (http://shinichi.microsync.net/blog/go.php/tags/asp-net/) và PHP (http://shinichi.microsync.net/blog/go.php/tags/php/). Thật may mắn, việc cấu hình IIS để chạy PHP không quá khó khăn, chỉ cần đọc kỹ hướng dẫn và làm theo. Do đó, với một máy tính cài hệ điều hành Windows (http://shinichi.microsync.net/blog/go.php/tags/windows/) (Windows XP (http://shinichi.microsync.net/blog/go.php/tags/windows-xp/), Windows Server 2003 (http://shinichi.microsync.net/blog/go.php/tags/windows-server-2003/), Windows 7 (http://shinichi.microsync.net/blog/go.php/tags/windows-7/), Windows Server 2008 (http://shinichi.microsync.net/blog/go.php/tags/windows-server-2008/)...) chúng ta dễ dàng sử dụng để chạy ASP/ASP.NET và PHP phục vụ cho việc nghiên cứu, học tập hoặc chỉ là "vọc chơi". Tuy vậy, đôi lúc IIS (http://shinichi.microsync.net/blog/go.php/tags/iis/) không đáp ứng được một số nhu cầu của chúng ta, ví dụ như là IIS6 (http://shinichi.microsync.net/blog/go.php/tags/iis6/) không có mod_Rewrite (http://shinichi.microsync.net/blog/go.php/tags/mod-rewrite/) (Ngoại trừ cài đặt thêm plugin (http://shinichi.microsync.net/blog/go.php/tags/plugin/) cho IIS6 và IIS7 (http://shinichi.microsync.net/blog/go.php/tags/iis7/) có hỗ trợ URL Rewrite Module (http://shinichi.microsync.net/blog/go.php/tags/url-rewrite-module/)) để thử nghiệm việc tối ưu hoá url, trong khi SEO (http://shinichi.microsync.net/blog/go.php/tags/seo/) đang được khá nhiều webmaster (http://shinichi.microsync.net/blog/go.php/tags/webmaster/) quan tâm đến một cách sâu sắc. Bên cạnh đó, theo kinh nghiệm của tôi, PHP chạy không mượt mà lắm trên IIS. Thế có nghĩa là đôi lúc chúng ta cũng phải cần sử dụng đến Apache. Để chạy đồng thời IIS và Apache cũng không phải việc gì quá khó khăn, chỉ cần cấu hình cho một trong hai chạy khác port (http://shinichi.microsync.net/blog/go.php/tags/port/) 80 là ổn thoả (Xem thêm : Cấu hình IIS và Apache chạy trên cùng một máy (http://shinichi.microsync.net/blog/Cau-hinh-IIS-va-Apache-chay-tren-cung-mot-may.php)).

Cuộc sống sẽ vẫn êm đềm trôi qua, IIS và Apache sẽ vẫn sống chung hoà bình với nhau cho đến cách đây gần hai tuần, có một số thay đổi nhỏ trên máy chủ. Sự thay đổi đó bắt buộc tôi cần phải gì đó để IIS và Apache không chỉ "sống chung" với nhau trên cùng một máy mà còn phải trên cùng port 80 (http://shinichi.microsync.net/blog/go.php/tags/80/) (?!?). Xin nói sơ về máy chủ của tôi (chính xác là của công ty tôi, tôi chỉ là người quản lý nó). Máy chủ cài đặt hệ điều hành Windows Server 2008 Standard, có 4 IPs tĩnh. Theo thông số do bên nhà cung cấp hosting cho biết, máy chủ này có hỗ trợ Hyper-V (http://shinichi.microsync.net/blog/go.php/tags/hyper-v/). Do đó, ban đầu tôi cũng đã có ý định cài đặt một máy ảo chạy Windows Server 2003 hoặc Ubuntu (http://shinichi.microsync.net/blog/go.php/tags/ubuntu/) Server để chạy riêng Apache. May mắn thay, tôi đã tham khảo từ nhiều nguồn trên Internet, từ một số bạn bè, người quen làm việc ở các công ty cung cấp hosting (http://shinichi.microsync.net/blog/go.php/tags/hosting), làm về hệ thống mạng,.. Đã có những phản hồi rất khả quan. Một trong số đó đã được tôi thử nghiệm và thành công. Hiện tại máy chủ của tôi đang chạy đồng thời 2 web server, đến thời điểm này chưa thấy có bất kỳ sự xung đột nào xảy ra.

Tôi lan man hơi nhiều nhỉ ? Thôi, nào chúng ta vào vấn đề nhé !

Ở đây, tôi giả định chúng ta có 2 domain name (http://shinichi.microsync.net/blog/go.php/tags/domain-name/) : iis.microsync.net và apache.microsync.net. Máy chủ (http://shinichi.microsync.net/blog/go.php/tags/server/) cài hệ điều hành Windows, phiên bản Server 2008 Standard và có 2 IPs tĩnh 192.168.0.100 và 192.168.0.200. Yêu cầu ở đây là cái iis chúng ta sẽ cấu hình cho chạy với IIS trên IP 192.168.0.100 và cái còn lại chạy với Apache trên IP 192.168.0.200.
Một số vấn đề, tôi xem như chúng ta đã "pass" qua nhé :

- Cài đặt IIS trên Windows XP (http://shinichi.microsync.net/blog/post/Huong-dan-cai-dat-IIS-tren-Windows-XP.php) / Cài đặt IIS7 trên Windows 7, Windows Server 2008 (http://shinichi.microsync.net/blog/Cai-dat-IIS7-tren-Windows-7-va-Windows-Server-2008.php)

- Tạo website mới trên IIS (http://shinichi.microsync.net/blog/post/Tao-nhieu-website-tren-IIS.php)

- Cài đặt Apache trên Windows (http://shinichi.microsync.net/blog/Cai-dat-Apache-tren-Windows.php) / Nắm trong tay web server di động gồm Apache+PHP+FileZilla+Mercury với gói XAMPP

- Chỉnh sửa file hosts trong Windows

Trước hết, khởi động IIS7 trên Windows 7 hoặc Windows Server 2008, tạo một website mới (http://shinichi.microsync.net/blog/post/Tao-nhieu-website-tren-IIS.php) ứng với domain iis.microsync.net. Ở bước này chúng ta có thể cấu hình file hosts và test thử với domain (http://shinichi.microsync.net/blog/go.php/tags/domain/) trên.
Tiếp theo, đến gì nhỉ ? Apache ! Chính xác là vậy ! Có lẽ cũng không cần mất nhiều thời gian cho việc ngồi ì ra một chỗ mà cài đặt Apache theo đúng chuẩn của nó. Thay vào đó, chúng ta nên dùng gói XAMPP (http://shinichi.microsync.net/blog/go.php/tags/xampp/) để tiết kiệm thời gian. Chỉ đơn thuần download, giải nén, và chạy thôi. Xem như pass bước này và chúng ta đã có xmapp cài đặt ở ổ đĩa D: (D:\xampp). Nhưng đừng vội start nó lên nếu bạn không muốn gặp lỗi. Đơn giản là vì port 80 trên máy đang bị IIS "chiếm giữ". Chúng ta sang bước kế tiếp nhé.
Không rõ ở trên tôi có nhấn mạnh về việc máy chủ của chúng ta có nhiều hơn 1 IP không nhỉ ? Vấn đề mấu chốt của toàn bộ bài viết này nằm ở đấy ! Chúng ta sẽ "ép" thằng IIS chỉ lắng nghe (listen (http://shinichi.microsync.net/blog/go.php/tags/listen/)) trên IP 192.168.0.100 thôi và cái IP còn lại sẽ do Apache quản lý. Như thế, chúng ta sẽ có 2 web server chạy trên cùng một máy chủ, trên 2 IPs khác nhau, và trên cùng một port 80. Thật tuyệt chứ nhỉ ?

Chúng ta đến bước quan trọng nhất của bài viết này. Nào,

1. Mở DOS (Start \ Run \ gõ cmd).

2. Tại dấu nhắc DOS, gõ netsh (http://shinichi.microsync.net/blog/go.php/tags/netsh/)

3. Dấu nhắc DOS sẽ chuyển sang dấu nhắc của netsh (như là netsh>)

4. Gõ http (http://shinichi.microsync.net/blog/go.php/tags/http/) và dấu nhắc đã chuyển thành netsh http>

5. Gõ tiếp show iplisten. Lệnh này sẽ liệt kê ra toàn bộ các IPs đang được dịch vụ http lắng nghe. Nói một cách dễ hiểu là liệt kê các IPs mà IIS đang "chiếm giữ":

IP addresses present in the IP listen list
------------------------------------------------
192.168.0.100
192.168.0.200

6. Gõ add iplisten ipaddress=192.168.0.100. Lệnh này yêu cầu http service (tức IIS) chỉ lắng nghe 1 IP được chỉ định thôi. Và như thế chúng ta đã "giải phóng" được IP còn lại cho Apache.

7. Bạn có thể gõ lại lênh show iplisten để kiểm tra, lúc này sẽ chỉ có IP 192.168.0.100 xuất hiện.

8. Thoát netsh.
Đến bước này, chúng ta cấu hình Apache listen trên IP 192.168.0.200 (http://shinichi.microsync.net/blog/admin.php) nữa là hoàn tất. Hãy thử cả 2 web server để thấy kết quả mà chúng ta đã đạt được ! Không quá tệ chứ hả ?

-Nếu bạn thấy bài viết này hay, hãy ủng hộ tôi bằng cách click vào các quảng cáo nào bạn thực sự quan tâm ! -Nếu bạn đăng lại bài này ở đâu đó, đừng quên ghi chú thông tin để người đọc thực sự biết rõ nguồn gốc của bài viết nhé !


Link gốc của bài viết : Cấu hình IIS và Apache chạy trên cùng một máy trên cùng port 80 (http://shinichi.microsync.net/blog/post/Cau-hinh-IIS-va-Apache-chay-tren-cung-mot-may-tren-cung-port-80.php)
(http://shinichi.microsync.net/blog/post/Cau-hinh-IIS-va-Apache-chay-tren-cung-mot-may-tren-cung-port-80.php)