80 বন্দরে রেল গুলি কীভাবে এস -8080 চালাবেন?


88

গতানুগতিক,

 rails s #running on 3000 port

এখন আমি এটি 80 বন্দরে চালাতে চাই So তাই আমি চেষ্টা করেছি:

 sudo rails -s -p80

তবে এটি একটি ত্রুটি ছুড়ে দিয়েছে:

mlzboy@mlzboy-MacBook ~/my/b2c2 $ sudo rails s -p80
sudo: rails: command not found

আমি রুবি ও রেল ইনস্টল করতে আরভিএম ব্যবহার করেছি। দেখে মনে হচ্ছে rvm ব্যবহারকারী নির্দিষ্ট। এটি কি মূলের মধ্যে রেলগুলি খুঁজে পাবে না?

আমি কোডের নীচেও চেষ্টা করেছি:

mlzboy@mlzboy-MacBook ~/my/b2c2 $ which rails
/home/mlzboy/.rvm/gems/ruby-1.9.2-p0/bin/rails
mlzboy@mlzboy-MacBook ~/my/b2c2 $ sudo /home/mlzboy/.rvm/gems/ruby-1.9.2-p0/bin/rails s -p80

উত্তর:


212
rvmsudo rails server -p 80

@ পিনচোন এটি কাজ করে কারণ rvmsudoসুডো হিসাবে আরভিএমকে সুডো হিসাবে লোড করে।
আইইন

4
আমার মতো আপনি যদি আরভিএমের পরিবর্তে আরবেএনভ ব্যবহার করেন তবে এই আরবেভ প্লাগইনটি সমতাটি করবে: github.com/dcarley/rbenv-sudo
micapam

আরভিএমের কোনও সুরক্ষা গর্ত থাকাকালীন এটি কি আরও ঝুঁকিপূর্ণ হতে পারে, যদি এটি রুট হিসাবে চলছে?
কেভিন চেন

4
@ কেভিন চেন: আরভিএম-এ নেই, তবে আমি রেলগুলি মূল হিসাবে চালানো নিয়ে উদ্বিগ্ন হব। উত্পাদনে আপনি অ্যাপাচি বা এনগিনেক্স ব্যবহার করবেন, যার বন্দরটি দাবি করতে রুট অনুমতি প্রয়োজন, তবে বিশেষ ব্যবহারকারী হিসাবে চালিত হয়। আমার সমাধানটি কেবল বিকাশে জিনিসগুলি পরীক্ষা করার জন্য।
আইয়েন

