Tôi muốn một máy chủ web Apache tôi đã cài đặt ở nhà để nghe trên cổng 80 và cổng 8080.
Tôi đã thêm Listen 8080
đến httpd.conf và khởi động lại dịch vụ Apache nhưng máy chủ dường như không nghe trên 8080. Đột nhập http: // localhost: 808 hết thời gian và không hiển thị chỉ mục của tôi. html nhưng http: // localhost sẽ hiển thị index.html của tôi.
Làm thế nào để tôi làm cho nó nghe 80 và 8080?
Một bản cài đặt Debian tiêu chuẩn của Apache sẽ có đoạn cấu hình sau:
[.__.] Nghe 80 [.__.] [.__.] <IfModule mod_ssl.c> [.__.] # Các máy chủ ảo dựa trên tên SSL chưa được hỗ trợ, do đó không có [.__.] # NameVirtualhost [.__.] Nghe 443 [.__.] </ IfModule> [.__.]
Điều này đang bảo Apache nghe trên cổng 80 và lắng nghe cổng 443 nếu mod_ssl được cấu hình. Trong trường hợp của bạn, bạn muốn:
Listen 80
Listen 8080
Bạn cần đảm bảo rằng bạn chạy khởi động lại, không phải là hoạt động tải lại trên Apache để nó chú ý đến các chỉ thị Nghe mới. Điều an toàn nhất để làm là ngăn chặn Apache, đảm bảo nó đã chết và bắt đầu lại.
Nếu cấu hình này không hoạt động, kiểm tra các tệp nhật ký cho bất kỳ thông báo lỗi. Bạn có thể sử dụng "netstat -lep --tcp" để xem có gì nghe trên cổng 8080. Cuối cùng, nếu mọi thứ khác không hoạt động, hãy thử chạy Apache theo strace để xem liệu nó có cố liên kết với cổng đó không và có bị lỗi không, nhưng không đăng nhập vấn đề.
Những câu trả lời này rất hay, nhưng chúng bỏ qua khả năng Owen đã thực sự đã làm điều này rồi ("Tôi đã thêm Listen 8080
") có thể có nghĩa chính xác những gì nó nghe giống như (nghĩa là, những gì David đã đề xuất).
Nếu bạn đã thực hiện điều này và vẫn thấy nó không hoạt động, hãy đảm bảo rằng bạn đã định cấu hình chính xác các chỉ thị của mình cho từng tên miền bạn có thể có, bao gồm cả tên miền mặc định (nếu nó được định cấu hình thủ công để nghe: 80 ngay sau tên).
Bạn có thể có một chỉ thị như thế này:
<VirtualHost *:80>
ServerName michaelsanford.com
etc…
</VirtualHost>
Bạn cần thay đổi điều đó thành <VirtualHost *:8080>
hoặc là <VirtualHost *:*>
.
Bước 1
#vi httpd.conf
Listen 80
<IfModule mod_ssl.c>
# SSL name based virtual hosts are not yet supported, therefore no
# NameVirtualHost statement here
Listen 443
</IfModule>
httpd (Apache) để nghe trên cổng 80 và nghe cổng 443 nếu mod_ssl được cấu hình.
Listen 80
Listen 8080
Bước 2
#su - service httpd restart
Bước 3
$ netstat -lntp
(Không phải tất cả các quy trình có thể được xác định, thông tin quy trình không thuộc sở hữu sẽ không được hiển thị, bạn sẽ phải root để xem tất cả.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:47027 0.0.0.0:* LISTEN -
tcp 0 0 192.168.1.1:80 0.0.0.0:* LISTEN -
tcp 0 0 192.168.1.1:8080 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN -
tcp 0 0 ::ffff:127.0.0.1:45100 :::* LISTEN 3149/Java
tcp 0 0 :::111 :::* LISTEN -
tcp 0 0 :::80 :::* LISTEN -
tcp 0 0 :::57173 :::* LISTEN 3149/Java
tcp 0 0 :::18197 :::* LISTEN 3149/Java
tcp 0 0 :::22 :::* LISTEN -
tcp 0 0 ::1:631 :::* LISTEN -
tcp 0 0 :::40832 :::* LISTEN 3149/Java
tcp 0 0 ::ffff:127.0.0.1:6880 :::* LISTEN 3149/Java
Bạn có thể cần cấu hình một trang web một cổng 8080 để làm việc này. Đọc qua tài liệu cho Máy chủ ảo Apache . Mỗi 'trang web' có thể được thiết lập để chấp nhận kết nối trên các cổng cụ thể (và ip, v.v.). Bạn có Máy chủ ảo trong http.conf chỉ được định cấu hình cho cổng 80 không?
Ngoài ra, bạn có thể xác nhận rằng máy chủ đang nghe trên 8080 bằng cách sử dụng netstat -nlp
và tìm kiếm một mục trên cổng đó.
Bạn cũng có thể muốn kiểm tra xem bạn đã bật SELinux chưa. Cấu hình SELinux mặc định có thể không cho phép bạn chạy Apache trên các cổng không chuẩn. Đây là một trang web cho bạn biết nếu bạn đang chạy SELinux và cách vô hiệu hóa nó, nếu bạn không muốn hoặc sử dụng các tính năng của nó. http://www.crypt.gen.nz/selinux/disable_selinux.html
Giả sử linux chạy netstat -lntp
là root như bạn có thể thấy nếu Apache có nghe trên 8080 hay không. Điều này sẽ giúp bạn xác định xem sự cố là do Apache không lắng nghe hay nếu có các yếu tố bên ngoài (ví dụ: tường lửa, selinux, v.v.) để Apache khiến hết thời gian kết nối.