Günstiger Server um die App online gehen zu lassen?

  • Antworten:19
  • Bentwortet
Gelöschter Account
  • Forum-Beiträge: 70

28.06.2016, 17:19:08 via App

Hallo ich habe eine App nun fertig die mit MySQL und PHP 5+ arbeitet.

Bisher habe ich sie local laufen lassen mit Xamp.

Ich möchte sie jetzt online gehen lassen dass ich von überall aus darauf zugreifen kann.

Wie bewerkstellige ich das am besten?
Online Services in anspruch nehmen?
Eigenen Server kaufen?

Das ding ist ich möchte nicht soviel geld ausgeben da die datenbank vorerst nicht mehr als 100 mb benötigt. was mir einen richtigen server zu kaufen einfach zu wenig ist.

könnte mir qnap oder sowas gut vorstellen.

Antworten
Gelöschter Account
  • Forum-Beiträge: 70

28.06.2016, 17:27:50 via App

freehoster hab ich schon ausprobiert, da funktioniert aber leider meine app irgendwie nichtmehr.
ich habe zb mir bei 1und1.de eine sql datenbank für 10€ gekauft und einen webspace. wenn ich jetzt meine php files im browser eingebe funktionieren sie zwar aber komischerweise wenn ich die webspace url in der app nutze funktioniert die php datei nichtmehr.

local jedoch alles.
denke das liegt an der firewall von 1und1 dass die das iwie blockiert haben als sicherheit.

deswegen ist es doch am einfachsten selber was einzurichten denke ich.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

28.06.2016, 17:35:18 via Website

Na ja du kannst dir einen Raspberry kaufen dir na nen Linux draufballern und nen Apache etc. laufen lassen.
Dann bracusht du halt nen Portforwarding ins internet mit evntl ner festen IP oder dyndns.

Aber es muss gehen, habe selbst eine Webseite mit PHP MySql etc.. am laufen welche unter anderem auch API für eine App ist.
Und die Skripte tun auf meinem XAMPP und auf dem Webspace.
Hast du auch alles in denen Skripen richtig konfiguriert bsp. dbpass und user angepasst und dbname beim Verbinden.
Pasen die SQL Querys alle?

Ohne dass du mir sagst wie sich der Fehler "php tut nicht" auswirkt, kann ich auch nicht sagen woran es liegt.
Evntl ein HTTP 500?

Edit: Du sagt im Browser geht es nur in der App nicht oderß
Was ist denn da der Fehler, gehe beim laden da mal mit dem debugger durch.

— geändert am 28.06.2016, 17:36:02

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 70

28.06.2016, 17:44:11 via App

Es ist so die PHP file durchsucht die Datenbank nach einem Namen, wenn der Name gefunden wurde gibt er sie als print aus. Soweit so gut wenn ich die PHP Datei auf dem PC ausführe im Browser funktioniert es auch und ich bekommen den Namen ausgelesen zurück. Das bedeutet schonmal dass die PHP datei die richtigen Datenbank Daten hat.

In meiner AndroidApp wird der link zb http://1und1.meinwebspace.de/diephpdatei.php als WebClient aufgerufen und der Name den Die PHP Datei ausgibt wird dort gedownloadet. Und da kommt dann der Error.
Wenn ich aber dieselbe PHP datei mit localhost ausfüre also mit xampp funktioniert der download.

Werde den error morgen posten habe erst morgen die möglichkeit zu debuggen.

— geändert am 28.06.2016, 17:46:21

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

28.06.2016, 17:49:37 via Website

Das ist komisch, liegt dann aber wohl an Android besser gesagt WebClient, der irgend einen Mist macht oder nen falschen request.

Mal einen Tipp: Bau dir in PHP doch gleich deine eigene Rest API mit Json als ausgabeformat, dann kannst du auch gleich Objekte vom PHP zurückgeben lassen und dieses dann einfach in der App einlesen. Dann sparst du dir das selber parsen der Antworten und musst nur noch die Klasse die gefüllt wird benutzen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 70

28.06.2016, 17:57:02 via App

