Cách tự động khởi động dịch vụ (apache2) với Linux Mint


11

(Strangley) Apache2 đã cài đặt của tôi không khởi động khi đăng nhập vào Linux Mint.

Chạy lệnh này sẽ làm cho nó đi:

sudo service apache2 start

Tôi nên cố gắng khởi động dịch vụ này như thế nào sau mỗi lần đăng nhập?


Bạn có thể đặt lệnh đó, lệnh ~/.xinitrcnày sẽ được chạy khi khởi động.
n0pe

2
@MaxMackie Ngược lại, ~/.xinitrcđược chạy vào thời điểm đăng nhập, điều đó không đúng. Apache cần được bắt đầu bằng root khi khởi động.
Gilles 'SO- ngừng trở thành ác quỷ'

@Gilles, phải tôi quên điều đó, cảm ơn vì đã sửa. Tuy nhiên, tại sao apache cần phải được bắt đầu khi khởi động? Sẽ không đăng nhập hoàn thành điều tương tự?
n0pe

@MaxMackie Không phải nếu bạn không đăng nhập ngay sau khi khởi động, rõ ràng. Ngoài ra Apache không chạy như bạn, vì vậy bạn phải cấp cho nó đặc quyền. Nó nên bắt đầu ở một phần của các kịch bản khởi động, và thông thường thì có.
Gilles 'SO- ngừng trở thành ác quỷ'

@Gilles đúng. Cảm ơn đã làm sáng tỏ điều đó.
n0pe

Câu trả lời:


12

Debian (Ubuntu / Linux Mint)

RCconf (CLI-GUI)

sudo apt-get install rcconf
sudo rcconf

cập nhật-RC.d

sudo update-rc.d -f apache2 add

hoặc là

sudo update-rc.d apache2 defaults

RedHat / Fedora / CentOS

chkconfig

sudo chkconfig --add apache2

hoặc là

sudo chkconfig -- level 35 apache2 on

Apache đã được kiểm tra khi tôi chạy RCconf.
eoinoc

Chạy update-rc.dlệnh dẫn đến một lỗi : update-rc.d: warning: apache2 start runlevel arguments (none) do not match LSB Default-Start values (2 3 4 5).
eoinoc

Bạn đã cung cấp mặc định update-rc.d apache2 hoặc update-rc.d -f apache2 thêm 3 5
earthmeLon

1
Cảm ơn, nhưng không làm việc. Đầu tiên dẫn đến một cảnh báo "đã tồn tại", thứ hai dẫn đến warning: apache2 start runlevel arguments (none) do not batch LSB default-Start values (2 3 4 5).
eoinoc

6

Vì Mint dựa trên Ubuntu và Ubuntu đã chuyển sang Upstart, Upstart Cookbook có tất cả thông tin để bắt đầu dịch vụ khi khởi động hoặc tại bất kỳ runlevel nào được chỉ định.

Trang web này Cung cấp một cuốn sách nấu ăn chi tiết để bắt đầu Apache khi khởi động.


Trang đó nói về việc đặt một tập lệnh bash /etc/init.d/apache2. Nhưng tập tin đó chứa đầy một tập lệnh bash phức tạp hơn nhiều, vốn phải được đặt bởi chính Apache.
eoinoc

3

Một nguyên nhân khác của cùng một vấn đề là sự ưu tiên của các liên kết apache trong RC [0-6] .d. Của tôi là S90 và K09 và Apache sẽ không khởi động. Đặt các ưu tiên theo mặc định của họ, 20, làm việc cho tôi. Các liên kết hiện có cần phải được loại bỏ đầu tiên.

sudo update-rc.d -f apache2 remove
sudo update-rc.d apache2 defaults

2

Khi tắt máy, tôi thấy một lỗi:

Lỗi cú pháp trên dòng 230 của /etc/apach2/apache.conf .... / etc / apache / site-enable / mysite: Không có tệp hoặc thư mục như vậy

Điều này là, mysiteđược liên kết với một tập tin trong thư mục nhà của tôi.

Điều đó thường không phải là một vấn đề, tôi nghĩ.

Nhưng theo tôi biết, phân vùng nhà của tôi được mã hóa . Do đó, tôi đoán rằng Apache không thể đọc tệp trang web ảo khi nó đang tải. Các tập tin không thể truy cập cho đến khi tôi nhập mật khẩu của tôi.

Một tình huống phức tạp, và mất nhiều tháng để xử lý nó :)


Vì vậy, làm thế nào bạn làm việc đó ra?
Jonas ppelgran

0

Một câu trả lời mới được cập nhật vào năm 2019:

sudo systemctl bắt đầu httpd

sudo systemctl kích hoạt httpd

Lệnh systemctl là một công cụ mới để điều khiển hệ thống và dịch vụ systemd. Đây là sự thay thế của quản lý hệ thống init SysV cũ. Hầu hết các hệ điều hành Linux hiện đại đang sử dụng công cụ mới này. Nếu bạn đang làm việc với CentOS 7, Ubuntu 16.04 trở lên hoặc hệ thống Debian 9. Họ đã chọn systemd ngay bây giờ.

Dịch vụ tự động kích hoạt khi khởi động hệ thống. Đây là tùy chọn tương tự cho systemd so với chkconfig cho init SysV.


1
Bạn có thể xem xét lật đơn hàng, để nó được kích hoạt trước khi bạn yêu cầu bắt đầu.
Jeff Schaller
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.