最近升级了下 linux 服务器配置,重启之后,发现要敲一堆命令行,挺麻烦的,能开启自启动就好了
参考资料:在 Linux 中利用 Service 命令添加系统服务及开机自启动
Linux 下设置 nginx 开机自动启动
1 编写服务启动脚本
编写一个脚本,然后把它放在/etc/init.d 这个目录下,再用 service + 脚本名字 运行即可
linux 下可以通过 vim 创建脚本然后添加脚本内容,我个人比较喜欢直接在 windows 上创建好,然后用 winscp 上传到服务器上面(需要注意 windows 和 linux 特殊字符的问题)
vim /etc/init.d/nginx
脚本内容如下:官方文档
2 主要配置修改
pidfile="/usr/local/nginx/logs/nginx.pid" //nginx.pid所在位置
nginx="/usr/local/nginx/sbin/nginx" //nginx 执行程序所在位置
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" //nginx 配置文件所在位置
如果找不到,或者忘记了上述文件所在位置,可以通过命令 find 查找
find / -name nginx
3 权限授予
chmod a+x /etc/init.d/nginx //a表示所有,+表示添加,x表示可执行
4 service 启动并设置自启动
service nginx start 启动
service nginx restart 重启
service nginx stop 停止
如果执行没有问题就可以通过 chkconfig 命令设置开机启动
chkconfig --add nginx //先执行
chkconfig nginx on //后执行
最后可以通过 chkconfig --list 查看自启动程序
5 问题总结
1 启动 Nginx 时一直卡着不动在 Starting nginx (via systemctl): 但是实际上还是启动成功了。
查看文件提示:PID file /usr/local/nginx/logs/nginx.pid not readable (yet?) after start.
大概率是因为 pidfile="/usr/local/nginx/logs/nginx.pid" 这个文件位置和 nginx.conf 里面的 pid 文件位置不对导致的。
另一种处理方法:(未验证)
在/usr/lib/systemd/system/nginx.service 中添加入下内容
ExecStartPost=/bin/sleep 0.1
2 启动 nginx 失败 提示 not bind()
简单的端口占用问题,找到端口,关闭就好了。
6 扩展(docker 自启动)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于