前言:最近,有一个项目需要用到开机自动启动程序,所以就研究了一下,环境为redhat8,程序是node,使用forever来进行node程序的持久化,程序使用的是443端口,开启的是https
文章插图
1.把node和forever的快捷方式放在放在/usr/bin/(环境变量)下面,所有的命令默认是从这里面进行调用的查询下node的地址在哪里
ln -s /home/tool/node/node-v8.11.3-linux-x64/bin/node /usr/bin/node//这里的路径就是安装node的路径
ln -s /home/tool/node/node-v8.11.3-linux-x64/bin/node /usr/bin/node2.添加开机自启动
vi /etc/rc.d/rc.local
添加一下代码forever start -s /home/demo/app.js//这里的程序所在的路径
文章插图
3.设置一下权限即可
chmod +x /etc/rc.d/rc.local
4.重启查看forever list看程序有没运行我们可以看到已经启动了程序,我们访问下程序文章插图
我们发现程序并不能访问
网站报错内容为:
此网站无法提供安全连接
协议不受支持
客户单端和服务器不支持一般SSL协议版本或加密套件
文章插图
5.排查过程:1.防火墙1首先关闭防火墙进行排查是否是原因所在 , 结果发现并不是原因:
文章插图
2.更换端口:我们把程序的启动端口修改了,改为了8081然后重启服务器进行测试,结果发现重启服务器可以重新启动
文章插图
3.ssl证书问题在网上找了一圈就没有相关的解决方案,基本都是ssl证书的问题,我之前也觉得也是ssl证书过期的问题,但是如果是ssl证书过期我用上面的http也可以实现访问,所以问题不是出在了这里,随后我又找了开机启动程序相关的问题,结果发现都不是问题所在 , 问题就此耽搁住了
4.使用443端口,用命令启动程序我们可以看到,点击下面的地址是可以直接进入程序的,这一点我已经验证过了
文章插图
5.转机突然,我想到既然用命令行的方式可以启动程序,那我直接把命令行的过程复现一下不就可以了吗,首先,我复现下用命令行启动的过程
1.cd /程序的目录2.启动程序
我们再来看看开机启动程序的脚本forever start -s /home/demo/app.js//这里的程序所在的路径
两者对比,我们发现 , 命令行启动是cd到具体的目录下然后在执行启动命令,而开机脚本写的是后面带上程序的绝对路径 , 我想应该就是这个绝对路径的区别,然后我修改了开机脚本,具体如下:文章插图
我们重启服务器
我们可以看到已经顺利进来了,就此问题解决
文章插图
尾巴:虽然这个问题解决起来非常简单,但是排查问题的过程确实非常漫长而且头疼,找打不到相关对应的资料 , 只能自己摸索尝试
【linux下开机启动443程序无法访问解决方法】
推荐阅读
- 抖音直播礼物最新价目大全
- llinux下mysql建库、新建用户、用户授权、修改用户密码
- RedHat7.6安装mysql8步骤
- 【ps下载与安装】Adobe Photoshop 2022 for Mac v23.5 中文永久版下载 Ps图像编辑软件
- Linux执行jsp命令的时候报错:-bash: jps: command not found
- 地下城堡3:魂之诗上京的进人方法是什么
- 地下城堡3:魂之诗桶中人之国怎么通关
- 手机版的《我的世界》要怎么骑马和下马(我的世界手机版怎么才能骑马)
- 如何修改微信开机密码(微信原密码忘了如何重新设置密码)
- 齐博X1-栏目的调用1