我正在使用Amazon Linux AMI 2017.03.1(HVM),SSD卷types。
我通过下面的方式安装了node.js,npm,因为我想全局安装,如果我不全局安装pm2,当我configurationEC2 bootstrapping启动pm2命令时,它不起作用。
之后,我创build了自己的AMI图像。
### node.js, npm install ### $ sudo su $ curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - $ yum -y install nodejs ### pm2 install ### $ npm install pm2 -g
当我通过自己的AMI创build新的EC2实例时,这里是我的“高级详细信息”中的用户数据文本。
### user-data ### #!/bin/bash cd /home/ec2-user/Node.js-Test sudo git pull origin master export PM2_HOME=/home/ec2-user/ sudo env PATH=$PATH:/usr/bin/ pm2 startup systemv -u ec2-user --hp /home/ec2-user su ec2-user pm2 start /home/ec2-user/Node.js-Test/app.js pm2 save
所以当我用上面的configuration启动新的EC2实例时,pm2命令正在工作,但是我看不到正在运行的pm2列表。
当我检查日志文件/var/log/cloud-init-output.log时 ,它有运行pm2应用程序的信息!
### /var/log/cloud-init-output.log ### [PM2] Spawning PM2 daemon with pm2_home=/home/ec2-user/ [PM2] PM2 Successfully daemonized [PM2] Starting /home/ec2-user/Node.js-Test/app.js in fork_mode (1 instance) [PM2] Done. ┌─────────────────────────────────────────────────────────────────────────────────────────────┐ │ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │ ├────────────────────────────────────────────────────────────────────────────────────────────── │ app │ 0 │ fork │ 2677 │ online │ 0 │ 0s │ 99% │ 15.4 MB │ root │ disabled │ └─────────────────────────────────────────────────────────────────────────────────────────────┘ Use 'pm2 show <id|name>' to get more details about an app
但是我看不到运行pm2 list @ ec2-user,@root
### in terminal EC2 instance ### [ec2-user@ip-172-31-10-85 ~]$ pm2 list ┌──────────────────────────────────────────────────────────────────────────────────────┐ │ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │ └──────────────────────────────────────────────────────────────────────────────────────┘ Use 'pm2 show <id|name>' to get more details about an app [ec2-user@ip-172-31-10-85 ~]$ sudo su [root@ip-172-31-10-85 ec2-user]# pm2 list ┌──────────────────────────────────────────────────────────────────────────────────────┐ │ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │ └──────────────────────────────────────────────────────────────────────────────────────┘ Use 'pm2 show <id|name>' to get more details about an app
有谁知道这个问题和解决scheme? 谢谢。
我改变了EC2用户数据中的几个命令
#!/bin/bash cd /home/ec2-user/Node.js-Test sudo git pull origin master sudo pkill -f PM2 sudo pm2 start /home/ec2-user/Node.js-Test/app.js sudo pm2 startup sudo pm2 save
我可以看到pm2列表,现在键入sudo -i pm2 list
。 并显示空列表,当我只是键入pm2 list
。
[ec2-user@ip-172-31-14-68 .pm2]$ sudo pm2 list ┌──────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐ │ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │ ├──────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤ │ app │ 0 │ fork │ 2458 │ online │ 0 │ 11m │ 0% │ 29.3 MB │ root │ disabled │ └──────────┴────┴──────┴──────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
这里是/root/.pm2/dump.pm2
上下文。
https://github.com/geoseong/Node.js-Test/blob/master/pm2/dump_pm2_sudo_170904
希望对那些得到这个问题的人有所帮助。
谢谢。