一、/etc/init.d下创建文件nginx
touch /etc/init.d/nginx
二、添加开机启动脚本
- 查看官网:https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/
将内容复制到/etc/init.d/nginx
文件中
三、修改 /etc/init.d/nginx 配置
nginx="/usr/local/nginx/sbin/nginx" //修改成nginx执行程序的路径。
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" //修改成nginx.conf文件的路径。
四、保存脚本文件后设置文件的执行权限
chmod a+x /etc/init.d/nginx
五、使用chkconfig进行管理,将nginx服务加入chkconfig管理列表
chkconfig --add /etc/init.d/nginx
六、使用service对nginx进行启动,停止、重启等操作
service nginx start
service nginx stop
service nginx restart
service nginx reload
七、设置终端模式开机启动
chkconfig nginx on
八、nginx.service配置
centos7
以上是用Systemd
进行系统初始化的
Systemd
服务文件以.service
结尾,比如现在要建立nginx
为开机启动,如果用yum install
命令安装的,yum命令会自动创建nginx.service
文件,直接用命令
systemcel enable nginx.service
设置开机启动即可。
在这里我是用源码编译安装的,所以要手动创建nginx.servic
e服务文件。
开机没有登陆情况下就能运行的程序,存在系统服务(system)里,即:
cd /lib/systemd/system
vim nginx.service
内容如下:
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
服务的说明
[Unit]
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
设置开机启动:
#systemctl enable nginx.service
停止开机自启动:
#systemctl disable nginx.service
其它命令:
#systemctl start nginx.service
#systemctl status nginx.service
#systemctl restart nginx.service
#systemctl stop nginx.service
九、可能出现的问题
- 1)、linux重启后无法开启nginx问题
"var/run/nginx/nginx.pid" no such file or directory
每次重启虚拟机后,var/run/nginx/目录都会被删除,所以无法在这个目录创建nginx.pid文件,可以自己创建/var/run/nginx/
目录,然后可以运行,但治标不治本,下次虚拟机重启目录还会丢失。
解决方法:打开/usr/local/nginx/conf/nginx.conf 配置文件
#pid logs/nginx.pid;###打开这个配置
同时在/usr/local/nginx目录下创建logs文件 :
mkdir logs
再次重启虚拟机,nginx正常运行。
原因:我们在配置文件显式的指定nginx.pid
文件存放位置,然后创建logs文件夹,当linux重启后,logs文件夹不会被删除