it-swarm-vi.tech

Làm cách nào để Apache khởi động khi khởi động trên Linux?

Tôi đã cài đặt Apache 2 từ nguồn trên hộp Linux của mình. apachectl -k start hoạt động tốt, nhưng làm cách nào để Apache khởi động khi khởi động?

Đây là bản phân phối Red Hat Linux:

Linux <tên máy chủ> 2.6.9-55.ELsmp # 1 SMP Thứ Sáu ngày 20 tháng 4 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux

32
grieve

Bạn muốn thêm tập lệnh init của nó vào mức chạy phù hợp. Kịch bản init thường là /etc/init.d/Apache2 nơi bạn có thể chạy thủ công /etc/init.d/Apache2 start để bắt đầu nó.

Trên Gentoo bạn sẽ viết:

rc-update add Apache2 default

Trên Ubuntu/Debian, nó hoạt động:

Sudo update-rc.d Apache2 defaults

Trên Red Hat Linux/Fedora/CentOS, một chút googling cho thấy điều này:

chkconfig --add httpd

Nó thay đổi một chút từ phân phối đến phân phối, nhưng ý tưởng thường giống nhau. Về cơ bản, tất cả các lệnh này tạo một liên kết tượng trưng từ /etc/init.d/ đến thư mục cấp độ chạy thích hợp trong /etc/.

46
Evan Teran

Đây là những gì cuối cùng đã làm việc cho tôi. Điều này giả định rằng bạn là người dùng root.

  1. vi /etc/init.d/Apache2 (chỉnh sửa nó như hiển thị bên dưới)
  2. chmod 755 /etc/init.d/Apache2
  3. chkconfig --add Apache2
  4. chkconfig --list Apache2 (để xác minh rằng nó đã hoạt động)

Nội dung của /etc/init.d/Apache2:

[.__.] #!/bin/bash [.__.] # [.__.] # Tập lệnh khởi động Apache2 cho Máy chủ HTTP Apache [.__.] # [.__.] # chkconfig: 3 85 15 
 # mô tả: Apache là máy chủ World Wide Web. Nó được sử dụng để phục vụ\[.__.] # Các tệp HTML và CGI. [.__.] [.__.]/Usr/local/Apache2/bin/apachectl $ @ [.__.]

Bạn có thể lấy runlevel bằng cách chạy/sbin/runlevel, trong trường hợp của tôi là 3. Và tất nhiên bạn cần gọi phiên bản apachectl của mình, trong trường hợp của tôi là/usr/local/Apache2/bin/apachectl

Nhờ những điều sau:

26
grieve

Kiểm tra xem bạn có tập lệnh httpd init trong /etc/rc.d danh mục. Nếu có, thì bạn chỉ có thể chạy lệnh sau cho phép dịch vụ httpd bắt đầu khi khởi động.

chkconfig --level 345 httpd on

Nếu bạn không có tập lệnh init, thì chỉ cần thêm /etc/rc.local tệp có apachectl -k start (lệnh khởi động Apache).

8
Viky

Vì bạn đã cài đặt theo nguồn nên sẽ không có tập lệnh init được cài đặt trong thư mục /etc/init.d/. Nhị phân apachectl được thiết kế để tương thích với các tùy chọn tập lệnh init tiêu chuẩn, do đó bạn có thể chỉ cần liên kết với nó chứ không phải tạo một tập lệnh bao bọc (ví dụ: ln -s/usr/local/sbin/apachectl /etc/init.d/ Apache)

Sau đó, bạn có thể làm theo các quy trình được nêu trong các bài đăng khác để thêm liên kết để gọi tập lệnh init tại các đường dẫn chính xác.

Trích dẫn: Tài liệu Apache http://httpd.Apache.org/docs/2.2/invoking.html

Bắt đầu từ lúc khởi động

Nếu bạn muốn máy chủ của mình tiếp tục chạy sau khi khởi động lại hệ thống, bạn nên thêm một cuộc gọi đến apachectl vào các tệp khởi động hệ thống của bạn (thường là RC.local hoặc một tệp trong thư mục RC.N). Điều này sẽ bắt đầu Apache với quyền root. Trước khi làm điều này đảm bảo rằng máy chủ của bạn được cấu hình đúng cho các hạn chế về bảo mật và truy cập.

Kịch bản apachectl được thiết kế để hoạt động như một kịch bản init SysV tiêu chuẩn; nó có thể đưa các đối số bắt đầu, khởi động lại và dừng và dịch chúng thành các tín hiệu thích hợp thành httpd. Vì vậy, bạn thường có thể chỉ cần liên kết apachectl vào thư mục init thích hợp. Nhưng hãy chắc chắn kiểm tra các yêu cầu chính xác của hệ thống của bạn.

4
Russell Heilling

Trên Red Hat Linux, có một tiện ích hữu ích gọi là ntsysv cho phép bạn chọn dịch vụ nào bạn muốn bắt đầu ở cấp độ chạy hiện tại của mình. Bạn gọi cũng chỉ định mức chạy nào bạn muốn chỉnh sửa khi bạn khởi động tiện ích bằng cách sử dụng --level.

Cuộn xuống httpd và nhấn Space vì vậy một ngôi sao xuất hiện trong hộp bên tay trái. Sau đó Tab lấy. nhấn Return để lưu và quay trở lại Shell.

Tôi đã thấy rằng nó cài đặt khá nhiều theo mặc định. Tôi chưa bao giờ ở vị trí mà nó chưa được cài đặt.

Bạn sẽ cần cài đặt dịch vụ trước bằng cách sao chép tập lệnh dịch vụ vào /etc/init.d sau đó chạy:

chkconfig --add <script name>
1
Garry Harthill

chkconfig - giảm 345 httpd

sẽ bắt đầu httpd trong runlevels 3,4,5.

chkconfig --list sẽ hiển thị tất cả các dịch vụ và các chương trình khởi động hiện tại của chúng. 345 là điển hình cho một dịch vụ mạng.

1
elint

Nó phụ thuộc vào hương vị Linux của bạn. Giả sử tệp /etc/init.d/Apache2 đã được tạo, hãy thử:

chkconfig -a Apache2

hoặc là

update-rc.d Apache2 defaults

Một trong số họ nên làm việc.

1
Neobyte