80 port üzerinde s -p80 rayları nasıl çalıştırılır?


88

Varsayılan olarak,

 rails s #running on 3000 port

Şimdi 80 numaralı bağlantı noktasında çalıştırmak istiyorum. Ben de denedim:

 sudo rails -s -p80

Ama bir hata yaptı:

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

Ruby & rails'i kurmak için rvm kullandım. Görünüşe göre rvm kullanıcı tarafından belirlenmiş. Kökte ray bulamıyor mu?

Aşağıdaki kodu da denedim:

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

Yanıtlar:


212
rvmsudo rails server -p 80

@pinouchon işe yarıyor çünkü rvmsudosudo plus rvm'yi sudo olarak yüklüyor.
iain

2
Benim gibi rvm yerine rbenv kullanıyorsanız, bu rbenv eklentisi eşdeğerini yapacaktır: github.com/dcarley/rbenv-sudo
micapam

Kök olarak çalıştığı düşünülürse, RVM'de bir güvenlik açığı varsa bu daha fazla risk olur mu?
Kevin Chen

2
@Kevin Chen: RVM'de değil, ancak Rails'i root olarak çalıştırma konusunda endişelenirdim. Üretimde, bağlantı noktasını talep etmek için kök izinlerine ihtiyaç duyan ancak özel bir kullanıcı olarak çalışan Apache veya Nginx'i kullanırsınız. Benim çözümüm sadece geliştirme aşamasındaki şeyleri test etmek için.
iain

Bunu socket.rb:206:in yordum ama ': Adres zaten kullanımda - bind (2) için 0.0.0.0:80 (Errno :: EADDRINUSE)' hatası
r15

23

Aşağıdaki komutu kullanarak isteği bağlantı noktası 80'den 3000'e iletmeniz yeterlidir:

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

Diğer bir seçenek ise:

rvmsudo rails server -p 80

Ancak, lütfen bu bağlantı noktasını Apache'den veya bu bağlantı noktasını normal olarak kullanan diğer hizmetlerden kurtarmayı unutmayın. Ayrıca, RVM'ye sudo izni vermenin herhangi bir güvenlik sorunu olup olmadığından emin değilim?


Bu, iki bağlantı noktası tüketecek ve 3000 numaralı bağlantı noktasında başka bir Ruby örneğinin çalıştırılmasına izin vermeyecektir.
Konstantin

Bunu nasıl tersine çevirirsiniz? Benim için mükemmel çalışıyor, bu harika, ama ya yeniden yönlendirmeyi geri almak istersem? Teşekkürler.
robins35

IP yönlendirme tablosunu varsayılana sıfırlamanız gerekiyor
Dinesh Saini

1
Sen değiştirerek bu komutu tersine çevirebilir -Iile -Dbu yüzden sudo iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000. Buradaki cevaplar daha fazla ayrıntıya giriyor: serverfault.com/questions/159544/undoing-port-forwarding .
bentrevor

8

Önerecektim

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

ancak bu yine de RVM'den gelen proje mücevher setini değil global mücevher setini kullanmaya çalışıyor. Yani...

  1. Mac'inizde sshd'nin çalıştığından emin olun. (Sistem Tercihleri ​​=> Paylaşım => Uzaktan Oturum Açma işaretlendi)
  2. rails sRoot olmayan kullanıcınız olarak 3000 numaralı bağlantı noktasında çalıştığınızdan emin olun
  3. Yeni bir terminal açın ve ...

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

(BTW, yinelenenleri yukarıdaki satırda tekil olanlara indirgeyin, burada nasıl doğru bir şekilde kaçtığını anlayamıyorum.)

Birincisi Password:sizin rootkullanıcınız, ikincisi whoamigeri dönen kişinin şifresidir .

Muhtemelen Phusion Passenger'ı kurmak ve yerel Apache'niz altında kurmak isteyebilirsiniz. Bir şeyi hızlı bir şekilde göstermeye çalışmıyorsanız ve bu elbette kalıcı bir çözüm değildir.


/usr/bin/which railsrayların takma ad olması durumunda kullandığınızdan emin olun
david_adler

1

RVM kullanıyorsanız ve varsayılan kurulumu yaptıysanız, kullanmamalısınız sudo.

Sadece:

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

Ancak 80, ayrıcalıklı bir bağlantı noktasıdır, bu nedenle kök olarak çalıştırmanız gerekir ve RVM'nin Çok Kullanıcılı kurulumu için talimatları izlemeniz gerekir .


ayrıcalıklı bağlantı noktaları için root gereklidir.
cfeduke

@cfeduke - Oh! Haklısın.
Swanand

@marimaf - Dokümantasyon zamanla olgunlaştı. İşte yeni link: rvm.io/rvm/install
Swanand

Teşekkürler, bu, üzerinde çalıştığım bir ray uygulamasını test etmek için bir bilgisayar ana bilgisayarından bir MAC VM'ye erişmeye yardımcı oluyor. Bu durumda vm'nin ip adresiyle -b (bind) seçeneğini kullanmak zorunda kaldım.
Tom T

-1

sunucuyu 80 numaralı bağlantı noktasından başlatabilirsiniz

rails s -p 80

80 numaralı bağlantı noktası bağlanmazsa (diğer işlemler 80 numaralı bağlantı noktasını kullanmıyorsa).


1
1024'ün altındaki bağlantı noktası root erişimine ihtiyaç duyar ve kök URL aracılığıyla rayları kurmadan uygulamayı çalıştıramazsınız. Ben uyguladım ve test ettim.
Dinesh Saini
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.