Ich verstehs nicht wiso funktioniert dann aber der selbe Code mit xamp?
Es ist 1 zu 1 der selbe Code.
Sobald ich ihn bei 1und1 hatte geht er nichtmehr. Aber nur der Android Code. im Browser funktioniert alles.

Naja werde den Code samt Fehlermeldung hier posten.

Antworten
pepperonas
  • Forum-Beiträge: 434

29.06.2016, 05:32:32 via Website

Im Prinzip wurde ja schon fast alles gesagt.
Vielleicht kurz eine Gegenüberstellung von "Heim Server" und Drittanbieter (Service von 1und1, Strato, Uberspace, etc...)

Vorteile Heim-Server:
günstig sofern Hardware vorhanden, (oft) schnell eingerichtet

Nachteile Heim-Server:
Ausfallwahrscheinlichkeit hoch (Stromausfall, instabile Internetverbindung), ggf. Sicherheits-Risiko im eigenen Netzwerk, je nach Upstream deiner Leitung mutest du deinen Nutzern lange Ladezeiten zu, ggf. nutzt du deinen privaten Vertrag in Augen des Providers gewerblich und dir wird eine Tarifumstellung vorgeschlagen (wäre zumindest denkbar)..

Vorteile eines Drittanbieter:
Performance, schnelle Leitung, Ausfallsicherheit um ein Vielfaches höher, oft weitere Angebote (Email, Hosting für Website, etc), je nach Anbieter gute Docs hinsichtlich der sicheren Einrichtung...

Nachteile:
monatliche Kosten (ab 5€ gehts los), ggf. schwieriger zu konfigurieren (je nach Anbieter und Support unterschiedlich)

Fazit:
Der professionelle Hoster bietet schon einige Vorteile und ist auch nicht unbezahlbar. Meine Empfehlung wäre Uberspace, dort bestimmt man nach einem kostenlosen Probemonat selbst was man zahlen will. Die meisten zahlen meines Wissens zwischen 5 und 10€.. Meinen Beitrag habe ich auf 8€ eingestellt und bekomme immer ratzfatz jemanden vom Support. Also Preisleistung meiner Meinung nach eine glatte 1 mit Sternchen. :)

Open Source

Antworten
Gelöschter Account
  • Forum-Beiträge: 70

29.06.2016, 07:55:42 via Website

Vorteile eines Drittanbieter: Performance, schnelle Leitung,
Ausfallsicherheit um ein Vielfaches höher, oft weitere Angebote
(Email, Hosting für Website, etc), je nach Anbieter gute Docs
hinsichtlich der sicheren Einrichtung...

Nachteile: monatliche Kosten (ab 5€ gehts los), ggf. schwieriger zu
konfigurieren (je nach Anbieter und Support unterschiedlich)

Ja da hast du recht, hab mich jetzt doch für 1und1 entschieden bzw bleibe ich bei dem anbieter da es da noch relativ günstig ist.
Und sagen wir mal so das dashboard und alles finde ich zum vergleich von anderen sehr viel übersichlticher was für mich ein wichtiger faktor ist.
Ich muss nur schaffen dass mein PHP Script auch bei 1und1 läuft.

Deswegen hier für Pascal oder auch andere nochmal der Code:

Also das hier die die Fehlermeldung die ich bekomme wenn ich debugge:

System.Reflection.TargetInvocationException: An exception occurred during the operation, making the result invalid.  Check InnerException for exception details.

