Máy chủ Apache không tự động khởi động


11

Tôi đã cài đặt Apache một thời gian dài như là một phần của việc thiết lập môi trường phát triển trên máy tính xách tay của tôi.

Tuy nhiên, vì tôi đã dừng nó vài tháng trước, nó không còn tự động khởi động khi khởi động. Tôi có vấn đề này trên máy tính xách tay của tôi ở nhà VÀ trên máy tính xách tay của tôi tại nơi làm việc.

Cả hai trường hợp, tôi đã cài đặt Apache trong Ubuntu 10.10 vài tháng trước, đã sử dụng nó trong vài tuần mà không gặp trục trặc, nhưng rồi một ngày tôi đã dừng nó và bây giờ nó không còn tự động bắt đầu nữa. Tôi đã thử chạy bản cập nhật RC cho nó bằng tay, nhưng được cho biết tập lệnh init đã được sử dụng.

Tuy nhiên, bắt đầu / khởi động lại nó bằng tay với

sudo service apache2 start/restart

hoạt động tốt Trong cả hai trường hợp, tôi để nó cho đến sau khi nâng cấp lên 11.04, vì tôi hy vọng nó sẽ được giải quyết bằng phiên bản mới. Nhưng không phải vậy! Tôi rất biết ơn nếu ai đó có thể cho tôi biết làm thế nào để Apache bắt đầu tự động một lần nữa.

Câu trả lời:


10

Cố gắng chạy

update-rc.d apache2 enable [list of run levels]

làm gốc.

Bạn có thể thích đọc

man update-rc.d

1
Cảm ơn rất nhiều, tôi đã chạy lệnh (không có danh sách các runlevels, chỉ có mặc định), và nó dường như hoạt động. Bạn có biết tại sao nó dường như ngừng hoạt động? Tôi đã không loay hoay với các tập lệnh init, tôi nghĩ rằng tôi chỉ dừng Apache khỏi dòng lệnh - nhưng tôi không có ý định dừng nó vĩnh viễn . :-)
Carsten Agger

Tôi không có ý kiến ​​tại sao nó ngừng hoạt động :) Có thể sau khi cập nhật một cái gì đó bắt đầu làm việc không chính xác.
bỏ qua

Cảm ơn, nhưng nó không giúp được gì. Bất kể tôi gọi update-rc.d apache2 như thế nào, apache sẽ ngừng tự động chạy lại. Tôi luôn phải bắt đầu nó bằng tay. Dường như không có vấn đề thực sự, vì nó luôn bắt đầu chính xác khi tôi làm bằng tay.
Carsten Agger

9

Tôi đang thêm câu trả lời này dựa trên các vấn đề gần đây tôi gặp phải với các triệu chứng tương tự.

Đầu tiên một số dữ liệu nền:

  • Ubuntu sử dụng các tập lệnh trong /etc/init.d/thư mục để bắt đầu / dừng dịch vụ.
  • Ubuntu sử dụng các liên kết tượng trưng đến các /etc/init.d/tập lệnh đó, được lưu trữ trong các /etc/rc#.d/thư mục, để bắt đầu / dừng các dịch vụ dựa trên "runlevel".
  • Các liên kết bắt đầu bằng chữ "S" chỉ ra rằng dịch vụ nên được bắt đầu.
  • Các liên kết bắt đầu bằng chữ "K" chỉ ra rằng dịch vụ sẽ bị dừng (bị hủy).
  • Runlevel 1 thực thi các tập lệnh được liên kết với nhau /etc/rc1.d/, sử dụng runlevel 2 /etc/rc2.d/, v.v.
  • Runlevel mặc định cho Ubuntu là 2.
  • Cài đặt Apache về cơ bản chạy sudo update-rc.d apache2 defaultsđể tạo ra các liên kết tượng trưng thích hợp trong các /etc/rc#.d/thư mục.

Vì vậy, có vẻ như trên máy chủ của tôi một cái gì đó, hoặc một người nào đó, tại một số điểm đã chạy sudo update-rc.d apache2 disable, loại bỏ tất cả các liên kết "S" và thay thế chúng bằng các liên kết "K". Do đó, giết hoặc không bắt đầu, Apache khi khởi tạo bất kỳ đường băng nào.

Giải pháp của tôi chỉ là kích hoạt lại Apache:

sudo update-rc.d apache2 enable

Bây giờ Apache bắt đầu / dừng như mong đợi khi khởi động hoặc chuyển đổi đường băng.

Lưu ý:

Điều đáng chú ý là chỉ chạy sudo update-rc.d apache2 defaultslại là không đủ vì nó thấy rằng các liên kết tượng tồn tại và coi rằng chúng là những gì được muốn. Nó chỉ đáp ứng với:

System start/stop links for /etc/init.d/apache2 already exist.

