GNU/Linux >> Linux の 問題 >  >> Linux

node.js アプリケーションをポート 80 で実行できるようにする

解決策 1:

このエラーを回避するには、非シンボリック リンクの実行可能ファイルを which node で解決します。 、完全な例として:

sudo apt-get install libcap2-bin
sudo setcap cap_net_bind_service=+ep `readlink -f \`which node\``

"which" コマンドは、シェル コマンドのフル パスを示します。

解決策 2:

理解した。しかし、ノードをインストールし、/usr/bin/node にシンボリック リンクを作成し、/usr/bin/nodejs 内の別のシンボリック リンクを指す /etc/alternatives/node 内の別のシンボリック リンクを指していることが判明しました。

/usr/bin/nodejs に対してコマンドを実行するとうまくいきました。

解決策 3:

FWIW、別のオプションはauthbindを使用することです。 Authbind は、CAP_NET_BIND_SERVICE と同様の目的を達成するために、わずかに異なるメカニズムを使用します。つまり非特権アプリが特権ポートを使用できるようにします。

apt からインストール:

sudo apt-get update && sudo apt-get install authbind

目的の app.js が非特権ユーザー「user」の下で実行されており、ポート 80 にバインドしたいとします。

sudo touch /etc/authbind/byport/80
sudo chown user:user /etc/authbind/byport/80
sudo chmod 500 /etc/authbind/byport/80

次に、次のようにアプリを実行します:

authbind node app.js

代わりに「forever」(基本的にノード アプリをデーモン化する) のようなものを使用したい場合は、次のようにします:

authbind --deep forever app.js

Linux
  1. Podmanでsudoを使用せずにLinuxでコンテナを実行する

  2. Lxdeからのログアウト時のアプリケーションを覚えていますか?

  3. sudo アクセス権があるかどうかを確認するにはどうすればよいですか?

  1. FirewallDでポート80と443を開く方法

  2. Linux でスーパーユーザーとして cd コマンドを実行する

  3. IPTables を使用した FTP の許可

  1. Linuxでsudoを使用して権限を委任する

  2. Linux –LinuxでMacOs Xアプリケーションを実行しますか?

  3. Node.jsの競合:/ sbin/nodeと/usr/ bin / node?