Kirjoittaja Aihe: PHP-sivun ohjaus mysql-serveriin sisä- ja ulkoverkosta.  (Luettu 4842 kertaa)

Hetunet

  • Käyttäjä
  • Viestejä: 72
    • Profiili
Tilanne  tämä:

Minulla toimii mysqllään portattu php-sivusto sisäverkossa. Olen ohjannut yhteyden mysql-koneen sisäiseen ip-numeroon. Nyt jos otan ulkoverkosta yhteyttä sivuun, niin se yrittää etsiä mysql-serveriä tyyliin 192.168.0.2, jota ulkoverkkolaisena en luonnollisesti löydä.

Pitäisikö minun jotenkin saada modeemin saama ip ympättyä serverille, vai miten pitäisi edetä?
Ei periaatteessa kiinteää ipeetä, mutta aina tuo näkyy vaan pysyvän samana.

Eli hiukan aukkoja sivistyksessä.

odysseus

  • Vieras
Vs: PHP-sivun ohjaus mysql-serveriin sisä- ja ulkoverkosta.
« Vastaus #1 : 02.11.10 - klo:15.56 »
Tilanne  tämä:

Minulla toimii mysqllään portattu php-sivusto sisäverkossa. Olen ohjannut yhteyden mysql-koneen sisäiseen ip-numeroon. Nyt jos otan ulkoverkosta yhteyttä sivuun, niin se yrittää etsiä mysql-serveriä tyyliin 192.168.0.2, jota ulkoverkkolaisena en luonnollisesti löydä.

Pitäisikö minun jotenkin saada modeemin saama ip ympättyä serverille, vai miten pitäisi edetä?
Ei periaatteessa kiinteää ipeetä, mutta aina tuo näkyy vaan pysyvän samana.

Eli hiukan aukkoja sivistyksessä.

Hmmm. Hieman sekavaa: "mysqllään portattu php-sivusto"! Mitä tuo tarkoittaa?
Varmaankin sitä, että Apache(HTTP)+PHP-"yhdistelmä" käyttää MySQL:ää kantana.

Eli siis parametriksi serverin mysql_connet() -osaan "localhost" jos kerran PHP ja MySQL on samalla koneella.
Jos kantapalvelin on taas eri koneella, niin sitten se IP-osoite, mikä näkyy reitittimelle ulkoisena (jolloin se ei toimi sisäisenä ellet tee aliasta)...

Hetunet

  • Käyttäjä
  • Viestejä: 72
    • Profiili
Vs: PHP-sivun ohjaus mysql-serveriin sisä- ja ulkoverkosta.
« Vastaus #2 : 02.11.10 - klo:18.12 »
Hmmm. Hieman sekavaa: "mysqllään portattu php-sivusto"! Mitä tuo tarkoittaa?
Varmaankin sitä, että Apache(HTTP)+PHP-"yhdistelmä" käyttää MySQL:ää kantana.

Eli siis parametriksi serverin mysql_connet() -osaan "localhost" jos kerran PHP ja MySQL on samalla koneella.
Jos kantapalvelin on taas eri koneella, niin sitten se IP-osoite, mikä näkyy reitittimelle ulkoisena (jolloin se ei toimi sisäisenä ellet tee aliasta)...
Joo tätä tarkoitin. Muistaakseni testasin tota localhostia, mutta tuli ongelmia juuri ulkoapäin yhteyksissä. Seuraavass kun korvasin "www.palvelin.com" localhostilla, niin ei toiminu. Testaan vielä kun pääsen kotio ja laitan tarkempaa infoa....

<?php

date_default_timezone_set('Europe/Helsinki');

$dbhost   = 'mysqlpalvelin';
$dbuser   = 'mysqlkayttaja';
$dbpass   = 'mysqlsalasana';
$dbkanta  = 'pupesoft';

$palvelin = 'http://www.palvelin.com/pupesoft/';

if (isset($_SERVER['SERVER_PORT']) and $_SERVER['SERVER_PORT'] == '443') {
   $palvelin = 'https://www.palvelin.com/pupesoft/';             
}

?>

Hetunet

  • Käyttäjä
  • Viestejä: 72
    • Profiili
