前言:最近,有一个项目需要用到开机自动启动程序,所以就研究了一下,环境为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/node

2.添加开机自启动

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程序无法访问解决方法的更多相关文章

  1. Linux下登录Oracle命令行时删除键^H解决方法

    Linux下登录Oracle命令行时删除键^H解决方法 在linux服务器下登录oracle的控制台,如果输入错误,想用删除键删除时却不能删除,输出的是^H的字符. 方法 用如下的命令可以使删除键生效 ...

  2. linux下python启动第三方程序,并控制关闭

    import subprocess import os import signal p = subprocess.Popen("recordmydesktop -o /home/test/t ...

  3. linux下开机启动脚本的方法

    1.准备好要随机启动的程序,例如 /root/test.sh .确保其可执行. 2.在目录 /etc/init.d/ 下编写控制脚本 test . #!/bin/sh ### BEGIN INIT I ...

  4. linux下误删mysql的root用户,解决方法

    开始对liunx界面不熟悉,可能由于不小心,把root误删了,怎么办? 1. # killall mysqld    干掉所有mysql进程 2. # mysqld_safe --skip-grant ...

  5. Linux下is not in the sudoers file解决方法

    最近在学习linux,在某个用户(xxx)下使用sudo的时候,提示以下错误:xxx is not in the sudoers file. This incident will be reporte ...

  6. Error: Linux下 mysql.sock文件丢失被删除解决方法

    在默认情况下,Mysql安装以后会在/tmp目录下生成一个mysql.sock文件,如该文件丢失则Mysql将不能够正常启动,解决方法:使用mysqld_safe 启动即可解决: #basedir:m ...

  7. Linux下DM无法显示建模界面的解决方法

    方法来源: http://www.linuxhospital.com/read/unable-to-resolve-function-glxqueryextension-in-hyperview.ht ...

  8. linux下开机启动svn配置

    1.在 vi /etc/rc.local文件下添加以下: /home/svn/subversion-1.8.18/bin/svnserve -d --listen-port 3690 -r /home ...

  9. screen mac linux下一种让程序后台运行的方法

    1: screen 场景的意思.字面意思就是软件运行在不同场景 (1)创建会话 使用命令“screen -S RunWork”来创建一个screen会话,命令执行之后,就会得到一个新的shell窗口, ...

随机推荐

  1. 基于C++17的泛型函数容器实现方法研究

  2. Excel 运算符(一):算术运算符

    算术运算符用于最基本的加.减.乘.除运算. 运算符 含义 实例 结果 + 加法运算 =2+3 5 - 减法运算 =5-2 3 * 乘法运算 =5*2 10 / 除法运算 =4/2 2 % 百分数 =5 ...

  3. SpringBean的实例化

    在Spring框架中,想使用Spring容器中的Bean,需要先实例化Bean SpringBean的实例化有3种方式 构造方法实例化 (最常用) 在Java配置类中,写一个构造方法,在这个构造方法中 ...

  4. iommu分析之---intel iommu初始化

    intel 的iommu 是iommu框架的一个实现案例. 由于intel 的iommu 实现得比arm smmv3复杂得多,里面概念也多,所以针对intel 实现的iommu 案例的初始化部分进行一 ...

  5. JavaScript之数组常用API

    这篇文章主要帮助大家简单理解数组的一些常用API用法,许多小伙伴常用方法记不住?别急,看完下面的介绍您一定就会明白各个方法是如何用的了.该文章适合新手小白看,大佬可以多多指点️! 1.数组的创建以及A ...

  6. SpringMVC前置复习以及扩展

    SpringMVC ssm:mybatis+Spring+SpringMVC javaSE javaweb 框架 理解的DAO层和Service层 先简单来讲下Dao层,和Service层的概念: S ...

  7. Homework5

    问:什么是分而治之? 答:分而治之就是通过一系列的方法,将复杂的问题逐渐划分成若干份相对简单的问题的方法,对每个相对简单问题进行一一解决,若干个简单问题的解的集合就是一个复杂问题的解.分而治之的应用体 ...

  8. kingbaseES R6 读写分离集群修改ssh端口案例

    数据库环境: test=# select version(); version ------------------------------------------------------------ ...

  9. 【FAQ】接入华为应用内支付服务常见问题解答

    HMS Core应用内支付服务(In-App Purchases,IAP)为应用提供便捷的应用内支付体验和简便的接入流程.开发者的应用集成IAP SDK后,调用IAP SDK接口,启动IAP收银台,即 ...

  10. 面试突击83:什么情况会导致@Transactional事务失效?

    一个程序中不可能没有事务,而 Spring 中,事务的实现方式分为两种:编程式事务和声明式事务,又因为编程式事务实现相对麻烦,而声明式事务实现极其简单,所以在日常项目中,我们都会使用声明式事务 @Tr ...