80 পোর্টে নোড.জেএস অ্যাপটি কীভাবে চালানো যায়? প্রক্রিয়াগুলি কি আমার পোর্টকে অবরুদ্ধ করছে?


9

আমি বিশ্বাস করি যে আমার দূরবর্তী উদাহরণের 80 বন্দরটি অবরুদ্ধ করা আছে, এবং আমি 80 পোর্টটি ব্যবহার করে একটি নোড.জেএস অ্যাপ্লিকেশন চালানোর চেষ্টা করছি 000 আমি 3000 এবং 3002 বন্দরগুলির সাথে পরীক্ষা-নিরীক্ষা করেছি এবং উভয় বন্দরটি ঠিকঠাকভাবে কাজ করছে, তবে চলার সময় আমি একটি ত্রুটি পেয়েছি I 80 পোর্টে। আমি সন্দেহ করি যে পোর্ট 80 netstat -anনীচে আমার আউটপুট থেকে ব্লক করা হয়েছে , তবে নীচের নীচে 80 পোর্টের ব্লক করা অ্যাড্রেসগুলির প্রসেস আইডি কীভাবে খুঁজে পাব ?

[lucas@ecoinstance]~/node/nodetest1$ netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:3002            0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:27017         127.0.0.1:51108         ESTABLISHED
tcp        0      0 127.0.0.1:51106         127.0.0.1:27017         ESTABLISHED
tcp        0      0 127.0.0.1:27017         127.0.0.1:51106         ESTABLISHED
tcp        0      0 127.0.0.1:51107         127.0.0.1:27017         ESTABLISHED
tcp        0      0 10.240.241.116:3002     174.61.171.61:36583     TIME_WAIT  
tcp        0      0 127.0.0.1:27017         127.0.0.1:51109         ESTABLISHED
tcp        0      0 10.240.241.116:42423    169.254.169.254:80      ESTABLISHED
tcp        0      0 127.0.0.1:51108         127.0.0.1:27017         ESTABLISHED
tcp        0    532 10.240.241.116:22       174.61.171.61:56824     ESTABLISHED
tcp        0      0 127.0.0.1:27017         127.0.0.1:51107         ESTABLISHED
tcp        0      0 10.240.241.116:42412    169.254.169.254:80      ESTABLISHED
tcp        0      0 127.0.0.1:51109         127.0.0.1:27017         ESTABLISHED
tcp        0      0 127.0.0.1:51105         127.0.0.1:27017         ESTABLISHED
tcp        0      0 10.240.241.116:42422    169.254.169.254:80      TIME_WAIT  
tcp        0      0 127.0.0.1:27017         127.0.0.1:51105         ESTABLISHED
tcp6       0      0 :::22                   :::*                    LISTEN     
udp        0      0 0.0.0.0:49948           0.0.0.0:*                          
udp        0      0 0.0.0.0:68              0.0.0.0:*                          
udp        0      0 10.240.241.116:123      0.0.0.0:*                          
udp        0      0 127.0.0.1:123           0.0.0.0:*                          
udp        0      0 0.0.0.0:123             0.0.0.0:*                          
udp6       0      0 :::12151                :::*                               
udp6       0      0 :::123                  :::*                               
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     405680   /tmp/ssh-KdkxJfFLpKTC/agent.22
813
unix  2      [ ACC ]     STREAM     LISTENING     408230   /tmp/ssh-ofUeNNEwAqtP/agent.22
243
unix  2      [ ACC ]     STREAM     LISTENING     416227   /tmp/mongodb-27017.sock
unix  2      [ ACC ]     SEQPACKET  LISTENING     3692     /run/udev/control
unix  7      [ ]         DGRAM                    5286     /dev/log
unix  2      [ ACC ]     STREAM     LISTENING     5318     /var/run/acpid.socket
unix  2      [ ACC ]     STREAM     LISTENING     16170    /tmp//tmux-1000/default
unix  2      [ ACC ]     STREAM     LISTENING     414450   /var/run/dbus/system_bus_socke

Node.js দিয়ে 80 পোর্টে চালানোর চেষ্টা করার সময় লগটি এখানে:

[lucas@ecoinstance]~/node/nodetest1$ npm start

> nodetest1@0.0.1 start /home/lucas/node/nodetest1
> node ./bin/www


events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: listen EACCES
    at errnoException (net.js:904:11)
    at Server._listen2 (net.js:1023:19)
    at listen (net.js:1064:10)
    at Server.listen (net.js:1138:5)
    at Function.app.listen (/home/lucas/node/nodetest1/node_modules/express/lib/applicati
on.js:532:24)                                                                           
    at Object.<anonymous> (/home/lucas/node/nodetest1/bin/www:7:18)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)

npm ERR! nodetest1@0.0.1 start: `node ./bin/www`
npm ERR! Exit status 8
npm ERR! 
npm ERR! Failed at the nodetest1@0.0.1 start script.
npm ERR! This is most likely a problem with the nodetest1 package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node ./bin/www
npm ERR! You can get their info via:
npm ERR!     npm owner ls nodetest1
npm ERR! There is likely additional logging output above.
npm ERR! System Linux 3.13-0.bpo.1-amd64
npm ERR! command "/usr/local/bin/node" "/usr/local/bin/npm" "start"
npm ERR! cwd /home/lucas/node/nodetest1
npm ERR! node -v v0.10.28
npm ERR! npm -v 1.4.9
npm ERR! code ELIFECYCLE
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/lucas/node/nodetest1/npm-debug.log
npm ERR! not ok code 0