Vs: PHP-sivun ohjaus mysql-serveriin sisä- ja ulkoverkosta.
« Vastaus #3 : 03.11.10 - klo:07.57 »
Kyllä se nyt pelaa, kun laitoin modeemin saaman ip:n www.palvelin,comin tilalle ja tein reitittimiin väylät http- ja https:lle

Saiskohan sen jotenkin muuttujalla hoidettua automaattisesti, jos sattuu operaattorin antama ip vaihtumaan?

odysseus

  • Vieras
Vs: PHP-sivun ohjaus mysql-serveriin sisä- ja ulkoverkosta.
« Vastaus #4 : 03.11.10 - klo:12.48 »
Kyllä se nyt pelaa, kun laitoin modeemin saaman ip:n www.palvelin,comin tilalle ja tein reitittimiin väylät http- ja https:lle

Saiskohan sen jotenkin muuttujalla hoidettua automaattisesti, jos sattuu operaattorin antama ip vaihtumaan?

Eli tuo kaikki viittaa siihen, että sulla on se php scripti siellä "ulkona" client-koneella ja kanta on reitittimen/modeemin takana palvelimella virtuaali-IP:ssä (PPPoE operaattorille)? Eikö?

Jos on näin, niin kysymys kuuluu, että miksi? Eikö olisi kätevämpää asentaa sinne kotikoneelle Apache ja PHP ja avata reitittimltä 80-portti SUA-ohjauksella sille palvelinkoneelle. Samalla palvelimella sitten se MySQL kanta, joten localhost toimii siinä.

Se, että operaattorin antama IP vanhenee, niin sille ei voi mitään. Ainoa keino on hommata kiinteä IP. eli mielummin hosti jostain virtuaalipalvelimelta ja sille domain-nimi...

Hetunet

  • Käyttäjä
  • Viestejä: 72
    • Profiili
Vs: PHP-sivun ohjaus mysql-serveriin sisä- ja ulkoverkosta.
« Vastaus #5 : 03.11.10 - klo:15.21 »
Kyllä se nyt pelaa, kun laitoin modeemin saaman ip:n www.palvelin,comin tilalle ja tein reitittimiin väylät http- ja https:lle

Saiskohan sen jotenkin muuttujalla hoidettua automaattisesti, jos sattuu operaattorin antama ip vaihtumaan?

Eli tuo kaikki viittaa siihen, että sulla on se php scripti siellä "ulkona" client-koneella ja kanta on reitittimen/modeemin takana palvelimella virtuaali-IP:ssä (PPPoE operaattorille)? Eikö?

Jos on näin, niin kysymys kuuluu, että miksi? Eikö olisi kätevämpää asentaa sinne kotikoneelle Apache ja PHP ja avata reitittimltä 80-portti SUA-ohjauksella sille palvelinkoneelle. Samalla palvelimella sitten se MySQL kanta, joten localhost toimii siinä.

Se, että operaattorin antama IP vanhenee, niin sille ei voi mitään. Ainoa keino on hommata kiinteä IP. eli mielummin hosti jostain virtuaalipalvelimelta ja sille domain-nimi...

Eli minulla on apache ja mysql fedora-koneella. Toimiston verkossa toimii, muttei toiminut internetin kautta. Nyt kun vaihdoin operaattorin ipn asetuksiin, niin toimii internetistä muttei toimistossa....

Toi kiintee ip taitaa olla aika kallis? Eikö ole jotain ohjausta routerille että kun sisäverkko lähtee ettimään operaattorin iptä, niin tietääkin ohjautua sisäverkkoon?
Samoin on jotain temppua hakee vaihtuva ip routerilta ja jonkun muuttujan kautta PHP:hen?

Hetunet

  • Käyttäjä
  • Viestejä: 72
    • Profiili
Vs: PHP-sivun ohjaus mysql-serveriin sisä- ja ulkoverkosta.
« Vastaus #6 : 03.11.10 - klo:15.29 »
Muistelen et oliko joku kiintee reitti, jolla voi kertoo apchelle ettei lähe hakemaan maailmalt kun on jo samalla koneella?