Aufgerufen wird das PHP Script so in meinem Code(Snippet), Hier wird aber die Fehlermeldung nicht geworfen:
(Das ist übrigens ein WebClient in C#)

private static string urlAdress = "http://s632761373.online.de/users_select.php"
//Upload Name zu Php
client = new WebClient();
uri = new Uri(urlAdress + "?Name=" + NameEditText.Text + "&Passwort=" + PasswortEditText.Text);
//GutscheinAktivitäten Liste Downloaden
client.DownloadDataAsync(uri);
client.DownloadDataCompleted += client_DownloadDataCompleted;

Und jetzt kommt der teil wo die Fehlermeldung geworfen wird und dass ist der teil der das Wort "Nein" Dass die PHP file ausgibt downloaden sollte:

 //Wenn Download fertig ist überprüfen ob nein als response zurückkommt
        private void client_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e)
        {
            RunOnUiThread(() =>
            {
                //Hier ist die Error meldung
                string result = Encoding.UTF8.GetString(e.Result);

                //Wenn ja zurückgekommen ist 
                if (result.Equals("Ja"))
                {
                    pd.Dismiss();
                    var Startseite = new Intent(this, typeof(Startseite));
                    Startseite.PutExtra("LoginData", NameEditText.Text);
                    StartActivity(Startseite);
                    Toast.MakeText(this, "Willkommen " + NameEditText.Text, ToastLength.Long).Show();
                }
                //Wenn nein zurückgekommen ist
                else
                {
                    pd.Dismiss();
                    Android.App.AlertDialog.Builder alert2 = new Android.App.AlertDialog.Builder(this);
                    alert2.SetTitle("Login Fehlgeschlagen!");
                    alert2.SetMessage("Login Name oder Passwort ist falsch!");
                    alert2.SetPositiveButton(" Verstanden", (senderAlert, args) => {
                    });
                    Dialog dialog2 = alert2.Create();
                    dialog2.Show();
                    return;
                }
            });
        }
        #endregion

Nochmal zur Info wenn ich den selben Code mit XAMPP also local ausführe funktioniert er ohne dass ich was ändern muss.
Sobalt ich die PHP File bei 1und1 im Code ausführe geht es eben mit dieser Fehlermeldung nichtmehr.
Und noch ein wichtiger Punkt ist dass die PHP File die ich jetzt bei 1und1 habe über den Browser aufrufe das Nein zurückgibt also funktioniert.
Könnt ihr eigentlich auch selber testen da es sowiso nur ein testwebspace für foren ist von mir:
http://s632761373.online.de/users_select.php

— geändert am 29.06.2016, 10:26:12

Antworten
Fabian Simon
  • Forum-Beiträge: 359

29.06.2016, 10:18:01 via Website

Prüfe deine URL erneut....

Error 404 - Not found

Die angegebene Seite konnte nicht gefunden werden.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

29.06.2016, 11:20:28 via App

Was ist die InnerException die du checken sollst?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 70

29.06.2016, 11:30:50 via Website

06-26 14:25:59.429 E/mono-rt ( 3045): [ERROR] FATAL UNHANDLED EXCEPTION: System.Reflection.TargetInvocationException: An exception occurred during the operation, making the result invalid.  Check InnerException for exception details. ---> System.Net.WebException: Error: NameResolutionFailure
06-26 14:25:59.429 E/mono-rt ( 3045):   at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x0005e] in /Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System/System.Net/HttpWebRequest.cs:1005 
06-26 14:25:59.429 E/mono-rt ( 3045):   at System.Net.WebClient.GetWebResponse (System.Net.WebRequest request, IAsyncResult result) [0x00000] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/System/net/System/Net/webclient.cs:319 
06-26 14:25:59.429 E/mono-rt ( 3045):   at System.Net.WebClient.DownloadBitsResponseCallback (IAsyncResult result) [0x00015] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/System/net/System/Net/webclient.cs:1216 
06-26 14:25:59.429 E/mono-rt ( 3045):   --- End of inner exception stack trace ---

Das ist alles was ich zu sehen bekomme.

Ok ich habs.
WebClient kann nur eine URL aufrufen mit einer IP Adresse und nicht mit dem HostName also so in der Art:
http://xxxx.xxx.x.x/users_select.php

Das Problem ist von 1und1 habe ich zwar meine Domain service-lukas-reiner.de/users_select.php aber ich habe keine IP Addresse davon.
Deswegen hat der Code auch im Android Emulator funktioniert da ich da eben die url http://127.0.0.1/users_select.php hatte. Localhost halt.
Also ist 1und1 für mich in dem Fall schon gelaufen da ich nicht wüsste wie ich die IP Adresse bekommen sollte.
BZW kann man bei 1und1 ja die DNS einstellungen ändern? Kann ich da nicht einfach eine andere ip eingeben?

