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

Published by Việt Coding on

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é !

Quảng cáo tài trợ


Việt Coding

Là một người đam mê lập trình, tôi vọc vạch đủ thứ liên quan đến lập trình cho thoả chí tò mò. Hiện làm chủ yếu ở mảng phát triển ứng dụng di động cho iOS và Android với React Native. Thỉnh thoảng vọc vạch mấy thứ liên quan đến Internet of Things như Smart Home. Đang nghịch mấy con Raspberry Pi và thấy nó cũng thú vị :)

17 Comments

NguyenThai · 14/11/2009 at 11:57

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.

ldthong2004 · 19/11/2009 at 23:21

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 ?

    Shinichi · 20/12/2009 at 22:50

    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,

no0ne · 21/12/2009 at 20:38

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?

    Shinichi · 21/12/2009 at 20:50

    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,

TyDia · 27/09/2011 at 11:16

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.

dxhoang · 23/05/2012 at 08:42

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?

    Việt Coding · 19/06/2012 at 14:49

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

hnmessi · 03/12/2012 at 10:57

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

pntruong · 17/03/2014 at 13:17

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

    Việt Coding · 04/06/2014 at 05:25

    Ý 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 ?

pntruong · 17/03/2014 at 13:20

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

    Việt Coding · 15/05/2014 at 19:08

    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.

T.Thanh · 16/06/2017 at 09:37

Mình dùng VMWARE để test:
1. add thêm 1 card mạng ảo nữa : vd card 1: 192.168.1.200 – card 2: 192.168.1.201
2. trên cùng 1 Server cài XAMPP và IIS
3. Dùng lệnh ở phía trên tới bước :”show iplisten” thì không ra địa chỉ IP nào cả (bạn có thể cho mình biết lỗi gì ở đây không? vì theo mình biêt là hiện tại IIS đang nắm port 80 và khi mình tắt nó dùng xampp chạy thì nó cũng dùng port 80 nhưng khi dùng lệnh thì không hiển thị IP nào cả??)

hoặc bạn có cách cấu hình nào để XAMPP chạy chung port 80 được với IIS ngoài cách này không? (SERVER mình đang sử dụng là Windows server 2012R2 Standard) chứ không phải LINUX

hoặc bạn biết cách cấu hình XAMPP và MDAEMON sử dụng chung port 80 không? mình tìm nhưng không có bài hướng dẫn
Email mình là: trongthanh12ctca2@gmail.com (cảm ơn đã hướng dẫn)

    Việt Coding · 14/11/2017 at 09:48

    Mình dùng cách này trên Windows chạy trên máy vật lý chứ không phải máy ảo nên không rõ trường hợp của bạn.
    Còn về chạy nhiều webserver trên cùng port 80 thì bạn chạy bao nhiêu cũng được miễn có đúng số lượng IP tương ứng.

Tâm · 01/02/2018 at 14:36

Hi,
Mình đang có nhu cầu như sau : 1 con server có 1 IP tĩnh, nhưng giờ mình muốn nó chạy 2 website trên IIS , ví dụ : abc.com và xyz.com, cùng port 80. Mình tìm không thấy tài liệu nào hướng dẫn. Nên các cao thủ nào đã từng setup IIS cho chạy 2 website trên cùng port 80 cùng 1 ip tĩnh trên cùng 1 server thì cho mình xin hướng dẫn dùm. Cám ơn các cao thủ.

    Việt Coding · 04/04/2018 at 20:19

    Cái này bình thường mà bạn. Bạn tạo mới website và nhập 2 domain vào phần hostname. IIS sẽ tự điều hướng khi client request tới domain abc hoặc xyz.

Leave a Reply

Avatar placeholder

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