Ehkä jotain modeemilta ipn suora anto serverille ja sisäverkko serverin taakse eri verkkokortin ja routerin kautta?

Kuten sanottu: hiukan aukkoja sivistyksessä :)

odysseus

  • Vieras
Vs: PHP-sivun ohjaus mysql-serveriin sisä- ja ulkoverkosta.
« Vastaus #7 : 03.11.10 - klo:18.05 »
En silti nyt ymmärrä mikä on vikana. Hmmmm.

Tarvitaan seuraavaa:

1) Normiasennus Apache, PHP, MySQL koneelle (olipa Fedora tai Ubuntu)
2) Jos kyseessä on Fedora, niin todennäköisesti sen tiukempi tietoturva eli SELinux estää toiminnan!!! Kokeileppa laittaa SELinux tilaan "permissive" tai vaikka kokeilun ajaksi tilaan "disabled"!
3) Tehdään nettisivu PHP:llä, joka käyttää MySQL kantaa "localhost":ssa
4) Kokeillaan clientilla Firefoxilla osoitteessa "localhost/minunsivu.php"
5) Selvitetään mikä on koneen julkinen IP ( http://www.whatismyip.com )
6) Kokeillaan samaa julkisella IP:llä

Eli todennäköisesti on vialla seuraavat:
1) Reititin ei salli portin 80 ohjausta koneellesi
2) Koneesi ei salli kyselyitä ulkoverkosta SELinuxin vuoksi


Hetunet

  • Käyttäjä
  • Viestejä: 72
    • Profiili
