2012-03-04 3 views
8

Khi tôi chạy lệnh nàyAmazon EC2 - máy chủ Apache restart vấn đề

sudo /etc/init.d/httpd restart

nó mang lại cho dưới đây lỗi

Dừng httpd: [FAILED ]

Bắt đầu httpd: (98) Địa chỉ đã sử dụng: make_sock: không thể liên kết với địa chỉ [::]: 80 (98) Địa chỉ đã sử dụng: make_sock: cou ld không ràng buộc để giải quyết 0.0.0.0:80 không ổ cắm nghe có sẵn, tắt Unable to open logs [FAILED]


i kiểm tra chương trình đang chạy ở cổng 80 bằng cách sử dụng

-lnp netstat | grep: 80 (nó mang lại cho bên dưới đầu ra)

tcp 0 0 ::: 80 ::: * LISTEN 21.739/httpd


lý do tại sao tôi không thể dừng lại dừng lại apache bằng cách sử dụng sudo/etc/init.d/httpd khởi động lại?

dưới lệnh làm việc mà không vấn đề

sudo apachectl dừng

sudo apachectl bắt đầu

tôi đang sử dụng Linux dụ vi của Amazon EC2

Trả lời

0

Tôi cảm thấy tốt hơn của nó để giết chết quá trình tự, tìm ra quá trình id và giết nó và sau đó làm một khởi đầu mới, nó sẽ hoạt động tốt

14

Tôi chạy vào prob này lem khi tôi cài đặt apache từ nguồn, nhưng sau đó đã cố gắng chạy

$ sudo /etc/init.d/httpd restart 

đang sử dụng phiên bản apache được cài đặt sẵn. Chỉ thị dừng trong /etc/init.d/httpd không xóa tệp httpd.pid đã được tạo khi bắt đầu phiên bản apache nguồn được cài đặt.

Để xác định xem đây cũng là lý do cho vấn đề của bạn, tìm nơi tệp httpd.pid đang được đặt khi bạn chạy

$ sudo apachectl start 

Nếu bạn cài đặt từ mã nguồn và apache2 đang sống trong/usr/local/apache2, sau đó tệp httpd.pid sẽ được tạo trong/usr/local/apache2/logs. Khi bạn ngừng apache bằng cách chạy

$ sudo apachectl stop 

tệp này sẽ bị xóa. Vì vậy, để kiểm tra xem tệp httpd.pid có gây ra sự cố của bạn hay không, hãy bắt đầu apache bằng cách gọi

$ sudo apachectl start 

và tìm tệp httpd.pid.Sau đó cố gắng ngăn chặn apache bằng cách sử dụng

$ sudo /etc/init.d/httpd stop 

Nếu file httpd.pid gốc vẫn còn hiện diện, thì đó là lý do tại sao apache là không thể khởi động khi bạn sử dụng

$ sudo /etc/init.d/httpd start 

Để có được của tôi/etc/init .d/httpd tập tin để làm việc một cách chính xác, tôi dứt khoát đưa cuộc gọi đến apachectl trong khởi động và dừng các phương pháp:

#!/bin/bash 
# /etc/init.d/httpd 
# 
# Path to the apachectl script, server binary, and short-form for messages. 
apachectl=/usr/local/apache2/bin/apachectl 
httpd=/usr/local/apache2/bin/httpd 
pid=/usr/local/apache2/logs/httpd.pid 
prog=httpd 
RETVAL=0 

start() { 
    echo -n $"Starting $prog: " 
    $apachectl -k start 
    RETVAL=$? 
    echo 
    return $RETVAL 
} 
stop() { 
    echo -n $"Stopping $prog: " 
    $apachectl -k stop 
    RETVAL=$? 
    echo 
} 
0

tôi cố gắng này và nó hoạt động:

  1. sudo fuser -k -n tcp 80
  2. sudo dịch vụ httpd khởi

Hy vọng điều này sẽ giúp bạn!

Chúc mừng