2017-06-27 3 views
1

Mit der OS X Server-Anwendung kann ich mehrere Domänen auf verschiedene Websites verweisen. Alle Domains können Port 80 gleichzeitig verwenden und OS X löst die zu verwendende Website auf.Zeigen Sie die Domäne auf eine Webanwendung unter OS X Server (z. B. Kitura, perfect, Vapor Server)

Wenn ich meinen kitura-Server starte (ich nehme an, das gleiche passiert mit Vapor und Perfect), muss ich es auf einem freien Port (ex. 8080) starten. Wenn ich es auf 80 starte, entsteht ein Konflikt mit den Webseiten und es wird wahrscheinlich nicht auf meine Anrufe antworten.

Wie wird Kitura richtig eingerichtet, sodass Port 80 zusammen mit anderen Diensten verwendet wird?

ich starten kitura Server mit dem folgenden:

do { 
    let controller = try Controller() 
    Log.info("Server will be started on '\(controller.url)'.") 
    Kitura.addHTTPServer(onPort: controller.port, with: controller.router) 
    // Start Kitura-Starter server 
    Kitura.run() 
} catch let error { 
    Log.error(error.localizedDescription) 
    Log.error("Oops... something went wrong. Server did not start!") 
} 

Und ich bekomme die folgende auf dem Protokoll:

[2017-06-27T17:57:30.635+03:00] [VERBOSE] [Router.swift:68 init(mergeParameters:)] Router initialized 
[2017-06-27T17:57:36.817+03:00] [INFO] [main.swift:37 KiteSpotterServer] Server will be started on 'http://localhost:8080'. 
[2017-06-27T17:57:37.588+03:00] [VERBOSE] [Kitura.swift:72 run()] Starting Kitura framework... 
[2017-06-27T17:57:38.457+03:00] [VERBOSE] [Kitura.swift:82 start()] Starting an HTTP Server on port 8080... 
[2017-06-27T17:57:39.190+03:00] [INFO] [HTTPServer.swift:117 listen(on:)] Listening on port 8080 

Antwort

1

Die gängigste und wahrscheinlich einfachste Möglichkeit, Ihre Anwendung über Port 80 unter OS X (oder Mac OS) erreichbar zu machen, ist Konfigurieren Sie einen Reverse-Proxy.

Diese Lösung gilt für jede Webanwendung, nicht nur für Kitura.

Die OS X Server-App enthält einen Apache-Server, der so konfiguriert werden kann, dass er als Reverse-Proxy fungiert. Der Apache Reverse Proxy kann Port 80 für eine bestimmte Domain abhören und dann alle Anfragen an den internen Port 8080 weiterleiten, den Ihre Anwendung überwacht, und umgekehrt.

Wie dies richtig zu machen:

Schritt 1: In /Library/Server/Web/config/apache2/webapps, erstellen Sie eine plist-Datei my.application.plist (zum Beispiel) genannt. Diese plist beschreibt eine sogenannte Webapp, die dann in der OS X Server App aktiviert werden kann.

Beispiel Webapp plist:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<!-- Allow to include a custom Apache configuration file from Server app --> 
<plist version="1.0"> 
<dict> 
    <key>includeFiles</key> 
    <array>   
     <!-- Include files are activated in virtual host when webapp is started --> 
     <string>/Library/Server/Web/Config/apache2/httpd_webapp_myapp.conf</string> 
    </array> 

    <key>name</key> 
    <string>com.atlassian.webapp.myapp</string> 
    <key>displayName</key>   <!-- Name shown in Server app --> 
    <string>Reverse proxy for myapp</string> 
    <key>installationIndicatorFilePath</key>  <!-- The presence of this file indicates web app is installed --> 
    <string>/Library/Server/Web/Config/apache2/httpd_webapp_myapp.conf</string> 

    <key>sslPolicy</key><!-- Determines webapp SSL behavior --> 
    <integer>0</integer> 
    <!-- 0: default, UseSSLWhenEnabled --> 
    <!-- 1: UseSSLAlways --> 
    <!-- 2: UseSSLOnlyWhenCertificateIsTrustable --> 
    <!-- 3: UseSSLNever --> 
    <!-- 4: UseSSLAndNonSSL --> 
</dict> 
</plist> 

In dem obigen Beispiel ersetzen myapp durch Ihren App-Namen.

Schritt 2: Als nächstes wird in /Library/Server/Web/Config/apache2, eine Datei mit dem Sie in der plist-Datei (httpd_webapp_myapp.conf in meinem Beispiel) ausgewählten Namen erstellen. Diese Datei wird den Reverse-Proxy konfigurieren.

Beispiel Proxy-Konfigurationsdatei:

# As described at http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass 
# Service proxy for myapp installation 
ProxyRequests Off 
ProxyVia Off 
<Proxy *> 
    Require all granted 
</Proxy> 
ProxyPass/http://myapp.mydomain:8080/ 
ProxyPassReverse/http://myapp.mydomain:8080/ 

In dem obigen Beispiel ersetzen myapp.mydomain durch die Domain, unter der Sie Ihre Anwendung (und 8080 durch die Anwendung des Port, wenn es anders ist) zu erreichen.

Wichtig: Beide Dateien müssen unter Verwendung von sudo nano erstellt/bearbeitet werden, und sie müssen im Besitz von root sein.

Schritt 3: Im OS X Server App zu gehen, zu Websites, wählen Sie die Domain, die Sie (Doppelklick oder klicken Sie auf das Bearbeiten-Symbol) verwenden möchten, dann klicken Sie auf bearbeiten erweiterte Einstellungen. Wenn alles gut gegangen ist, erscheint Ihre neu erstellte Webapp unter Stellen Sie diese Webapps unter dieser Website zur Verfügung. Aktivieren Sie das Kontrollkästchen Ihrer Webanwendung und speichern Sie sie.

Es ist normalerweise nicht notwendig, den Webserver neu zu starten (die Server-App wird dies für Sie tun).

Schritt 4: Testen Sie, ob Sie Ihre Anwendung unter dieser Domäne erreichen können.

Hinweis: Es kann notwendig sein, die Anwendung irgendwie zu konfigurieren, damit sie weiß, dass sie hinter einem Reverse-Proxy läuft.

Auf den ersten Blick scheint dies ein wenig kompliziert, aber es ist nicht wirklich, und soweit ich weiß, ist es jetzt die einzige akzeptierte Möglichkeit, einen Reverse-Proxy auf OS X-Server zu konfigurieren.

+0

Es funktioniert wie ein Charme. Vielen Dank – zirinisp

+0

Freut mich zu hören! Wenn Sie den Titel Ihrer Frage von "kitura server" in "einen Anwendungsserver" ändern würden, würde dies den allgemeinen Aspekt Ihrer Frage widerspiegeln und anderen helfen, ihn zu finden. – not2savvy

+0

Sollte jetzt generischer sein – zirinisp

0

OSX Server bereits Port 80 verwendet, um eingehende Verbindungen zu hören. Daher kann Kitura den Port 80 nicht verwenden, während OSX Server ihn verwendet. Um Kitura auf Port 80 zu verwenden, müssen Sie OSX Server herunterfahren, um Port 80 freizugeben. Alternativ können Sie OSX Server so einrichten, dass Anfragen an Ihre Website an Ihre Kitura-Anwendung weitergeleitet werden. Aber ich weiß nicht, wie man dies speziell mit OSX Server macht.

Verwandte Themen