1
Cảm ơn bạn! Điều này rất có giá trị trong việc khắc phục sự cố cấu hình của tôi.
reor

1
Tôi đang gặp vấn đề này nhưng giải pháp này đáng ngạc nhiên đã không hoạt động. Khi tôi chạy, sudo update-rc.d apache2 enable defaultsnó sẽ loại bỏ những gì tôi có và sau đó đặt lại ngay. Tôi có K09apache2trong RC0, 1, và 6, và tôi có S91apache2trong RC2, RC3, RC4, RC5. service apache2 starthoạt động tốt, nhưng tôi phải làm điều đó sau mỗi lần khởi động lại vì nó sẽ không tự động khởi động. mysql, mặt khác, luôn luôn khởi động tốt.
Butussy Butkus

1
Những cái nhìn đúng. Bạn có thể muốn mở câu hỏi mới với các chi tiết về vấn đề cụ thể của bạn và chắc chắn bao gồm các dòng có liên quan từ bạn /var/log/syslog/var/log/apache2/error.log. Gửi tin nhắn cho tôi với liên kết đến câu hỏi và tôi sẽ xem liệu tôi có thể giúp gì không.
Karl Wilbur

3

Trong trường hợp này, tôi đã tìm ra lý do tại sao Apache sẽ không bắt đầu. Tôi không thể tìm thấy dấu vết này trong nhật ký khởi động, chỉ trong đầu ra được in ra màn hình khi khởi động.

Nhưng ở đây bạn đi: Dòng cuối cùng trong kịch bản /etc/apache2/apache2.confthất bại.

Tại sao?

Nó nói rằng:

Include sites-enabled/

Tuy nhiên, hai trong số các trang web tôi đã thiết lập được đặt trong thư mục nhà riêng của tôi - được mã hóa!

Vì vậy, khi khởi động (trong quá trình khởi động Apache), các trang web này không tồn tại và Apache không thành công và từ chối chạy.

Giải pháp?

Tôi đã tạo một tập lệnh nhỏ gọi là "vô hiệu hóa" và liên kết nó thành /etc/rc0.d/etc/rc6.d(tắt và khởi động lại):

#!/bin/bash

/usr/sbin/a2dissite vvsshop
/usr/sbin/a2dissite neoflex
/etc/init.d/apache2 reload

exit 0

Tôi cũng đã tạo một tập lệnh để kích hoạt lại các trang web bất cứ khi nào tôi đăng nhập và thêm nó dưới dạng chương trình khởi động trong Cài đặt hệ thống. Vì vậy, bây giờ nó hoạt động!

Vì vậy, tôi cho rằng bài học ở đây là khi Apache không thể tải một cách không thể giải thích được trong quá trình khởi động và bạn không thể tìm thấy bất kỳ lỗi nào trong nhật ký hoặc khi khởi động máy chủ theo cách thủ công, hãy kiểm tra xem tất cả các thư mục mà nó cần có sẵn không. Điều này có lẽ cũng có thể được giải quyết theo một số cách khác.


Tôi ngạc nhiên khi bạn không tìm thấy bất kỳ lỗi nào trong nhật ký. Trước đây tôi đã phát hiện ra rằng một số lỗi khởi động Apache không có trong tệp nhật ký mà tôi mong đợi, nhưng trong tệp nhật ký cho một trong các máy chủ ảo của tôi. Đây có thể là trường hợp?
Marius Gedminas

apachectl configtestsẽ thông báo cho bạn về việc thiếu quyền truy cập các tệp trong khi chạy dưới dạng daemon.
Anuga

1

Đối với những người khác đang tìm kiếm (googling) cho vấn đề này, hãy kiểm tra xem nếu bạn chạy:

chkconfig |grep httpd

bạn lấy

httpd 0: off 1: off 2: on 3: on 4: on 5: on 6: off

khác làm:

chkconfig httpd on

(xin lỗi trên ubfox tương đương với Ubuntu là update-rc.d xem Chkconfig thay thế cho Ubuntu Server? )


0

Tôi gặp vấn đề tương tự và tôi đang chạy Ubuntu 14 trên thiết lập Vagrant cục bộ. Tôi đã xóa /etc/apache2/sites-enabledthư mục và thêm một liên kết đến thư mục nhà của tôi, tất nhiên nó được gắn vào ổ đĩa cục bộ của tôi theo cấu hình Vagrant.

Hóa ra apache không thấy thư mục vì tài nguyên chưa được gắn kết. Tôi viết lại quy định của mình trên Vagrant để chỉ sao chép sites-enabledthư mục thay vì thêm một liên kết tượng trưng.

Tôi cũng đã làm sudo update-rc.d apache2 enablenhư được đề xuất bởi Karl Wilburđể chắc chắn rằng apache init đã được bật.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.