আমি এটি ক্লান্ত করেছি কিন্তু socket.rb:206:in বাইন্ডটি পেয়েছি: ঠিকানা ইতিমধ্যে ব্যবহারে রয়েছে - 0.0.0.0:80 এর জন্য আবদ্ধ (2) (এর্ননো :: EADDRINUSE) `ত্রুটি
r15

23

কেবল নীচের কমান্ডটি ব্যবহার করে 80 থেকে 3000 বন্দর থেকে অনুরোধটি ফরোয়ার্ড করুন:

sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000

আরেকটি বিকল্প হ'ল:

rvmsudo rails server -p 80

তবে দয়া করে মনে রাখবেন এই পোর্টটি অ্যাপাচি বা অন্যান্য পরিষেবাগুলি থেকে মুক্ত করুন যা সাধারণত এই বন্দরটি গ্রাস করে। এছাড়াও, আমি নিশ্চিত না আরভিএমকে সুডো অনুমতি দেওয়ার কোনও সুরক্ষা সমস্যা থাকতে পারে কি না?


এটি দুটি বন্দর গ্রাস করবে এবং এটি 3000 বন্দরে অন্য রুবি উদাহরণ চালাতে দেবে না
কনস্টান্টিন

আপনি কিভাবে এই বিপরীত? এটি আমার পক্ষে নিখুঁতভাবে কাজ করে, যা দুর্দান্ত, তবে আমি যদি পুনঃনির্দেশটিকে পূর্বাবস্থায় ফিরিয়ে আনতে চাই তবে কী হবে? ধন্যবাদ
রবিন 35

আইপি রুট টেবিলটিকে
দিনেশ সায়নী

4
আপনি প্রতিস্থাপন করে এই কমান্ড বিপরীত করতে -Iসঙ্গে -D, তাই sudo iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000। উত্তরগুলি এখানে আরও বিশদে যায়: সার্ভারফল্ট / প্রশ্ন / 159544 / undoing-port- ফরওয়ার্ডিং
22:38

8

পরামর্শ দিতে যাচ্ছিল

rails=`which rails` ; sudo $rails server -p 80

তবে এটি এখনও আরভিএম থেকে প্রকল্পের জেমসেটটি নয় বিশ্বব্যাপী রত্নটি ব্যবহার করার চেষ্টা করে। তাই ...

  1. আপনার ম্যাকটিতে এসএসডি চলছে কিনা তা নিশ্চিত করুন। (সিস্টেম প্রিফেস => ভাগ করে নেওয়া => রিমোট লগইন পরীক্ষা করা হয়েছে)
  2. নিশ্চিত করা rails sআপনার নন-রুট ব্যবহারকারী হিসাবে 3000 পোর্টে চলছে তা
  3. একটি নতুন টার্মিনাল খুলুন এবং ...

    me=``whoami``; sudo ssh -L 80:127.0.0.1:3000 -l $me -N localhost

(বিটিডাব্লুটি উপরের লাইনের অনুলিপিগুলিকে এককভাবে হ্রাস করতে পারে, আমি কীভাবে এটি এখানে যথাযথভাবে পালাতে পারি তা বুঝতে পারি না))

প্রথমটি Password:আপনার rootব্যবহারকারীর, দ্বিতীয়টি যাকে whoamiফেরতের পাসওয়ার্ড ।

যদিও আপনি সম্ভবত ফিউশন প্যাসেঞ্জার ইনস্টল করতে চান এবং এটি আপনার স্থানীয় অ্যাপাচের অধীনে সেট আপ করতে চান। যদি না আপনি কেবল সত্যিকারের কিছু ডেমো করার চেষ্টা করছেন এবং এটি অবশ্যই স্থায়ী সমাধান নয়।


নিশ্চিত করুন যে আপনি ব্যবহার করছেন /usr/bin/which railsক্ষেত্রে পাগল মধ্যে ওরফে অন্য
david_adler

1

আপনি যদি আরভিএম ব্যবহার করে থাকেন এবং আপনি ডিফল্ট সেটআপ করেন তবে আপনার ব্যবহার করা উচিত নয় sudo

ঠিক:

mlzboy@mlzboy-MacBook ~/my/b2c2 $ rails server -p 80

তবে ৮০ টি একটি সুবিধাযুক্ত বন্দর, সুতরাং আপনাকে রুট হিসাবে চালানো দরকার , এবং আপনার আরভিএমের মাল্টি-ইউজার-ইন্সটল করার নির্দেশাবলী অনুসরণ করতে হবে ।


সুবিধামুক্ত বন্দরগুলির জন্য মূল প্রয়োজন।
সিএফডুক

@cfeduke - ওহ! তুমি সঠিক.
স্বানন্দ

@ এমারিমাফ - সময়ের সাথে ডকুমেন্টেশন পরিপক্ক হয়েছে। এখানে নতুন লিঙ্কটি দেওয়া হয়েছে: rvm.io/rvm/install
স্বানন্দ

আপনাকে ধন্যবাদ, এটি আমি কাজ করছিলাম এমন রেল অ্যাপ্লিকেশনটি পরীক্ষা করতে পিসি হোস্টের একটি ম্যাক ভিএম অ্যাক্সেস করতে সহায়তা করে। সেক্ষেত্রে যদিও আমাকে ভিএম এর আইপি ঠিকানার সাথে -b (বাইন্ড) বিকল্পটি ব্যবহার করতে হবে।
টম টি

-1

আপনি 80 পোর্টে সার্ভার শুরু করতে পারেন

rails s -p 80

80 পোর্ট যদি বাঁধাই না করে (অন্যান্য প্রক্রিয়া 80 বন্দর ব্যবহার করে না)।


4
1024 এর নীচে পোর্টে মূল অ্যাক্সেসের প্রয়োজন এবং আপনি যতক্ষণ না ইউআরএল মাধ্যমে রেল সেটআপ না করে আপনি অ্যাপ্লিকেশন চালাতে পারবেন না। আমি এটি প্রয়োগ করেছি এবং পরীক্ষা করেছি test
দিনেশ সায়নী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.