এবং sudo netstat -lnp80 এর কোনও মিলে যাওয়া পোর্টটি ফেরত দেয় না:

[lucas@ecoinstance]~/node/nodetest1$ sudo netstat -lnp                           [48/648]
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Progr
am name
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      29160/mon
god    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1976/sshd

tcp6       0      0 :::22                   :::*                    LISTEN      1976/sshd

udp        0      0 0.0.0.0:49948           0.0.0.0:*                           1604/dhcl
ient   
udp        0      0 0.0.0.0:68              0.0.0.0:*                           1604/dhcl
ient   
udp        0      0 10.240.241.116:123      0.0.0.0:*                           2076/ntpd

udp        0      0 127.0.0.1:123           0.0.0.0:*                           2076/ntpd

udp        0      0 0.0.0.0:123             0.0.0.0:*                           2076/ntpd

udp6       0      0 :::12151                :::*                                1604/dhcl
ient   
udp6       0      0 :::123                  :::*                                2076/ntpd

Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name    Path
unix  2      [ ACC ]     STREAM     LISTENING     405680   22814/ssh-agent     /tmp/ssh-K
dkxJfFLpKTC/agent.22813
unix  2      [ ACC ]     STREAM     LISTENING     408230   24049/ssh-agent     /tmp/ssh-o
fUeNNEwAqtP/agent.22243
unix  2      [ ACC ]     STREAM     LISTENING     416227   29160/mongod        /tmp/mongo
db-27017.sock
unix  2      [ ACC ]     SEQPACKET  LISTENING     3692     284/udevd           /run/udev/
control
unix  2      [ ACC ]     STREAM     LISTENING     5318     1798/acpid          /var/run/a
cpid.socket
unix  2      [ ACC ]     STREAM     LISTENING     16170    5177/tmux           /tmp//tmux
-1000/default
unix  2      [ ACC ]     STREAM     LISTENING     414450   28213/dbus-daemon   /var/run/d
bus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     404225   22324/1             /tmp/ssh-9
TlDmu4bjl/agent.22324

উত্তর:


15

আপনি নোডকে অ-রুট ব্যবহারকারী হিসাবে শুরু করার চেষ্টা করছেন। ডিফল্টরূপে লিনাক্স কেবল রুটকে 1024 বা নীচের পোর্টগুলিতে আবদ্ধ করতে দেয়।

আপনি যদি এই ব্যবহারকারী হিসাবে এটি চালাতে চান তবে আপনি /programming/413807/is-there-a-way-for-non-root-processes-to-bind-to- এ দেখতে চাইতে পারেন তৈরী-পোর্ট-1024-অন-L


1
bindম্যানপেজ অনুসারে : EACCES The address is protected, and the user is not the superuser.এবং আপনি EACCESনিজের ত্রুটি প্রতিবেদনে দেখুন।
ম্যাথু ইফে


1

সবচেয়ে সহজ, সেরা উত্তর ইমো:

  • sudo apt-get install libcap2-bin
  • sudo setcap cap_net_bind_service=+ep /usr/local/bin/node
  • তা দা! এটি আপনার নোড অ্যাপ্লিকেশনটিকে অভিযোগ না করে 80 পোর্টে চালানোর অনুমতি দেয়।

আমি কেন এটি পছন্দ করি? কারণ:

  • আপনাকে অ্যাপাচি বা এনজিনেক্স ব্যবহার করতে হবে না
  • আপনাকে আপনার অ্যাপ্লিকেশনটি রুট হিসাবে চালাতে হবে না
  • আপনাকে পোর্টগুলি ফরোয়ার্ড করতে হবে না (এবং এটি প্রতিবার আপনার মেশিন বুট করবে)

রেফারেন্স লিংক: https://www.digitalocean.com/commune/tutorials/how-to-use-pm2-to-setup-a-node-js- product-en পরিবেশ-on-an-ubuntu- vps (একটি দুর্দান্ত নিবন্ধ ক্লাউড হোস্টিংয়ে আপনার নোড অ্যাপটি কীভাবে সেট আপ করবেন সে সম্পর্কে)।


উবুন্টু ছাড়া প্ল্যাটফর্মের কী হবে?
মাইকেল

* নিক্স যে কোনও কিছুর উপর কাজ করা উচিত, আমি বিশ্বাস করি
কাইল চাদ ২

1
কাজ না হলে এই পরিবর্তনগুলি কীভাবে ফিরিয়ে আনতে পারি .. ??
রীতেশ

1

আমি সার্ভার ব্যবহার করে চালানোর চেষ্টা করছিলাম node server.js। তা না কোন ভুল দেখাবে। এছাড়াও,

lsof -t -i:80

কোনও প্রক্রিয়া তালিকাভুক্ত নয়

সমস্যাটি আমি একটি অননুমোদিত ব্যবহারকারী হিসাবে আবদ্ধ করার চেষ্টা করা হয়েছিল। আমি চেষ্টা করার পরে এটি কাজ হয়ে গেছে:

sudo node server.js

এত সহজ, তবে, কখনও কখনও আপনি এটি ভুলে যেতে পারেন এবং যখন আপনি আপনার মেশিনে অ্যাপাচি, এনজিনেক্স ইত্যাদির একাধিক সার্ভার চালু থাকে তখন আপনি অন্যান্য সার্ভার প্রক্রিয়াগুলির পিছনে চলতে শুরু করবেন । (আমি যেমন করেছি)। আশা করি এটি কারও সাহায্য করবে !!!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.