— geändert am 29.06.2016, 11:42:17

Antworten
Gelöschter Account
  • Forum-Beiträge: 70

29.06.2016, 11:43:30 via Website

Rafael K.

System.Net.WebException: Error: NameResolutionFailure

Klingt nach einem DNS Fehler.

Hat die App Internet-Permission?
Kannst du die URL im Browser der Telefons öffnen?
Schon mal mit der IP statt der Domain probiert?

Bitte meine Antwort davor nochmal durchlesen hab sie gerade bearbeitet mit mehr Details.

Antworten
Gelöschter Account
  • Forum-Beiträge: 70

29.06.2016, 11:51:38 via Website

image

So sieht es momentan bei 1und1 aus. ich habe da zwar eine IP Adresse "217.160.0.xxx" aber wenn ich diese in meinem Code hernehme statt "service-lukas-reiner.de" dann funktioniert es trotzdem nicht.
Denke das liegt daran dass das keine public ip ist. Wenn ich im Internet zB Domain to IP mache finde ich die IP aber wenn ich IP zu Host mache finde ich meine Domain nicht.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

29.06.2016, 12:02:44 via App

Wahrscheinlich weil auf einem Server mehrere Webseiten gehostet sind.
Dann kann ich dir nicht helfen kann nachher nir mal schauen obs auch so ist wenn ich ne Java App nehme.
Edit lade dir mal den Terminal emulator runter und probier nen ping.

— geändert am 29.06.2016, 12:04:58

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 70

29.06.2016, 12:04:44 via Website

Ja wird wahrscheinlich daran liegen.
Ja dass wär super bzw wäre es super einen OnlineService zu finden der SQL Server anbietet + Webspace mit Public IP + phpMyAdmin.

Antworten
Gelöschter Account
  • Forum-Beiträge: 70

29.06.2016, 13:04:52 via Website

Ok Leute ich habe die Lösung jetzt selber gefunden.
Meistens ist immer die simpleste Lösung die die man übersieht.

Es ist ja so dass der Webclient eine Static IP braucht um eine PHP aufzurufen. Deswegen ist es für Anbieter die einen Webstpace anbieten sehr ungeeignet vorallem weil man selten eine IP bekommt sondern nur den Domain Namen.

Deswegen muss man es mit dem neuen HTTPClient machen.

Also sieht der neue Code nun wiefolgt aus (Man Merke das der neue Code nurmehr ein Dreizeiler ist und das ganze noch simpler macht als vorher):

       //Upload Name zu Php
        uri = new Uri(urlAdress);
        var client = new System.Net.Http.HttpClient();
        var result = client.GetStringAsync(uri).Result;
        Toast.MakeText(this, result, ToastLength.Long).Show();

Der Toast gibt nun endlich das "Nein" der PHP Datei aus.
Also an alle die mal vll den selben Error haben dass hier ist die einzige Lösung. Bei Xamarin.Android zumindest.

Um den Thread dann abzuschließen wiederhole ich nochmal:

1und1 als Webspace hoster hat sich vorerst als meine Wahl erwiesen.
Sehr gutes Dashboar alles sehr übersichtlich!
Dann SQL Server 1GB 10€ für 1 Jahr!
1 Jahr Ulimited Traffic, Webspace für 1€ im Monat (ist momentan ein Angebot), danach 5€.
3 Domains + 100 Subdomains
1x SSL Verschlüsselung
Und auch sonst alles einstellbar welche PHP version man nutzen will usw!

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

02.07.2016, 14:38:58 via Website

Kleiner Tipp noch hinterher:
Schau dir mal Firebase an. Das ist eine Backend Lösung von Google speziell auf Apps zugeschnitten.
Bietet quasi alles wichtige, was eine App können muss. Authentifizierung mit Email, Facebook, Google+, etc.
Datenbank, Analytics.
Preislich wächst es auch sehr gut mit der App mit.
Ich werde das im nächsten Projekt definitiv testen.

Antworten