Tôi đã có một máy chủ với một loạt các địa chỉ IP và tôi chỉ muốn Apache nghe trên một trong số đó. Nghe có vẻ không phải là một việc khó làm và tôi đã từng làm điều đó một lần trước đây, nhưng lần này tôi gặp một số rắc rối. Trước hết, đây là nơi tôi đang ở hiện tại, theo sự hiểu biết của tôi:
Mọi nơi Apache đều nghe cổng 80, nó chỉ nghe đúng IP.
/etc/apache2$ grep -R ":80" .
./sites-available/default:<VirtualHost 192.168.0.82:80>
./httpd.conf:<VirtualHost 192.168.0.82:80>
./ports.conf:NameVirtualHost 192.168.0.82:80
./sites-enabled/000-default:<VirtualHost 192.168.0.82:80>
Không có đề cập đến việc nghe trên 0.0.0.0.
/etc/apache2$ grep -R "0\.0\.0\.0" .
Vậy mà ... Apache từ chối bắt đầu.
/etc/apache2$ sudo /etc/init.d/apache2 start
* Starting web server apache2
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
[fail]
Trong trường hợp ai đó hỏi, tôi không bị ràng buộc với địa chỉ đó:
/etc/apache2$ sudo netstat -nap | grep :80
tcp 0 0 192.168.0.83:80 0.0.0.0:* LISTEN 2822/node
Nhật ký lỗi tại /var/log/apache2/error.log
chỉ nói:
[Wed Aug 08 03:30:18 2012] [notice] caught SIGTERM, shutting down
Tôi đã bỏ lỡ một vị trí trong cấu hình của Apache? Có điều gì tôi không nhớ để tìm kiếm? Tại sao điều này không đơn giản như tôi nhớ nó?
Listen 192.168.0.82:80
dòng quan trọng , đó là điều tôi cần. Tôi đã chọn câu trả lời của cjc vì nó đi sâu hơn một chút về lý do tại sao dòng đó là cần thiết. Tôi nghĩ rằng việc đề cập đến các bình luận được sử dụng trong phiên bản Apache đi kèm với CentOS là một bổ sung hay. Nhưng vì mọi người dường như đều đồng ý rằng câu trả lời nên được đưa ra cho halka, tôi đã đi trước và đưa nó cho anh ta. Rốt cuộc, tôi nhận thấy bằng cách xem xét các sửa đổi mà bình luận của halka đã ảnh hưởng đáng kể đến câu trả lời của cjc ở dạng hiện tại.