Par défaut,
rails s #running on 3000 port
Maintenant, je veux l'exécuter sur le port 80. J'ai donc essayé:
sudo rails -s -p80
Mais cela a jeté une erreur:
mlzboy@mlzboy-MacBook ~/my/b2c2 $ sudo rails s -p80
sudo: rails: command not found
J'ai utilisé rvm pour installer des rubis et des rails. Il semble que rvm soit spécifié par l'utilisateur. N'est-il pas capable de trouver des rails à la racine?
J'ai également essayé le code ci-dessous:
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
rvmsudo
que sudo plus le chargement de rvm en tant que sudo.socket.rb:206:in
liaison ': Adresse déjà utilisée - bind (2) pour 0.0.0.0:80 (Errno :: EADDRINUSE) `erreurTransférez simplement la demande du port 80 à 3000 en utilisant la commande ci-dessous:
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000
Une autre option est:
rvmsudo rails server -p 80
Cependant, n'oubliez pas de libérer ce port d'Apache ou d'autres services qui consomment ce port normalement. De plus, je ne suis pas sûr que l'autorisation sudo à RVM puisse avoir un problème de sécurité ou non?
la source
-I
par-D
, doncsudo iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000
. Les réponses ici vont plus en détail: serverfault.com/questions/159544/undoing-port-forwarding .Allait suggérer
rails=`which rails` ; sudo $rails server -p 80
mais qui essaie toujours d'utiliser l'ensemble de gemmes global et non l'ensemble de gemmes de projet de RVM. Donc...
rails s
fonctionne sur le port 3000 en tant qu'utilisateur non rootOuvrez un nouveau terminal et ...
me=``whoami``; sudo ssh -L 80:127.0.0.1:3000 -l $me -N localhost
(BTW réduisez les doublons en singuliers dans la ligne ci-dessus, je ne peux pas comprendre comment l'échapper correctement ici.)
Le premier
Password:
est votreroot
utilisateur, le second est le mot de passe de quiconquewhoami
revient.Bien que vous souhaitiez probablement installer Phusion Passenger et le configurer sous votre Apache local. À moins que vous n'essayiez simplement de faire une démonstration rapide de quelque chose et que ce ne soit pas une solution permanente bien sûr.
la source
/usr/bin/which rails
au cas où les rails sontSi vous utilisez RVM et que vous avez effectué la configuration par défaut, vous ne devriez pas utiliser
sudo
.Juste:
mlzboy@mlzboy-MacBook ~/my/b2c2 $ rails server -p 80
Cependant 80 est un port privilégié, vous devez donc exécuter en tant que root, et vous devrez suivre les instructions pour l'installation multi-utilisateur de RVM.
la source
vous pouvez démarrer le serveur sur le port 80
rails s -p 80
Si le port 80 ne se lie pas (les autres processus n'utilisent pas le port 80).
la source