Vs: PHP-sivun ohjaus mysql-serveriin sisä- ja ulkoverkosta.
« Vastaus #8 : 03.11.10 - klo:19.24 »
Sitä kun on hölmö ja silmät väärässä paikkaa.... :(
Tässähän se on ratkasu kun kattoo:
http://www.palvelin.com on sisäverkon ip kun ei tarvii turvaa ja https://www.palvelin.com on operaattorin antama ip kun tullaan netistä ja halutaan salaus.

Jollain kun vielä pystys lukemaan ton operaattorin antaman ip:n automaagisesti scriptiin....
<?php

date_default_timezone_set('Europe/Helsinki');

$dbhost   = 'mysqlpalvelin';
$dbuser   = 'mysqlkayttaja';
$dbpass   = 'mysqlsalasana';
$dbkanta  = 'pupesoft';

$palvelin = 'http://www.palvelin.com/pupesoft/';

if (isset($_SERVER['SERVER_PORT']) and $_SERVER['SERVER_PORT'] == '443') {
   $palvelin = 'https://www.palvelin.com/pupesoft/';             
}

?>

odysseus

  • Vieras
Vs: PHP-sivun ohjaus mysql-serveriin sisä- ja ulkoverkosta.
« Vastaus #9 : 07.11.10 - klo:12.47 »
En vain vieläkään ymmärrä miksi se localhost ei käy sinulle. Se kyllä kelpaa kaikille muille maailman palveluille, joissa PHP ja MySQL on samalla koneella.

SSL tunneloinnilla ja liikenteen salauksella ei ole mitään tekemistä sen kanssa eikä se muuta IP:tä mihinkään. Ainoastaan portti vaihtuu 80 -> 443.

Sinulla on nyt joku siellä perustavaa laatua väärin ajateltu/suunniteltu ja tehty....

Tuosta koodista voi ehkä jotenkin päätellä, että se sinun PHP scripti ei kuitenkaan ole samalla koneella kuin kanta ??? Vai minkä ihmeen vuoksi tarvitset tuota $palvelin -muuttujaa?
Muuttuja $dbhost on se, mikä osoittaa sinne kantapalvelimeen ja siihen tulee siis "localhost" jos se on samalla koneella.

Hetunet

  • Käyttäjä
  • Viestejä: 72
    • Profiili
Vs: PHP-sivun ohjaus mysql-serveriin sisä- ja ulkoverkosta.
« Vastaus #10 : 09.11.10 - klo:08.01 »
En vain vieläkään ymmärrä miksi se localhost ei käy sinulle. Se kyllä kelpaa kaikille muille maailman palveluille, joissa PHP ja MySQL on samalla koneella.

SSL tunneloinnilla ja liikenteen salauksella ei ole mitään tekemistä sen kanssa eikä se muuta IP:tä mihinkään. Ainoastaan portti vaihtuu 80 -> 443.

Sinulla on nyt joku siellä perustavaa laatua väärin ajateltu/suunniteltu ja tehty....

Tuosta koodista voi ehkä jotenkin päätellä, että se sinun PHP scripti ei kuitenkaan ole samalla koneella kuin kanta ??? Vai minkä ihmeen vuoksi tarvitset tuota $palvelin -muuttujaa?
Muuttuja $dbhost on se, mikä osoittaa sinne kantapalvelimeen ja siihen tulee siis "localhost" jos se on samalla koneella.
Muistaakseni se käyttäyty localhostilla siten, että vieraileva kone yritti ettii kantaa localhostista eli iteltään. Pitänee vielä testata jos jotain sohelsin, tää on vähän uutta vielä meikälle.

odysseus

  • Vieras
Vs: PHP-sivun ohjaus mysql-serveriin sisä- ja ulkoverkosta.
« Vastaus #11 : 09.11.10 - klo:18.04 »
En vain vieläkään ymmärrä miksi se localhost ei käy sinulle. Se kyllä kelpaa kaikille muille maailman palveluille, joissa PHP ja MySQL on samalla koneella.

SSL tunneloinnilla ja liikenteen salauksella ei ole mitään tekemistä sen kanssa eikä se muuta IP:tä mihinkään. Ainoastaan portti vaihtuu 80 -> 443.

Sinulla on nyt joku siellä perustavaa laatua väärin ajateltu/suunniteltu ja tehty....

Tuosta koodista voi ehkä jotenkin päätellä, että se sinun PHP scripti ei kuitenkaan ole samalla koneella kuin kanta ??? Vai minkä ihmeen vuoksi tarvitset tuota $palvelin -muuttujaa?
Muuttuja $dbhost on se, mikä osoittaa sinne kantapalvelimeen ja siihen tulee siis "localhost" jos se on samalla koneella.
Muistaakseni se käyttäyty localhostilla siten, että vieraileva kone yritti ettii kantaa localhostista eli iteltään. Pitänee vielä testata jos jotain sohelsin, tää on vähän uutta vielä meikälle.

Ei se voi niin käyttäytyä kun vierailevalle koneellehan palvelu näkyy HTTP-portista webbisivuna! Ei se client tiedä siitä tietokannasta yhtikäs mitään eikä saakaan tietoturvasyistä tietää.

Vai miten ihmeessä olet ajatellut tuon homman?

Metamalli tässä:

Koodia: [Valitse]
<?php

$dbhost 
'localhost';
$dbuser 'mysqlkayttaja';
$dbpass 'mysqlsalasana';
$dbkanta 'pupesoft';

$dbh mysql_connect($dbhost$dbuser$dbpass);
mysql_select_db($dbkanta);

$sth mysql_query("SELECT field1, field2 FROM table");

while (
$row mysql_fetch_assoc($sth)) {
  echo 
$row['field1'];
  echo 
$row['field2'];
}

mysql_free_result($sth);
mysql_close($dbh);

?>


Tallenna tuo nimellä "kokeilu.php" ja laita www-roottiin.

Sitten kutsut sitä ensin vaikka komentoriviltä:
$ php kokeilu.php

Sitten kokeilet selaimella omasta verkosta:

http://localhost/kokeilu.php

ja sitten testaat ulkoverkosta vieraalta koneelta:
http://10.20.30.40/kokeilu.php

Jossa tuo 10.20.30.40 on se IP minkä saat edellä mainitusta MyIP palvelusta.
Muista luvittaa ja ohjata portti 80 reitittimeltä sinun koneellesi sisäverkossa!

Kun tuo toimii, niin sitten ratkaiset sen SSL-jutun erikseen, jotta salaus on päällä (jos jostain kumman syystä tarvitset sitä ->MIKSI?)

Hetunet

  • Käyttäjä
  • Viestejä: 72
    • Profiili
Vs: PHP-sivun ohjaus mysql-serveriin sisä- ja ulkoverkosta.
« Vastaus #12 : 12.11.10 - klo:13.49 »


Metamalli tässä:

Koodia: [Valitse]
<?php

$dbhost 
'localhost';
$dbuser 'mysqlkayttaja';
$dbpass 'mysqlsalasana';
$dbkanta 'pupesoft';

$dbh mysql_connect($dbhost$dbuser$dbpass);
mysql_select_db($dbkanta);

$sth mysql_query("SELECT field1, field2 FROM table");

while (
$row mysql_fetch_assoc($sth)) {
  echo 
$row['field1'];
  echo 
$row['field2'];
}

mysql_free_result($sth);
mysql_close($dbh);

?>


Tallenna tuo nimellä "kokeilu.php" ja laita www-roottiin.

Sitten kutsut sitä ensin vaikka komentoriviltä:
$ php kokeilu.php

Sitten kokeilet selaimella omasta verkosta:

http://localhost/kokeilu.php

ja sitten testaat ulkoverkosta vieraalta koneelta:
http://10.20.30.40/kokeilu.php

Jossa tuo 10.20.30.40 on se IP minkä saat edellä mainitusta MyIP palvelusta.
Muista luvittaa ja ohjata portti 80 reitittimeltä sinun koneellesi sisäverkossa!

Kun tuo toimii, niin sitten ratkaiset sen SSL-jutun erikseen, jotta salaus on päällä (jos jostain kumman syystä tarvitset sitä ->MIKSI?)

Kiitos, esimerkki toimi hyvin.

Selvennän vähän:

$dbhost   = 'localhost';
$dbuser   = 'mysqlkayttaja';
$dbpass   = 'mysqlsalasana';
$dbkanta  = 'pupesoft';

$palvelin = 'http://192.168.0.10/pupesoft/'; //Tämä toimii sisäverkossa

if (isset($_SERVER['SERVER_PORT']) and $_SERVER['SERVER_PORT'] == '443') {
   $palvelin = 'https://10.20.30.40/pupesoft/';  //tämä toimii netistä käsin salattuna

Toi 10.20.30.40 tulee vaihtumaan ja  siihen mietin automaagi-scriptiä päivittämään sitä automaattisesti.

Kysymykseen miksi salaus?, olettaisin, et kun pupesoft on avoimen koodin yrityksen toiminnanohjausjärjestelmä, niin netin kautta yrityksen liikkuvat tiedot olis hyvä salata?
Meikä on niin uuno viel näissä asioissa, et en nää mitään outoutta tässä mitä joku pro ehkä näkee... :)

Tha-Fox

  • Käyttäjä
  • Viestejä: 3315
  • Arch Linux && CentOS
    • Profiili
    • http://kettu.dy.fi
Vs: PHP-sivun ohjaus mysql-serveriin sisä- ja ulkoverkosta.
« Vastaus #13 : 12.11.10 - klo:19.30 »

Toi 10.20.30.40 tulee vaihtumaan ja  siihen mietin automaagi-scriptiä päivittämään sitä automaattisesti.


Haetko tässä jotain DynDNS:n kaltaista ratkaisua?

odysseus

  • Vieras
Vs: PHP-sivun ohjaus mysql-serveriin sisä- ja ulkoverkosta.
« Vastaus #14 : 13.11.10 - klo:18.35 »

Toi 10.20.30.40 tulee vaihtumaan ja  siihen mietin automaagi-scriptiä päivittämään sitä automaattisesti.


Eikö se firman homma nyt ole kuitenkin syytä laittaa kiinteän IP:n taakse, eli operaattorilta tilaat sellaisen, niin se ei vaihdu kuten PPPoE:ssä! Ei tarvitse viritellä liikoja.

Sit vain SSL-sertifikaatti koneeseen....

...ehkäpä olisi syytä muutenkin laittaa tuo hoito jonnekin hostiin dedikoidulle palvelimelle, sillä kuka tuota muuten ylläpitää??? Ei kuulosta kovin stabiililta ratkaisulta jos "kotikoneella" pyörii joku firman liiketoimintaan liittyvä (extranet/pilvi)ohjelmisto!

Avoimen lähdekoodin ohjelmisto ei taas mitenkään liity tietoturvaan. Muuten kuin siten, että se on ehkä turvallisempi kuin suljettu ratkaisu josta ei tiedä miten se on tehty.

Hetunet

  • Käyttäjä
  • Viestejä: 72
    • Profiili
Vs: PHP-sivun ohjaus mysql-serveriin sisä- ja ulkoverkosta.
« Vastaus #15 : 15.11.10 - klo:12.52 »

Toi 10.20.30.40 tulee vaihtumaan ja  siihen mietin automaagi-scriptiä päivittämään sitä automaattisesti.


Eikö se firman homma nyt ole kuitenkin syytä laittaa kiinteän IP:n taakse, eli operaattorilta tilaat sellaisen, niin se ei vaihdu kuten PPPoE:ssä! Ei tarvitse viritellä liikoja.

Sit vain SSL-sertifikaatti koneeseen....

...ehkäpä olisi syytä muutenkin laittaa tuo hoito jonnekin hostiin dedikoidulle palvelimelle, sillä kuka tuota muuten ylläpitää??? Ei kuulosta kovin stabiililta ratkaisulta jos "kotikoneella" pyörii joku firman liiketoimintaan liittyvä (extranet/pilvi)ohjelmisto!

Avoimen lähdekoodin ohjelmisto ei taas mitenkään liity tietoturvaan. Muuten kuin siten, että se on ehkä turvallisempi kuin suljettu ratkaisu josta ei tiedä miten se on tehty.

Harjottelen ja opettelen, joitakin pohdin vaan yleisestä mielenkiinnosta.

Kuinka olisi muuten paras tapa+ohjelmistot ruveta lähestymään suurta PHP+MySql sovellusta? (Pupesoft n. 400 php- ja 400 inc-fileä)

osa

  • Käyttäjä
  • Viestejä: 23
    • Profiili
    • Open Source Academy - Avoimen Lähdekoodin Akatemia
Vs: PHP-sivun ohjaus mysql-serveriin sisä- ja ulkoverkosta.
« Vastaus #16 : 15.11.10 - klo:19.06 »

Toi 10.20.30.40 tulee vaihtumaan ja  siihen mietin automaagi-scriptiä päivittämään sitä automaattisesti.


Eikö se firman homma nyt ole kuitenkin syytä laittaa kiinteän IP:n taakse, eli operaattorilta tilaat sellaisen, niin se ei vaihdu kuten PPPoE:ssä! Ei tarvitse viritellä liikoja.

Sit vain SSL-sertifikaatti koneeseen....

...ehkäpä olisi syytä muutenkin laittaa tuo hoito jonnekin hostiin dedikoidulle palvelimelle, sillä kuka tuota muuten ylläpitää??? Ei kuulosta kovin stabiililta ratkaisulta jos "kotikoneella" pyörii joku firman liiketoimintaan liittyvä (extranet/pilvi)ohjelmisto!

Avoimen lähdekoodin ohjelmisto ei taas mitenkään liity tietoturvaan. Muuten kuin siten, että se on ehkä turvallisempi kuin suljettu ratkaisu josta ei tiedä miten se on tehty.

Harjottelen ja opettelen, joitakin pohdin vaan yleisestä mielenkiinnosta.

Kuinka olisi muuten paras tapa+ohjelmistot ruveta lähestymään suurta PHP+MySql sovellusta? (Pupesoft n. 400 php- ja 400 inc-fileä)

odysseus on oikeassa! on syytä opiskella nuo asiat ensin ennenkuin tehdään yrityksen tietojärjestelmää mutu-tuntumalta.

suosittelen kurssia meillä OSA:ssa ja sitten lähestymistä siten, että tehdään ensin projektisuunnitelma sen pohjalta mitä nyt on, mitä jatkossa tarvitaan nopeasti ja mikä on lopullinen tahtotila. samalla selvitetään budjetti ja sitten sen mukaan päätetään hallitusti mitä tehdään, millä tehdään, kuka tekee ja milloin tekee.

hätäilemällä saadaan aikaiseksi vain ongelmia.
Open Source Academy - Avoimen Lähdekoodin Akatemia
http://www.osacademy.org
Koko Maailma on Avoin!