Eigenes Node.js-Hosting auf VPS

Als ich Node.js studierte, schuf ich viele kleine Projekte. Zukünftig musste ich einige davon auf dem Server bereitstellen, um sie in Zukunft entwickeln zu können. Bestehende Hosting-Programme von Appfog und Heroku unterliegen einer Reihe schwerwiegender Einschränkungen für kostenlose Konten. Bei Appfog können Sie nicht mehr als 2 Anwendungen gleichzeitig ausführen, und die kostenlose Registrierung ist bereits deaktiviert. Auf Heroku können Sie nur 5 Anwendungen (ohne Datenbank) erstellen, ohne Ihr Konto durch Verknüpfen einer Bankkarte zu bestätigen. Bezahlte Konten sind für mich sehr teuer (ich verdiene kein Geld mit diesen kleinen Projekten): 20 US-Dollar bei Appfog und Heroku ist noch teurer. Die Kollegen empfahlen, das Hosting auf Digital Ocean zu versuchen - einem virtuellen Server für 5 US-Dollar pro Monat, auf dem Sie problemlos Ihr eigenes Hosting für node.js-Projekte konfigurieren können.

Wie Sie ein solches Hosting organisieren, erfahren Sie in diesem Artikel. Wenn Sie im Verlauf dieses Handbuchs auf Probleme stoßen, suchen Sie am Ende des Artikels nach einer Lösung.

Erstellen Sie einen VPS


1. Registrierung bei DigitalOcean

Registrieren Sie sich zunächst auf der DigitalOcean- Website . Hier kaufen wir einen VPS - virtuellen Server. Nachdem Sie sich erfolgreich registriert und Ihren Admin-Bereich betreten haben, klicken Sie auf den großen grünen "Erstellen" -Button und wir werden Sie auffordern, Ihr Konto zu aktivieren, indem Sie 5 US-Dollar einzahlen. Unten auf der Seite befindet sich eine Stelle, an der Sie einen Gutschein im Wert von 10 US-Dollar angeben, OMGSSD10einen neuen Gutschein eingeben oder nach einem neuen suchen können. Da meine Bankkarte nicht zum Gastgeber passte, bezahlte ich mit Paypal und hatte 15 Dollar auf meinem Konto. Dies sollte für 3 Monate reichen.

2. Erstellen Sie einen SSH-Schlüssel

Der Zugriff auf entfernte Server erfolgt normalerweise über ssh. Dies ist eine so sichere Verbindungstechnik. Sie können unser zukünftiges VPS mit einem Passwort oder mit einem SSH-Schlüssel eingeben. Ich kann die zweite Option nur empfehlen, da Sie nicht immer das Passwort eingeben müssen. Außerdem muss der SSH-Schlüssel beim Erstellen unseres neuen "Droplets" noch angegeben werden (DigitalOcean bezeichnet den virtuellen Server als "Droplet").

Führen Sie die folgenden zwei Befehle im Terminal aus, um den SSH-Schlüssel zu generieren:
$ cd ~/.ssh
$ ssh-keygen -t rsa -C "email@example.com"

Und hier werden wir gebeten, den Schlüsseldateinamen einzugeben. Ich empfehle so etwas wie, id_rsa_digitalocean_dropletnamewo der Name des Droplets entweder der Name der Domain ist, an die wir unseren Server binden, oder nur ein aussagekräftiger Name. Paraphrase kann leer gelassen werden, und es wird tun.

Danach werden zwei Dateien erstellt: ssh-key und public-key. Kopieren Sie den öffentlichen Schlüssel auf modische Weise in die Zwischenablage:
$ cat ~/.ssh/id_rsa_digitalocean_dropletname.pub | pbcopy

Gehen Sie nun zum Admin-Panel in Digitaloceans im Bereich SSH-Schlüssel und erstellen Sie dort einen neuen Schlüssel, den Sie aus der Zwischenablage einfügen.

3. Erstellen Sie ein Tröpfchen

Jetzt ist die Zeit gekommen, einen virtuellen Server zu kaufen. Klicken Sie auf die große grüne Schaltfläche "Erstellen" und geben Sie die folgenden Informationen ein:
  • Geben Sie als Hostnamen einen Domainnamen oder etwas Bedeutendes an. Dieser Name spielt keine Rolle
  • Wählen Sie die kleinste Größe, diese kann dann vom Terminal aus vergrößert werden
  • Jede Region, für die ich mich für Amsterdam entschieden habe
  • Wählen Sie das Bild auf der Registerkarte "Programme" mit dem Namen "Dokku v0.2.3 unter Ubuntu ..." oder ähnlich aus
  • Geben Sie den im vorherigen Schritt erstellten SSH-Schlüssel an

