我们正在使用AWS CodeDeploy和PM2 version: '^0.12.14'
来管理我们的Web应用程序,但是在点击pm2 list
之后我们得到了一个空列表,尽管该节点应用程序已成功启动且PM2
正在运行当前在服务器上,PM2
日志对于应用程序日志和PM2日志~/.pm2/pm2.log
都正常工作,如下所示:
Starting execution sequence in -cluster mode- for app name:app id:0
App name:app id:0 online
但是,当我们尝试显示应用app
详细信息时,它会显示没有具有此名称甚至是pm2 show app
的应用,它会向我们提供[PM2][WARN] app doesn't exist
。
我们不知道究竟是什么问题,你能帮助我们吗?
答案 0 :(得分:0)
我遇到与pm2 0.12.x
相同的问题,我认为更新应该解决这个问题,但遗憾的是,我使用版本1.1.3
然后我开始尝试使用docker
重现这一点。
我使用ssh config创建了一个docker容器,并将其作为ssh服务器运行,我部署了我的应用程序。我无法重现这个问题。
比较两个服务器(我的实时服务器和在docker中运行的服务器)的环境变量,我发现唯一的区别是PM2_HOME
变量,当我在我的实时服务器上取消设置PM2_HOME变量时,我可以使用pm2 list
再次列出正在运行的应用程序
我认为PM2主文件夹默认为~/.pm2
我的PM2_HOME
是用户的主文件夹。
所以我的解决方案是取消设置env变量或将其设置到正确的文件夹,在我的例子中是/home/username/.pm2
以下是带有节点的示例Dockerfile
,npm& pm2,您可以在其中部署应用程序并与服务器配置进行比较:
FROM node:latest
apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:root' | chpasswd
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile
RUN npm install -g pm2@1.1.3
EXPOSE 22