Làm thế nào để bạn khởi động lại Apache?


249

Tôi đã chuyển từ SLES sang Ubuntu và bây giờ tôi muốn khởi động lại máy chủ cục bộ của mình. Trong SLES tôi đã sử dụng:

rcapache2 restart

nhưng điều này bằng cách nào đó dường như không hoạt động trong Ubuntu. :

Làm thế nào để tôi khởi động lại Apache của tôi?

Câu trả lời:


364

sudo service apache2 restart cho cách mà mượn từ Red Hat.


1
Tôi nghĩ servicelà cách LSB, và nên hoạt động trong hầu hết các bản phân phối, bây giờ Debian và Ubuntu cuối cùng đã có nó.
Marius Gedminas

10
sudo restart apache2không hoạt động trong Ubuntu 12.04. Không chắc chắn về các phiên bản Ubuntu khác.
saji89

2
@ saji89 bạn cần làm sudo service apache2 restart, sau đó nó sẽ hoạt động.
Kevdog777

9
sudo restart apache2không hoạt động trong Ubuntu 14.04. sudo service apache2 restartđang làm việc khó khăn.
toesslab

105

Bạn có muốn khởi động lại Apache hay bạn muốn tải lại cấu hình của nó một cách duyên dáng ?

Mọi người đều trả lời câu hỏi đầu tiên; bạn có thể làm thứ hai với

sudo service apache2 reload

Tải lại một cách duyên dáng nhanh hơn một chút và không có thời gian chết.

Có một cảnh báo: nếu tệp cấu hình apache của bạn có lỗi (ví dụ: cấu hình tệp nhật ký trong thư mục không tồn tại), máy chủ có thể thoát âm thầm mà không in bất kỳ thông báo lỗi nào tới bàn điều khiển. Hầu hết các lỗi khác được đánh bắt bởi apache2ctl configtestđó service apache2 reloadchạy trước khi thực hiện tải lại thực tế với apache2ctl graceful.


1
Đúng! Sử dụng duyên dáng sẽ tốt hơn nhiều nếu bạn muốn khởi động lại mà không khởi động người xem trang web của bạn!
thiệu vào

Tôi thấy rằng đó là một lợi thế của việc khởi động lại nếu Apache không chạy thì nó sẽ khởi động . -> Sẽ tải lại cũng bắt đầu nó?
Torben Gundtofte-Bruun

Tôi không nghĩ vậy - thậm chí tệ hơn, tải lại sẽ dừng một apache đang chạy nếu bạn mắc lỗi cú pháp trong tệp cấu hình.
Marius Gedminas

3
Luôn luôn chạy sudo apache2ctl configtesttrước khi khởi động lại duyên dáng. Khởi động lại duyên dáng sẽ thất bại và apache sẽ bị dừng nếu cấu hình có lỗi cú pháp.
Mikko Rantalainen

@MikkoRantalainen: cảm ơn, tôi đã chỉnh sửa câu trả lời để bỏ phần thô apache2ctl gracefulvà thay vào đó chỉ khuyên bạn nên service apache2 reloadchạy phần configtesttrước graceful.
Marius Gedminas

26

Cách đề nghị dưới Ubuntu để bắt đầu / dừng dịch vụ (không chỉ là Apache) là sử dụng start / stop / reload lệnh (mà thực sự là liên kết tượng trưng đến initctl chương trình, một phần của mới nổi ).

Đối với các dịch vụ sử dụng /etc/init.dtập lệnh kế thừa , tập lệnh tương ứng sẽ được gọi với các tham số chính xác; đối với các dịch vụ sử dụng cơ sở hạ tầng mới nhất, quá trình chuyển đổi sự kiện thích hợp sẽ được báo hiệu cho trình nền mới bắt đầu thông qua initctl .

Vì vậy, để bắt đầu / dừng / tải lại / khởi động lại apache trên Ubuntu, bạn có thể sử dụng:

sudo start apache2
sudo stop apache2
sudo reload apache2
sudo restart apache2

20
sudo /etc/init.d/apache2 restart

