65303


**質問**  
EC2上で80番ポートのhttpサーバーをNode.jsで立てることになり、nodeを管理者権限で実行する必要があります。  
そこで、下記のようにsudo nodeを実行すると、

[code]

    [ec2-user@(ip-adress)~]$sudo node app.js
    sudo: node: コマンドが見つかりません
    
[/code]

という結果になります。  
nodeコマンドでは動作するにも関わらず、sudo nodeでは上手く動作しません。  
動作しない原因は何でしょうか？  
また、どうすれば管理者権限でnodeを実行できるのでしょうか？

以下、詳細になります。

**環境**  
Node v13.12.0

**試したこと**  
[リンク](https://stackoverflow.com/questions/4976658/on-ec2-sudo-node-command-
not-found-but-node-without-sudo-is-ok)を参考に

[code]

    [ec2-user@(ip-adress) ~]$ sudo ln -s /root/.nvm/v13.12.0/bin/node/usr/bin/node
    [ec2-user@(ip-adress) ~]$ sudo ln -s /root/.nvm/v13.12.0/lib/node /usr/lib/node
    [ec2-user@(ip-adress) ~]$ sudo ln -s /root/.nvm/v13.12.0/bin/npm /usr/bin/npm
    [ec2-user@(ip-adress) ~]$ sudo ln -s /root/.nvm/v13.12.0/bin/node-waf /usr/bin/node-waf
    
[/code]

コマンドを入力しましたが同様のエラーになります

**パス**  
nodeのパスとcurrentパスは以下の通りです

[code]

    [ec2-user@(ip-adress) ~]$ whereis node
    node: /usr/lib/node /home/ec2-user/.nvm/versions/node/v13.12.0/bin/node
    [ec2-user@(ip-adress) ~]$ echo $PATH
    /home/ec2-user/.nvm/versions/node/v13.12.0/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin
    
[/code]

どうぞよろしくお願いいたします。


CC BY-SA 4.0
2020-04-02T04:15:23.577
65298
2020-04-02T08:52:22.087
34550
question
aws node.js amazon-ec2 sudo
EC2上で、sudo nodeコマンドが動作しない


解決したようなので回答として投稿しておきます。

* * *

実行したコマンドのうち、以下の行でスペースが抜けているのが原因だと思います。  
(ホームディレクトリ直下にシンボリックリンクが作成されてしまっているはず)

[code]

    $ sudo ln -s /root/.nvm/v13.12.0/bin/node/usr/bin/node
    
[/code]

正しくは以下になります。

[code]

    $ sudo ln -s /home/ec2-user/.nvm/versions/node/v13.12.0/bin/node /usr/bin/node
    
[/code]


CC BY-SA 4.0
2020-04-02T08:32:35.117
65303
2020-04-02T08:52:22.087
2020-04-02T08:52:22.087
34550
3060
65298
answer