Klicken Sie auf "Tropfen erstellen" und warten Sie 2-10 Minuten. Infolgedessen sehen wir das Droplet-Kontrollfeld und dessen IP-Adresse ist dort sichtbar.

Das ausgewählte Image enthält neben dem Betriebssystem Ubuntu 14.04 das Wichtigste: Dokku. Dies ist ein fertiges System zum Hosten von node.js-Projekten, das Heroku sehr ähnlich ist. Wenn Sie das Image mit vorinstalliertem Dokku verwenden, müssen Sie das System für das Hosten von Node.js nicht mehr installieren und konfigurieren.

4. Konfigurieren von Droplet und DNS

Jetzt müssen Sie den neu erstellten Server konfigurieren. Rufen Sie im Browser die IP-Adresse des Droplets auf und Sie sehen den Einstellungsbildschirm. Wenn es keine solche Seite gibt, lesen Sie am Ende des Artikels nach, was zu tun ist.
Droplet-Setup-Seite
Hier müssen Sie sicherstellen, dass das Feld "Öffentlicher Schlüssel" ausgefüllt ist. Wenn nicht, geben Sie Ihren öffentlichen Schlüssel über den neu generierten Schlüssel an. Die Praxis hat jedoch gezeigt, dass es besser ist, ein solches Tröpfchen vollständig zu entfernen und durch korrekte Angabe des SSH-Schlüssels ein neues zu erstellen.

Wenn Sie keinen Domain-Namen haben, lassen Sie ihn unverändert, klicken Sie auf "Setup beenden" und fahren Sie mit dem nächsten Schritt fort. Ihre Anwendung wird in etwa wie folgt verfügbar sein: "19.19.197.19-00-006667", nach IP-Adresse und Portnummer. Wenn dies nicht zu Ihnen passt, kaufen Sie dringend einen Domainnamen. In jedem Fall können Sie den Domainnamen später konfigurieren, worauf ich am Ende noch eingehen werde.

Wenn Sie einen Domänennamen angeben, können Sie den Zugriff auf Anwendungen über Unterdomänen konfigurieren. Wenn Sie beispielsweise einen Domainnamen haben mydomain.com, ist Ihre Anwendung unter verfügbar app.mydomain.com. Es ist auch möglich, die Anwendung an die Hauptdomäne zu binden, aber ich werde dies in diesem Artikel nicht diskutieren.

Geben Sie Ihren Domain-Namen in das Feld Hostname ein und aktivieren Sie das Kontrollkästchen "VirtualHost-Namen für Apps verwenden". Gehen Sie nun zum Kontrollfeld Ihres Domainnamens und geben Sie zwei neue Einstellungen ein:
apps.mydomain.com. IN A [Droplet-IP-Adresse]
* .apps.mydomain.com. IN A [Droplet-IP-Adresse]

Oder so:
mydomain.com. IN A [Droplet-IP-Adresse]
* .meinedomäne.com. IN A [Droplet-IP-Adresse]

Geben Sie die genaue Syntax in Ihrem Domain Name Admin Panel oder im Domain Provider an.

Kehren Sie nun zur Droplet-Setup-Seite zurück und klicken Sie auf "Finish setup".

5. Konfigurieren Sie die Verwendung von SSH

Versuchen wir, eine Verbindung zu unserem neuen Server herzustellen. Um über den SSH-Schlüssel auf das Droplet zuzugreifen, benötigen Sie eine weitere kleine Aktion. Öffnen Sie ein Terminal und übertragen Sie es mit den SSH-Schlüsseln in den Ordner:
$ cd ~/.ssh/

Wenn Sie die "config" -Datei noch nicht in diesem Ordner haben (Häkchen - $ ls), müssen Sie sie erstellen:
$ touch config

Öffne nun config ( $ open config) und schreibe die folgenden Daten hinein:
Hosten Sie YOUR.DROPLET.IP.ADDRESS
    IdentityFile ~ / .ssh / id_rsa_digitalocean_dropletname

Während in der ersten Zeile die IP-Adresse oder der Domänenname steht, steht in der zweiten Zeile der Name des erstellten SSH-Schlüssels für dieses Droplet.

Überprüfen Sie die Verbindung:
$ ssh root@YOUR.DROPLET.IP.ADDRESS

