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


95

Đối với tôi, tôi chạy "killall nginx" và khởi động nó bằng "sbin / nginx", có ai có kịch bản khởi động lại tốt hơn không?

BTW: Tôi cài đặt nginx từ nguồn, tôi không tìm thấy lệnh 'dịch vụ nginx' hoặc /etc/init.d/nginx


1
Tại sao bạn cài đặt từ nguồn? Các gói Nginx có sẵn cho hầu hết các bản phân phối linux Server tốt. Hoặc bạn có thể cuộn các gói của riêng bạn, nhưng không sử dụng các gói là một lỗi cho khả năng bảo trì.
Tom O'Connor

vì mod_rails
larry

Câu trả lời:


149

Gói nginx cung cấp tập lệnh /etc/init.d/nginx cung cấp chức năng start | stop | restart | reload ... thông thường.

/etc/init.d/nginx restart

sẽ khởi động lại nginx

như ý muốn

service nginx restart

Biên tập

Đây là một liên kết đến một tập lệnh mà bạn có thể sử dụng như /etc/init.d/nginx.


2
Phụ thuộc vào kho lưu trữ của bạn. Nguồn Nginx không cung cấp các tập lệnh init, vì vậy nếu bạn muốn được cập nhật và biên dịch từ nguồn, bạn sẽ phải lấy một tập lệnh từ wiki.
Martin Fjordvald

1
Tôi phải uống thêm cà phê trước khi trả lời câu hỏi ...
user9517

Dịch vụ nginx khởi động lại điểm gì và có phù hợp để tải lại một cái gì đó khi thay đổi được thực hiện cho init.d / nginx không? Hai lệnh của tôi (/etc/init.d/nginx và dịch vụ nginx) dường như không đồng bộ.
Danny

@Danny: dunno tôi đã viết cái này> 2 năm trước.
user9517

15

http://wiki.nginx.org/CommandLine

Bên trong các liên kết có một số lệnh khởi động và dừng máy chủ nginx

để bắt đầu nginx:

/usr/bin/nginx

để dừng nginx:

/usr/bin/nginx -s stop

/usr/bin phụ thuộc vào nơi bạn cài đặt nginx của bạn


4

Vì một số lý do, trên hệ thống nhúng tôi đang làm việc với nó là:

systemctl restart nginx

1
Câu hỏi này và hầu hết các câu trả lời là tám tuổi và lỗi thời. Đó là "một số lý do". Đây là cách chính xác để làm điều đó trên các hệ điều hành Linux hiện tại.
Michael Hampton

Ok, vì vậy có lẽ nó không chỉ đúng với các hệ thống nhúng sau đó
thảo quả

1

Sau khi chỉnh sửa các tệp cấu hình, tôi khởi động lại nó như thế này trên OpenBSD:

kill -HUP `cat /var/run/nginx.pid` && date && sleep 1 && \
    tail -2 /var/www/logs/error.log ; date

Các HUPtín hiệu làm cho nó tái đọc file cấu hình của nó, là tailchương trình cho dù bất kỳ lỗi nào đã gặp phải, các dateputs những lỗi vào ngữ cảnh (một lỗi đã xảy ra chỉ khi thời gian từ datephù hợp với thời gian từ nhật ký), và sleep 1đảm bảo rằng có không có điều kiện chủng tộc giữa việc đọc từ nhật ký trước khi nginx có thời gian để viết cho nó.

Cái này nó thì trông như thế nào:

Cns# kill -HUP `cat /var/run/nginx.pid` && date && sleep 1 && tail -2 /var/www/logs/error.log ; date
Tue Feb 12 10:58:52 PST 2013
2013/02/12 10:03:35 [emerg] 8120#0: directive "set" is not terminated by ";" in /etc/nginx/conf.d/etc.ngx.grok/bxr.su.conf:226
2013/02/12 10:04:19 [emerg] 8120#0: invalid return code "$uri_def" in /etc/nginx/conf.d/etc.ngx.grok/bxr.su.conf:231
Tue Feb 12 10:58:53 PST 2013
Cns# 

Thực tế là thời gian từ nhật ký không nằm trong khoảng thời gian được in bằng cách datechỉ ra rằng không có lỗi nào xảy ra trong khoảng thời gian này và cấu hình mới là một lỗi tốt.


0

Bạn có thể tìm thấy các tập lệnh init trong NginX Wiki: http://wiki.nginx.org/Configuration#Init_Scripts

Hàm khởi động lại chạy lệnh sau:

BASEDIR=
$BASEDIR/sbin/nginx -s stop
$BASEDIR/sbin/nginx $BASEDIR/conf/nginx.conf

Nếu bạn đã cài đặt nginx trong / opt / nginx, hãy thay thế BASEDIR=bằng BASEDIR=/opt/nginx.


0

Thông thường, các gói được cài đặt từ nguồn không cài đặt tập lệnh khởi động tại /etc/init.d/. Bạn có hai lựa chọn.

1- Bạn có thể tìm tập lệnh trong thư mục mã nguồn hoặc trên trang web và tùy chỉnh tập lệnh nếu cần.

2- Bạn có thể sao chép tập lệnh khởi động cho gói khác từ hệ thống của mình và tùy chỉnh nó.

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.