0

entfaltet ich meine Ruby on Rails-Projekt auf einer anderen virtuellen Instanz, und ich änderte die Bindung IP an einen externen floating IP durch Anfügen diesen Code /config/boot.rb:Wie bindet man einen externen Host für Ruby auf Schienen?

require 'rails/commands/server' 
module Rails 
    class Server 
    def default_options 
     super.merge(Host: '199.116.235.154', Port: 3000) 
    end 
    end 
end 

und es kann auch sein, finden Sie in this answer. Allerdings, wenn ich den Server durch zu starten: rails s, bekam ich diesen Fehler:

> /home/ubuntu/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/puma-3.2.0/lib/puma/binder.rb:240:in 
> `initialize': Cannot assign requested address - bind(2) for 
> "199.116.235.154" port 3000 

Ich weiß, es liegt daran, dass 199.116.235.154 ein externer Host war, so puma nicht den Zugang für mich gewähren. Und wenn ich es zu interner IP: 10.2.3.52 ändere, läuft es, aber ich kann 10.2.3.52 von meinem Telefonbrowser oder anderem Computer nicht zielen. Also, gibt es eine Möglichkeit für mich, die Öffentlichkeit 199.116.235.154 IP Arbeit für mich zu machen?

Auch mein Frontend wurde in einem anderen Verzeichnis von Ember gebaut. Sie kommunizieren mit jedem Ende durch jsonAPI, und zur Zeit bin ich mit localhost für das Debuggen Zweck:

import DS from 'ember-data'; 

export default DS.JSONAPIAdapter.extend({ 
    // Connect to Rails server 
    host: 'http://localhost:3000', 
}); 

Wenn ich 199.116.235.154 Gastgeber für meine Ruby on Rails-Backend machen kann, wird es auch für meine glut Frontend arbeiten, indem sie ändere localhost zu 199.115.235.154?

+0

Können Sie nur an alle Schnittstellen mit '0.0.0.0' binden? Dadurch kann der Server auf lokale und externe IP-Adressen zugreifen. –

+0

Ich habe das schon probiert, aber es hat nicht für mich funktioniert. –

Antwort

0

Bitte verwenden Sie einen Proxy. es ist leicht auf Nginx einrichten:

Gerade nginx installieren und die Konfigurationsdatei für sie (in der Regel wird es sich in /etc/nginx/nginx.conf) und fügen Sie folgenden Block finden:

server { 
    ... 
    location/{ 
     proxy_pass http://127.0.0.1:3000; 
    } 
    ... 

und Dann kannst du über http://public-ip/ auf deine Backend-Rails-App zugreifen. Angenommen, dein Nginx läuft auf normalem 80-Port.

+0

Ich habe das gleiche versucht, aber ich kann nicht zielen auf die Public-IP. –

+0

Wenn Sie nginx einrichten, können Sie auf Ihre Standard-Nginx-Indexseite über öffentliche IP zugreifen? – kyrre

+0

Ich kann auf die Standardnginx-Indexseite zugreifen, aber ich kann nicht auf meine Projektseite zugreifen. –

0
  1. Precompile Ihre ember Vermögenswerte in Schienen: ember-cli-rails
  2. Stellen Sie Ihre App in Heroku Docker: Deploy rails app in heroku docker

Die gute Sache für Docker ist es Ihnen ziemlich klar und präzise Lösung in der Konsole zur Verfügung stellen, wenn Sie Beim Erstellen/Ausführen der Docker-Maschine ist ein Fehler aufgetreten.

Verwandte Themen