我无法在ubuntu框上运行pm2。 我不确定问题是什么。 pm2全局安装。
npm list -g --depth=0
/opt/nodejs/lib
├── forever@0.15.3
├── node-gyp@3.4.0
├── npm@2.15.9
├── pm2@2.1.5
├── userdown@0.2.1
└── wait-for-mongo@0.2.0
但我还是得到了
pm2
-bash: pm2: command not found
如果我运行其他应用
userdown
Starting Script is not provided
版本
node v4.5.0
npm v2.15.9
安装日志:
sudo npm install pm2 -g
npm WARN optional dep failed, continuing fsevents@1.0.15
/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
pm2@2.1.5 /opt/nodejs/lib/node_modules/pm2
├── gkt@1.0.0
├── eventemitter2@1.0.5
├── semver@5.3.0
├── async@1.5.2
├── fclone@1.0.10
├── pidusage@1.1.0
├── vizion@0.2.13
├── commander@2.9.0 (graceful-readlink@1.0.1)
├── debug@2.3.0 (ms@0.7.2)
├── pm2-axon-rpc@0.4.5 (fclone@1.0.8)
├── pm2-deploy@0.3.3 (tv4@1.2.7)
├── pm2-multimeter@0.1.2 (charm@0.1.2)
├── chalk@1.1.3 (escape-string-regexp@1.0.5, ansi-styles@2.2.1, supports-color@2.0.0, strip-ansi@3.0.1, has-ansi@2.0.0)
├── cli-table@0.3.1 (colors@1.0.3)
├── mkdirp@0.5.1 (minimist@0.0.8)
├── source-map-support@0.4.6 (source-map@0.5.6)
├── nssocket@0.6.0 (eventemitter2@0.4.14, lazy@1.0.11)
├── pmx@0.6.8 (json-stringify-safe@5.0.1)
├── pm2-axon@3.0.2 (amp-message@0.1.2, escape-regexp@0.0.1, amp@0.3.1, debug@2.2.0)
├── cron@1.1.1 (moment-timezone@0.5.9)
├── yamljs@0.2.8 (glob@7.1.1, argparse@1.0.9)
├── chokidar@1.6.1 (path-is-absolute@1.0.1, async-each@1.0.1, inherits@2.0.3, glob-parent@2.0.0, is-glob@2.0.1, is-binary-path@1.0.1, readdirp@2.1.0, anymatch@1.3.0)
├── shelljs@0.7.5 (interpret@1.0.1, glob@7.1.1, rechoir@0.6.2)
└── moment@2.17.0
kamil@vps2:~$ 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 :(得分:6)
好的,我自己回答了。 我检查
会发生什么whereis pm2
pm2: /opt/nodejs/bin/pm2
然后我检查了
whereis userdown
userdown: /usr/bin/userdown /usr/bin/X11/userdown /opt/nodejs/bin/userdown
hmm in / usr / bin .... 所以我做了
sudo ln -s /opt/nodejs/bin/pm2 /usr/bin/pm2
它有效:)
答案 1 :(得分:0)
问题是您将NPM作为sudo运行,因此您只能使用以下命令访问它:
<div id="owl" class="owl-carousel">
<% @artists.each do |artist| %>
<div class="artist-card ">
<%= link_to artist, class: "poster" do %>
<%= image_tag artist.image.url(:thumb) %>
<% end %>
<div class="artist-info ell glassy-bg padmy padlx">
<div class="artist-card ">
<h6><%= artist.name %> <span>(<%= artist.instrument %>)</span></h6>
</div>
</div>
</div>
<% end %>
</div>
不使用sudo安装,您甚至可以在没有sudo pm2 start server.js
标志的情况下安装,并直接从-g
目录中调用它。如果您在正在使用的计算机上没有root(admin)权限,这可能很有用。
node_modules
答案 2 :(得分:0)
遵循正确的nodejs isntallation,npm权限修正和npm全局包调整:
@ https://gist.github.com/servercharlie/9a7e0d0e1645b4c6fbfe5de566fcf1ca
您的脚本需要做一些需要root权限的事情吗? (即:您在使用端口80时遇到错误)
[错误] - 尝试运行w / sudo
[正确] - 以root身份登录“sudo su”然后执行pm2启动app.js --name“what”--watch
这样做,不需要配置任何bashrc或配置文件。
额外:担心你的应用程序疯狂屎? (即,因为它以root身份执行,脚本可以使用nodejs的exec并做一些疯狂的事情。)
因此。执行此操作:首先使用脚本执行root-stuff,然后在超时后降低权限:
//我首先使用端口80 ..此时脚本的uid是ROOT。
app.listen(80);
// 2秒后我们切换到uid AZUREUSER,显然不再是root了。
的setTimeout(函数(){
process.setuid( “azureuser”);
},2000);
答案 3 :(得分:0)