Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

For me, I run "killall nginx" and start it by "sbin/nginx", anyone has a better restart script?

BTW: I install nginx from source, i do not find 'service nginx' command or /etc/init.d/nginx

share|improve this question
    
Why are you installing from source? Nginx packages are available for most good Server linux distributions. Or you could roll your own packages, but not using packages is a bugger for maintainability. –  Tom O'Connor Dec 16 '10 at 9:56
    
because of mod_rails –  larry Dec 16 '10 at 12:41

5 Answers 5

up vote 16 down vote accepted

The nginx package supplies a /etc/init.d/nginx script that provides the usual start|stop|restart|reload ... functionality.

/etc/init.d/nginx restart

will restart nginx

as will

service nginx restart

Edit

Here is a link to a script you can use as /etc/init.d/nginx.

share|improve this answer
    
Depends on your repository. The Nginx source does not provide init scripts so if you like being updated and compile from source you will have to get one from the wiki. –  Martin Fjordvald Dec 16 '10 at 8:31
    
I must have more coffee before answering questions ... –  Iain Dec 16 '10 at 8:42
    
what does service nginx restart point to and is it appropriate to reload something when a change is made to init.d/nginx ? My two commands (/etc/init.d/nginx and service nginx) seem out of sync. –  Danny Apr 13 '13 at 22:22
    
@Danny: dunno I wrote this >2 years ago. –  Iain Apr 13 '13 at 22:33

http://wiki.nginx.org/CommandLine

inside the links there are some command for start and stop nginx server

for starting nginx:

/usr/bin/nginx

for stoping nginx:

/usr/bin/nginx -s stop

/usr/bin depends on where you install your nginx

share|improve this answer
1  
@slm fixed! just adding some more detail. –  LiJung Jun 11 '13 at 1:38

You can find init scripts in the NginX Wiki: http://wiki.nginx.org/Configuration#Init_Scripts

The restart function runs the following command:

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

If you've nginx installed in /opt/nginx, replace BASEDIR= by BASEDIR=/opt/nginx.

share|improve this answer

Usually, packages installed from source don't install startup script at /etc/init.d/. You have two options.

1- You can look for a script in the source code directory or on the website, and customise it if needed.

2- You can copy a startup script for another package from your system and customise it.

share|improve this answer

After editing the configuration files, I restart it like this on OpenBSD:

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

The HUP signal makes it re-read its configuration files, the tail shows whether any errors have been encountered, the date puts those errors into the context (an error has occurred only if the time from date matches the time from the log), and sleep 1 ensures that there are no race conditions between reading from the log prior to nginx having had a time to write to it.

This is how it looks:

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# 

The fact that the time from the log is not between times printed by date indicates that no errors have been encountered this time around, and the new configuration is a good one.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.