Tất nhiên bạn có thể trao đổi trên restartcho stop, startvà (tôi nghĩ)reload


2
Khi thực hiện điều này trong Ubuntu gần đây, bạn nhận được thông báo về cách thực hiện theo cách mới, mặc dù nó sẽ vẫn thực hiện lệnh bạn muốn.
jfmessier

Tôi đã không nhận ra Apache đã chuyển sang Upstart chưa.
Oli

Tôi không thấy tin nhắn đó nữa.
Tim


11

Như Marius nói duyên dáng nên được sử dụng để khởi động lại:

sudo apache2ctl graceful

hoặc là

sudo apache2ctl graceful-stop

để ngăn chặn Apache một cách duyên dáng.

Các lệnh này đợi cho đến khi tất cả các yêu cầu cho các trang web đã được phục vụ trước khi khởi động lại / dừng máy chủ web để người dùng của bạn không nhận được một nửa trang web.


4

Đầu tiên bạn kiểm tra trạng thái của mình bằng lệnh này

sudo service apache2 status

sau đó dừng dịch vụ đang chạy

sudo service apache2 stop

sau đó sử dụng lệnh này:

sudo /opt/lampp/lampp start

giải pháp này đã làm việc cho tôi.


2

nếu bạn đang cài đặt phiên bản Apache 2.4 trong hệ thống của mình, để bắt đầu khởi động lại hoặc dừng máy chủ Apache của bạn trên hệ thống cục bộ của bạn, thì bạn nên chạy lệnh sau

./apachectl start

hoặc bạn có thể sử dụng khởi động lại , cũng dừng theo yêu cầu của bạn. đây là mã thử nghiệm


1

bạn có thể sử dụng các dịch vụ để khởi động lại Apache

service apache2 restart

và bạn có thể sử dụng tất cả các chức năng cho nó (Dừng - Bắt đầu - Tải lại)



0
sudo systemctl restart apache2

systemctl - Điều khiển hệ thống systemd và trình quản lý dịch vụ.

systemctl có thể được sử dụng để hướng nội và kiểm soát trạng thái của trình quản lý dịch vụ và hệ thống "systemd".


-1

nếu bạn là root: (Tôi nghĩ rằng root Ubuntu bị vô hiệu hóa, hơn là sử dụng lệnh 'sudo'!)

$ /etc/init.d/apache stop
$ /etc/init.d/apache start
$ /etc/init.d/apache restart
$ /etc/init.d/apache reload 

(Nếu bạn đã sử dụng a2ensite hoặc a2dissite, bạn phải tải lại cấu hình apache của mình)


rootkhông bị vô hiệu hóa, nó chỉ không có mật khẩu nếu bạn không tự cung cấp mật khẩu.
Mikael Auno

1
được //stop apachecho là một bình luận? nếu như vậy, ký hiệu vỏ tiêu chuẩn sẽ #stop apache, //không làm việc trong bash
Mikel

Tài khoản root @MikaelAuno bị vô hiệu hóa nếu nó không có mật khẩu
T0xicCode

1
@ xav0989 Đó là vấn đề định nghĩa. Chắc chắn bạn không thể đăng nhập trực tiếp roothoặc đăng nhập bằng rootbất kỳ cách nào yêu cầu rootmật khẩu cho vấn đề đó, nhưng có nhiều cách khác để trở thành root. Hãy thử ví dụ sudo -itheo sau whoamivà bạn sẽ thấy rằng bạn thực sự đã đăng nhập như root. Ngoài ra, nếu bạn ps aux | grep rootsẽ thấy rằng bạn đã có rất nhiều quy trình trên hệ thống của bạn đang chạy root. Vì vậy, được cho là, rootkhông bị vô hiệu hóa.
Mikael Auno

@MikaelAuno hay sudo -E -s. Bằng cách vô hiệu hóa Tôi giả sử rằng điều đó có nghĩa là bạn không thể đăng nhập trực tiếp root, nhưng bạn vẫn có thể chạy các quy trình như root.
T0xicCode
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.