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



Xin chào các bạn, hôm nay tôi sẽ cùng các bạn tìm hiểu làm thế nào để cấu hình cho phép IIS và  Apache hoạt động trên cùng một máy và tất nhiên là trên cùng port 80.

Ở đây, tôi giả định chúng ta có 2 domain name : iis.microsync.net apache.microsync.net. Máy chủ 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 / Cài đặt IIS7 trên Windows 7, Windows Server 2008

Tạo website mới trên IIS

Cài đặt Apache trên Windows / 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 ứ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 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 để 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) 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 \cmd).

2. Tại dấu nhắc DOS, gõ netsh

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

4. Gõ 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 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 đăng lại bài này ở đâu đó, đừng quên ghi chú thông tin Shinichi ‘s Blog để người đọc thực sự biết rõ nguồn gốc của bài viết nhé !

About Author

Tuấn Anh

Là một người đam mê lập trình, hiện tập trung mảng phát triển ứng dụng web dựa trên nền tảng của WordPress. Đồng thời, nhằm đạt sự trọn vẹn trong công việc freelance, tôi đang học đồ hoạ, để có thể tự mình thiết kế layout, logo và những thứ khác liên quan đến đồ họa. Mục tiêu vài năm tới: Tôi sẽ là Full Web Developer = Graphics Design + Coding. Vietcoding Blog viết về WordPress, chia sẻ kinh nghiệm, mẹo vặt, viết plugin, làm theme và ôm ấp ý tưởng viết một Web Application Framework dựa trên WordPress. Đồ hoạ là chuyên mục đang được chuẩn bị trong tương lai.



13 thoughts on “Cấu hình IIS và Apache chạy trên cùng một máy trên cùng port 80

  1. NguyenThai says:

    Sau khi đọc xong bài này mình có vài thắc mắc cần hỏi bạn. Nếu theo bài này thì cả 2 webserver sẽ cùng sử dụng port 80, trên cùng một máy, nhưng lại khác địa chị ip đúng không? Nếu vậy thì hóa ra chỉ hướng dẫn cách thiết lập cho 2 webserver sử dụng port 80 của 2 ip trên, nhưng trên thực tế thì máy tính làm gì có 2 ip lận. Một webserver hay đúng hơn là một máy tính bất kỳ có duy nhất 1 địa chỉ IP, tĩnh (static) hay động (dynamic), tại một thời điểm nhất định, không thể nào có thể access 2 ip của máy tính đó được (Không tính những ip truy cập qua router). Trong bài có nhắc tới IP tĩnh, tức là mỗi ip sẽ chạy một thằng riêng thì điều này có thể thực hiện, vì lý thuyết mỗi ip sẽ có mỗi port riêng biệt, không ảnh hưởng cả nhau. Thế nhưng nếu chỉ có 1 máy tính thì ip cuối cùng chỉ là 1 nên không thể nào sử dụng 2 webserver cùng port cả, chỉ trừ phi bạn đáp ứng yêu cầu như là trong bài viết, có từ 2 ip trở lên.

  2. ldthong2004 says:

    Tut này có cái mình hok hiểu. Config như vậy chạy localhost thì không sao nhưng máy khác trong LAN thì truy cập thế nào? Bằng IP hay bằng DNS? Rồi NAT ra Internet (nếu có) ra sao ?

    1. Shinichi says:

      Hi,

      Nếu trong mạng LAN có 1 DNS Server thì quá tốt Nó sẽ phân giải domain theo từng IP cho bạn !

      Thân,

  3. no0ne says:

    Nếu ko có DNS, và chỉ có 1 card mạng, thì làm thế nào? Giả định rằng tôi biết đc IP của máy chủ rồi?

    1. Shinichi says:

      Hi,

      – Với 1 NIC bạn vẫn có thể add được nhiều hơn 1 IPs

      – Nếu không có DNS Server trong LAN bạn không thể phân giải IP. Có cách tạm là modify tệp hosts, nhưng cách này không hiệu quả cho 1 mạng có quá nhiều máy.

      Thân,

  4. TyDia says:

    Cấu hình 1 máy tính chạy 2 IP tĩnh có bài hướng dẫn của LangKhach trên nhiều forum . các bạn lên google mà tìm ! cám ơn bài viết rất hay , đúng cái mình đang cần.

  5. dxhoang says:

    Thế bước này “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 nữa là hoàn tất. Hãy thử cả 2” thực hiện thế nào vậy bác? Chẳng lẽ cũng là http service luôn sao?

    1. Đến đây là xong phần dành cho IIS rồi, chuyển sang cấu hình cho Apache thôi.

  6. hnmessi says:

    Hi …Chỉ mình cách cấu hình 1 máy sử dụng 2 ip tĩnh với !!! mình tìm trên google mà ko thấy !!! cam ơn mọi người

  7. pntruong says:

    còn với 2 ftp server có lệnh nào để nó chỉ lắng nghe trên mỗi ip không bạn

    1. Ý của bạn là cài 2 FTP Server trên 1 máy có 2 IP ? Mỗi FTP Server sẽ “nghe” trên 1 IP ?

  8. pntruong says:

    2 ftp server dược làm trên 2 máy cùng mạng, có lệnh nào để nó lắng nghe mỗi ftp riêng mỗi máy đó ko, cùng port 21

    1. Không hiểu lắm câu hỏi của bạn ? Hai máy khác nhau thì cứ thằng nào nghe port trên máy đó thôi.


Got Something To Say:

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

GENESIS FRAMEWORK