1、chkconfig
chkconfig是一个用于维护/etc/rc[0-6].d目录的命令行工具。
0:系统停机状态,系统默认运行级别不能设置为0,否则不能正常启动,机器关闭。
1:单用户工作状态,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录。
2:多用户状态,没有NFS支持。
3:完整的多用户模式,有NFS,登陆后进入控制台命令行模式。
4:系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
5:登陆后进入图形GUI模式,XWindow系统。
6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。运行init 6机器就会重启。
实操
- 编写nginx启动脚本,并加入系统服务
vi /etc/init.d/nginx
- 然后在里边填写内容
注意前四行别忽略,必须要有,而且要顶格。起作用的,不加会报错。
#!/bin/bash # chkconfig: - 30 21 # description: http service. # Source Function Library . /etc/init.d/functions # Nginx Settings,这块根据具体情况修改 NGINX_SBIN="/usr/local/nginx/sbin/nginx" NGINX_CONF="/usr/local/nginx/conf/nginx.conf" NGINX_PID="/usr/local/nginx/logs/nginx.pid" RETVAL=0 prog="Nginx" start() { echo -n $"Starting $prog: " mkdir -p /dev/shm/nginx_temp daemon $NGINX_SBIN -c $NGINX_CONF RETVAL=$? echo return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc -p $NGINX_PID $NGINX_SBIN -TERM rm -rf /dev/shm/nginx_temp RETVAL=$? echo return $RETVAL } reload() { echo -n $"Reloading $prog: " killproc -p $NGINX_PID $NGINX_SBIN -HUP RETVAL=$? echo return $RETVAL } restart() { stop start } configtest() { $NGINX_SBIN -c $NGINX_CONF -t return 0 } case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) restart ;; configtest) configtest ;; _) _echo* $"Usage: $0 Unknown macro: {start|stop|reload|restart|configtest} " RETVAL=1 esac exit $RETVAL
- 保存该脚本后更改权限
chmod 777 /etc/init.d/nginx
- 添加nginx服务到chkconfig中管理
chkconfig --add nginx
- 设置nginx开机自启
chkconfig nginx on
2、systemctl
systemctl 用于命令行,它是一个用来管理 systemd 的守护进程/服务的基础工具,例如:(开启、重启、关闭、启用、禁用、重载和状态)。
所有服务创建的 unit 文件位与 /etc/systemd/system/
实操
- 配置自启文件
vi /usr/lib/systemd/system/nginx.service
[Unit] #Description指定当前服务的简单描述,改成自己需要的 Description=nginx网站代理服务 #After表示当前服务在network.target之后启动,可以指定多个服务,以空格隔开。 After=network.target [Service] #ExecStart将以fork()方式启动,此时父进程将会退出,子进程将成为主进程。 Type=forking # ExecStart指定启动进程时执行的命令。 # ExecReload指定当该服务被要求重新载入配置时所执行的命令。另外,还有一个特殊的环境变量 $MAINPID 可用于表示主进程的PID,例如可以这样使用:/bin/kill -HUP $MAINPID。强烈建议将 ExecReload= 设为一个能够确保重新加载配置文件的操作同步完成的命令行。 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf #这里放启动命令 ExecReload=/usr/local/nginx/sbin/nginx -s reload #这里放重启命令 ExecStop=/usr/local/nginx/sbin/nginx -s quit #这里放停止命令 #web服务设置私有/tmp或/var/tmp目录 PrivateTmp=true [Install] # “WantedBy=multi-user.target”表示当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。 WantedBy=multi-user.target
- 设置开机自启
# 重新加载systemd配置文件 systemctl daemon-reload # 开启自启 systemctl enable nginx.service # 启动 systemctl start nginx #停止 systemctl stop nginx #重启 systemctl restart nginx
3、/etc/rc.d/rc.local
开机的时候会自动读取/etc/rc.d/rc.local文件,所以直接把启动命令放在文件中即可。
实操
vi /etc/rc.d/rc.local
# 在文件最下方添加启动命令,保存退出 /usr/sbin/nginx -c /etc/nginx/nginx.conf