2016-11-25 38 views
1

私はubuntuボックスでpm2を実行できません。 何が問題なのかよく分かりません。 pm2はグローバルにインストールされています。bash:pm2:コマンドが見つかりません

npm list -g --depth=0 
/opt/nodejs/lib 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
└── [email protected] 

しかし、私は

userdown 
Starting Script is not provided 

バージョンのインストールから

node v4.5.0 
npm v2.15.9 

ログ他のアプリを実行する場合、私はまだ

pm2 
-bash: pm2: command not found 

を得る:

sudo npm install pm2 -g 
npm WARN optional dep failed, continuing [email protected] 
/opt/nodejs/bin/pm2 -> /opt/nodejs/lib/node_modules/pm2/bin/pm2 
/opt/nodejs/bin/rundev -> /opt/nodejs/lib/node_modules/pm2/bin/rundev 
/opt/nodejs/bin/pm2-dev -> /opt/nodejs/lib/node_modules/pm2/bin/pm2-dev 
/opt/nodejs/bin/pm2-docker -> /opt/nodejs/lib/node_modules/pm2/bin/pm2-docker 
[email protected] /opt/nodejs/lib/node_modules/pm2 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected]) 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected], [email protected]) 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected], [email protected], [email protected], [email protected]) 
├── [email protected] ([email protected]) 
├── [email protected] ([email protected], [email protected]) 
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]) 
├── [email protected] ([email protected], [email protected], [email protected]) 
└── [email protected] 
[email protected]:~$ pm2 
-bash: pm2: command not found 

Ubuntuのバージョン:

uname -a 
Linux vps2 2.6.32-042stab111.11 #1 SMP Tue Sep 1 18:19:12 MSK 2015 x86_64 x86_64 x86_64 GNU/Linux 
+0

この質問は 'bash'と何が関係していますか? – Jdamian

答えて

5

OK]をクリックして自分自身を答えました。 私は、私が、/ usr/binに

whereis userdown 
userdown: /usr/bin/userdown /usr/bin/X11/userdown /opt/nodejs/bin/userdown 

HMMを確認

whereis pm2 
pm2: /opt/nodejs/bin/pm2 

のために何が起こるかを確認してください.... だから私は

sudo ln -s /opt/nodejs/bin/pm2 /usr/bin/pm2 

を行なったし、それが動作します:)

+0

ありがとうといいです。 –

+0

私はuserdownを見つけられませんでしたが、まだsudo ln -s/opt/nodejs/bin/pm2/usr/bin/pm2が働いています:) –

0

問題は、NPMをsudoとして実行しているため、アクセスできるだけです使用:

sudo pm2 start server.js 

sudoをせずにインストールし、あなたも-gフラグなしでインストールしてnode_modulesディレクトリから直接呼び出すことができます。これは、あなたが作業しているマシンでroot(admin)権限を持っていない場合に便利です。

npm install pm2 
./node_modules/.bin/pm2 start server.js 
0

、適切nodejsのisntallationをフォローNPM許可の修正およびグローバルパッケージの調整をNPM:

https://gist.github.com/servercharlie/9a7e0d0e1645b4c6fbfe5de566fcf1ca

@

スクリプトはroot権限を必要とし、いくつかのことを行う必要がありますか?

を:(つまり、あなたがポート80を使用してのエラーを取得している)[間違った] - ワット/ sudoを

を実行しようとしている[正しい] - rootでログインし、 "sudoのsuが" その後、PM2 app.jsを開始します--name "whatever" --watch

それでは、bashrcやプロファイルファイルを設定する必要はありません。

余分:あなたのアプリが狂ったことを心配していますか? (つまり、rootとして実行されるので、スクリプトはnodejsのexecを使用して、狂ったことをすることができます)。

したがって、あなたのスクリプトでまずroot-stuffを実行してから、タイムアウト後に特権を下げてください:

//私はポート80を使います。この時点でスクリプトのuidはROOTです。

app.listen(80);

// 2秒後に私たちはuid AZUREUSERに切り替えます。これは明らかにrootではありません。

のsetTimeout(関数(){

process.setuid( "azureuser");

}、2000);

関連する問題