Wobei Sie nach "@" entweder einen Domainnamen oder eine IP angeben müssen.

Wenn Sie die Erstellung des SSH-Schlüssels verpasst haben, können Sie sich mit dem Kennwort anmelden, das Sie für Ihre E-Mail erhalten haben. Führen Sie dazu den gleichen Befehl aus:
$ ssh root@YOUR.DROPLET.IP.ADDRESS

und auf die Frage der Fortsetzung der Verbindung, schreiben Sie "Ja". Danach geben Sie das Passwort ein.

Wenn Sie den Begrüßungsbildschirm gesehen haben, ist alles in Ordnung. Beenden Sie die Verbindung mit dem Befehl exitund fahren Sie mit dem nächsten Schritt fort.

Bereitstellungsanwendung


Der Server ist nun bereit. Jetzt können Sie die Testanwendung bereitstellen und ihren Betrieb überprüfen.

1. Bereiten Sie das Projekt vor

Nehmen Sie ein einfaches Projekt wie Hallo, Welt , ohne Mongodb und alles andere. Überprüfen Sie, ob das Projekt das Wichtigste enthält: "package.json", "Procfile" und eine Art "app.js". Package.json sollte ungefähr so ​​aussehen:
{
   "name": "dokku-demo-application",
   "version": "1.0.0",
   "engines": {
       "node": ">=0.10.*",
       "npm": ">=1.3"
   },
   "dependencies": {
       "express": "~3.0"
   }
}

Der Inhalt der Datei package.jsonist wichtig, da dokku Module für die Anwendung installiert. Und es Procfilesollte so aussehen:
web: node server.js

Wir initialisieren das Repository im Projektordner (wenn es nicht da war), fügen alle Dateien hinzu und übergeben:
$ git init && git add -A && git commit -m "Initial commit"

Jetzt kann unser Projekt auf dem Server bereitgestellt werden.

2. Füllen Sie das Projekt aus, und führen Sie es aus

Wir werden die Anwendung mithilfe des Teams bereitstellen git push. Dazu fügen wir einen Link zum Remote-Repository unseres Droplets hinzu:
$ git remote add dokku dokku@mydomain.com:application_name

Wenn wir einen Domainnamen für das Droplet hatten, schreiben wir diesen nach "dokku @", ansonsten geben wir die IP an. Nach dem Doppelpunkt geben wir den Namen der Anwendung an. Diese Kennung wird in dokku verwendet.

Rufen Sie nun den Befehl auf push:
$ git push dokku master

Und der Download der Anwendung beginnt, die Installation der Module. Am Ende erscheint eine URL auf dem Bildschirm, über die Sie das Projekt starten können. Dies wird ein Link der Form 192.88.67.168 : 46567 oder app1.mydomain.com sein, abhängig von den Einstellungen von dokku.

Theoretisch sollte das Projekt danach gestartet werden. Wenn nicht, gehe in ssh zu unserem Droplet und führe zwei Befehle aus
$ cd /home/dokku/YOUR-APP-NAME
$ dokku run YOUR-APP-NAME node app.js

Wir starten den zuvor erhaltenen Link im Browser und freuen uns!

Probleme und Lösungen


Ich selbst fand heraus, wie ich ein solches Hosting für mehr als einen Tag einrichten konnte, und füllte ein paar Zapfen. Und damit Sie Zeit sparen können, hier einige mögliche Probleme und Lösungen.

1. Meine Bankkarte wurde nicht zur Zahlung angenommen

Sie sind ja. Sie mögen nicht einmal Visa Classic. Bezahlen Sie mit PayPal, es ist nicht schwierig.

2. Erstellt ein Droplet, aber es gibt keine Dokku-Konfigurationsseite nach IP-Adresse

Mit DigitalOcean ist also etwas schief gelaufen. Sie müssen zur Droplet-Verwaltungsseite und auf der Registerkarte Destroy / Rebuild gehen:
  • Mit Dokku ein Bild festlegen
  • Klicken Sie auf die Schaltfläche "Vom Image neu erstellen".

Nach dem Neuaufbau sollte die Dokku-Konfigurationsseite nach IP-Adresse angezeigt werden. Wenn nicht, wenden Sie sich an DigitalOcean.

