CentOS 7 编译安装Nginx1.10.2 脚本启动失败解决思路

将nginx脚本放入/etc/init.d/中,在root下使用

/etc/init.d/nginx start Starting nginx (via systemctl): #卡住

检测服务状态如下输出:

[root@nginx]# service nginx status ● nginx.service - SYSV: Nginx is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server Loaded: loaded (/etc/rc.d/init.d/nginx; bad; vendor preset: disabled) Active: inactive (dead) since Wed 2017-01-18 08:37:35 UTC; 2s ago Docs: man:systemd-sysv-generator(8) Process: 18249 ExecStart=/etc/rc.d/init.d/nginx start (code=exited, status=0/SUCCESS) CGroup: /system.slice/nginx.service ├─7276 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf └─7277 nginx: worker process Jan 18 08:34:26 systemd[1]: Starting SYSV: Nginx is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server... Jan 18 08:34:26 systemd[1]: PID file /usr/local/nginx/logs/nginx.pid not readable (yet?) after start. Jan 18 08:37:35 systemd[1]: Stopped SYSV: Nginx is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server.

nginx脚本如下:

#!/bin/sh # # nginx - this script starts and stops the nginx daemin # # chkconfig: - 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server # processname: nginx # config: /usr/local/nginx/conf/nginx.conf # pidfile: /usr/local/nginx/logs/nginx.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/local/nginx/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" lockfile=/var/lock/subsys/nginx start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { configtest || return $? stop start } reload() { configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo } force_reload() { restart } configtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2 esac 解决思路

开始以为是文件权限的问题。创建nginx用户,并切换到nginx用户启动服务。
创建nginx nginx 组和用户
passwd nginx #创建密码登陆
并将ngixn 的所属关系都使用chown更改。

chown nginx:nginx /usr/local/nginx -R #更改所属关系 groupadd nginx useradd -g nginx nginx passwd nginx su nginx #切换nginx用户 /etc/init.d/nginx start #执行启动Nginx命令 #输出 Starting nginx (via systemctl): ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units === Authentication is required to manage system services or units. Authenticating as: Cloud User (centos) Password: #发现还是要输入密码... #应该是解决思路不对,启动关联到了centos用户,nginx用户尝试使用sudo命令启动 sudo /etc/init.d/nginx start We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for nginx: nginx is not in the sudoers file. This incident will be reported. #需要把nginx用户加入sudoers 文件中,好麻烦... #大致清楚了,就算root运行这个命令也需要root就切换到root尝试了下。 exit #root下sudo 运行成功 [root@nginx]# sudo /etc/init.d/nginx start Starting nginx (via systemctl): [ OK ] [root@nginx]# systemctl status nginx.service ● nginx.service - SYSV: Nginx is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server Loaded: loaded (/etc/rc.d/init.d/nginx; bad; vendor preset: disabled) Active: active (running) since Wed 2017-01-18 09:03:56 UTC; 15min ago Docs: man:systemd-sysv-generator(8) Process: 18719 ExecStart=/etc/rc.d/init.d/nginx start (code=exited, status=0/SUCCESS) Main PID: 18726 (nginx) CGroup: /system.slice/nginx.service ├─18726 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ├─18727 nginx: worker process └─18728 nginx: worker process Jan 18 09:03:55 systemd[1]: Starting SYSV: Nginx is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server... Jan 18 09:03:56 nginx[18719]: Starting nginx: [ OK ] Jan 18 09:03:56 systemd[1]: Started SYSV: Nginx is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server. #检查状态 systemctl status nginx.service ● nginx.service - SYSV: Nginx is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server Loaded: loaded (/etc/rc.d/init.d/nginx; bad; vendor preset: disabled) Active: active (running) since Wed 2017-01-18 09:44:10 UTC; 2s ago Docs: man:systemd-sysv-generator(8) Process: 18957 ExecStart=/etc/rc.d/init.d/nginx start (code=exited, status=0/SUCCESS) Main PID: 18964 (nginx) CGroup: /system.slice/nginx.service ├─18964 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ├─18965 nginx: worker process └─18966 nginx: worker process Jan 18 09:44:10 systemd[1]: Starting SYSV: Nginx is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server... Jan 18 09:44:10 nginx[18957]: Starting nginx: [ OK ] Jan 18 09:44:10 systemd[1]: Started SYSV: Nginx is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/02fcf269eccb1b9fb433d7c4a9dc2b51.html