По умолчанию,
rails s #running on 3000 port
Теперь я хочу запустить его на 80-м порту. Я попробовал:
sudo rails -s -p80
Но это выдало ошибку:
mlzboy@mlzboy-MacBook ~/my/b2c2 $ sudo rails s -p80
sudo: rails: command not found
Я использовал rvm для установки ruby & rails. Кажется, что 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
ruby-on-rails
ruby-on-rails-3
млзбой
источник
источник
rvmsudo
что sudo плюс загрузка rvm как sudo.socket.rb:206:in
привязку ': Адрес уже используется - bind (2) для 0.0.0.0:80 (Errno :: EADDRINUSE) `errorПросто перенаправьте запрос с порта 80 на порт 3000, используя следующую команду:
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000
Другой вариант:
rvmsudo rails server -p 80
Однако не забудьте освободить этот порт от Apache или других служб, которые обычно используют этот порт. Кроме того, я не уверен, что предоставление разрешения sudo для RVM может иметь какие-либо проблемы с безопасностью или нет?
источник
-I
с-D
, такsudo iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000
. Ответы здесь более подробно: serverfault.com/questions/159544/undoing-port-forwarding .Собирался предложить
rails=`which rails` ; sudo $rails server -p 80
но он по-прежнему пытается использовать глобальный гемсет, а не гемсет проекта из RVM. Так...
rails s
вы используете порт 3000 как пользователь без полномочий root.Откройте новый терминал и ...
me=``whoami``; sudo ssh -L 80:127.0.0.1:3000 -l $me -N localhost
(Кстати, уменьшите дубликаты до единичных в строке выше, я не могу понять, как правильно избежать этого здесь.)
Первый
Password:
- вашroot
пользователь, второй - пароль для всех, ктоwhoami
вернется.Хотя вы, вероятно, захотите установить Phusion Passenger и настроить его под локальным Apache. Если вы просто не пытаетесь продемонстрировать что-то очень быстро, и это, конечно, не постоянное решение.
источник
/usr/bin/which rails
если рельсы имеют псевдонимЕсли вы используете RVM, и вы выполнили настройку по умолчанию, вам не следует использовать
sudo
.Только:
mlzboy@mlzboy-MacBook ~/my/b2c2 $ rails server -p 80
Однако 80 - это привилегированный порт, поэтому вам нужно запустить его как root, и вы должны будете следовать инструкциям по многопользовательской установке RVM.
источник
вы можете запустить сервер на порту 80
rails s -p 80
Если порт 80 не привязан (другие процессы не используют порт 80).
источник