3. Ich kann weder über ein Passwort noch über SSH auf das Droplet zugreifen

  1. Vielleicht haben Sie den Dokku-Konfigurationsschritt übersprungen, oder Dokky wurde falsch erstellt.
  2. Überprüfen Sie, ob die Dokku-Konfigurationsseite nach IP-Adresse des Droplets verfügbar ist, und fahren Sie dann mit Schritt 4 zum Erstellen des VPS fort.
  3. Wenn keine Einstellungsseite vorhanden ist, setzen Sie das Kennwort zurück und versuchen Sie erneut, über das Terminal darauf zuzugreifen. Wenn auch in diesem Fall der Kennwortzugriff nicht erfolgreich ist, installieren Sie das Droplet erneut, wie im vorherigen Absatz beschrieben.


4. Ich kenne das Passwort aus dem Droplet nicht

Wenn Sie kein Kennwort haben, rufen Sie die Droplet-Steuerungsseite auf der Registerkarte "Zugriff" auf und setzen Sie das Kennwort zurück. Dann kommt ein neues Passwort auf die Mail.

5. Das Projekt startet nicht an dem angegebenen Link

Wenn die Dokku-Einstellungen korrekt sind, ist diese Situation möglich, wenn die Anwendung mit einem Fehler gestartet und geschlossen wurde. Gib ssh in das Droplet ein und überprüfe die Logs:
$ dokku logs 

Vielleicht wird der Fehler klar sein. Oder Sie haben vergessen, Ihr Projekt nach push'a zu starten:
$ cd /home/dokku/YOUR-APP-NAME
$ dokku run YOUR-APP-NAME node app.js


6. Ich habe die SSH-Erstellung übersprungen und möchte nun die Autorisierung mit dem SSH-Schlüssel vornehmen

Ich habe versucht, ein neues Droplet ohne Angabe eines SSH-Schlüssels auf der Droplet-Erstellungsseite zu erstellen, aber auf der Dokku-Einstellungsseite wurden sie weiterhin aufgefordert, einen öffentlichen Schlüssel einzugeben. Danach habe ich einige Maßnahmen ergriffen, konnte mich jedoch immer noch nicht mit dem SSH-Schlüssel anmelden, sondern nur mit dem Kennwort. Ich weiß also nicht, wie ich in dieser Situation am besten handeln soll. Möglicherweise ist der Fehler beim Kopieren des SSH-Schlüssels in das Droplet aufgetreten. Google. Erstellen Sie im Extremfall von Anfang an ein neues Tröpfchen, wie in diesem Handbuch beschrieben. Beispiel suchen .

7. So fügen Sie einem vorhandenen Droplet einen Domainnamen hinzu

Dies ist überhaupt nicht schwierig, nur ein paar Schritte. Geben Sie in den DNS-Einstellungen Ihres Domainnamens die folgenden Einstellungen an:
apps.mydomain.com. IN A [Droplet-IP-Adresse]
* .apps.mydomain.com. IN A [Droplet-IP-Adresse]

Wechseln Sie im Droplet zum Ordner "dokku" und öffnen Sie "HOSTNAME" zum Bearbeiten:
$ cd /home/dokku/
$ vim HOSTNAME

Drücken Sie die Taste "i" und schreiben Sie den Domainnamen anstelle der IP-Adresse in die Datei "HOSTNAME". Drücken Sie dann die EscTasten, :wqund Enter. Hurra! Wir haben gerade den legendären Vim erfolgreich eingesetzt!
Damit Projekte in Unterdomänen ausgeführt werden können, müssen Sie eine Datei erstellen VHOST:
$ touch VHOST

Schreiben Sie den Domänennamen in die Datei auf die gleiche Weise wie im vorherigen Absatz. Andernfalls sind die Projekte über den Port verfügbar. Jetzt müssen Sie das Projekt neu laden und vorher aus dokku löschen:
$ dokku delete app_name

Löschen Sie den vorherigen Remote im Repository mit der IP-Adresse im Namen:
$ git remote remove dokku

Und fügen Sie eine neue Fernbedienung unter dem alten Namen hinzu:
$ git remote add dokku dokku@apps.mydomain.com:app_name

Konfigurieren Sie den SSH-Schlüssel für das neue Hosting und fügen Sie ihn ~/.ssh/configneuen Zeilen hinzu:
Hosten Sie YOUR.DROPLET.IP.ADDRESS
    IdentityFile ~ / .ssh / id_rsa_digitalocean_dropletname

Fühlen Sie sich frei, das Projekt voranzutreiben:
$ git push dokku master


Projekte werden nun in Subdomains verfügbar sein.

Vielen Dank für Ihre Aufmerksamkeit, ein schönes Wochenende!

Jetzt auch beliebt: