PDA

View Full Version : Configurare WebServer con router


songoge
16-10-2009, 09:55
Dunque raga. Ho un problema e non riesco a venirne a capo.

Sto sviluppando un applicativo e ho bisogno di configurare un webserver per fare i test sul mio pc.

Sul mio pc dunque devo installare e configurare un webserver. Ho messo EasyPhp.
Il mio webserver deve utilizzare sql server come database. Ho messo sql server 2005 express (gratis). Configurato per ricevere connessioni esterne.

Inizio dunque ad elencare i problemi.
EasyPhp una volta funziona. Partiva sia Apache che Mysql (anche se non devo utilizzarlo). Adesso apache non vuole partire. Mi dice che la porta (80) è utilizzata da un'altro processo. Faccio un netstat e vedo effettivamente che è utilizzata 0.0.0.0:80. Cerco la soluzione. Forse è skype. Chiudo Skype. Nessun cambiamento. Cambio porta e metto 8080. Stesso problema. Anche qui con netstat 0.0.0.0:8080. Allora penso che sia questione di router!! Se si come risolvo???
Ps. Router Trust. OS Vista SP2. Firewall abilitati per apache,sqlserver.

Andiamo avanti.
Aggiro il problema di far partire EasyPhp. Creo una virtual machine con XP SP3. Installo EasyPhp e tutto funziona. Faccio dei test. Funziona sia la visualizzazione locale di pagine php che l'uso di database mysql. Adesso però ho la necessità di usare sql server 2005, che è residente fuori dalla virtual machine.Su php.ini abilito l'estensione per l'uso di mssql. Effettuo un phpinfo(); Tutto OK.
Effettuo un test per connettermi al database. Non funziona!
Questo il codice della pagina php per la connessione
<?php
$myServer = "79.18.xxx.xxx:1433";
$myUser = "miousername";
$myPass = "miapass";
$myDB = "miodatabase";

//connection to the database
$dbhandle = mssql_connect($myServer, $myUser, $myPass)
or die("Couldn't connect to SQL Server on $myServer");

//select a database to work with
$selected = mssql_select_db($myDB, $dbhandle)
or die("Couldn't open database $myDB");
?>
Apro IE e metto:
http://127.0.0.1/prova.php
L'errore naturalmente è sulla connessione al database
Couldn't connect to SQL Server on 79.18.xxx.xxx:1433

79.18.xxx.xxx è il mio ip publico. Quello visto esternamente dalla mia LAN.
Ho provato anche a cambiare e mettere quello assegnato dal mio router, cioè 192.168.1.10
Stesso risultato. Come faccio a connettermi al database sqlserver?

Dunque cosa devo fare?Sto impazzendo.
In parole povere. Dovevo creare un servizio webserver sul mio PC locale in modo che chiunque (sia dentro la mia LAN che fuori potessero accedere al mio database sql server)

OUTATIME
16-10-2009, 10:14
Io non capisco cosa c'entri in tutto questo il router...
Da quello che ho potutto capire, stai utilizzando solo il tuo PC e/o macchine virtuali su di esso create...
Aggiungo.... perchè nel codice php hai dovuto mettere 79.18.xxx.xxx:1433?

slowped
16-10-2009, 10:19
Faccio un netstat e vedo effettivamente che è utilizzata 0.0.0.0:80

Per vedere quali eseguibili stanno utilizzando le porte usa

netstat -b

nuovoUtente86
16-10-2009, 11:00
senza una regola di loopback non puoi fare binding sull' ip pubblico iniziando la connessione da dentro la lan.

slowped
16-10-2009, 12:58
senza una regola di loopback non puoi L'errore naturalmente è sulla connessione al database
Couldn't connect to SQL Server on 79.18.xxx.xxx:1433

Prova a dare a consultale la pagina del manuale in cui viene descritta la funzione mssql_connect

http://www.php.net/function.mssql-connect

con particolare riferimento alle "User Contributed Notes" (in fondo alla pagina): ci sono un paio di soluzioni proposte dagli utenti che hanno avuto problemi simili ai tuoi.

songoge
16-10-2009, 13:01
Io non capisco cosa c'entri in tutto questo il router...
Da quello che ho potutto capire, stai utilizzando solo il tuo PC e/o macchine virtuali su di esso create...
Aggiungo.... perchè nel codice php hai dovuto mettere 79.18.xxx.xxx:1433?

Si. Fino ad ora ho provato tutto su uno stesso PC(quindi stesso ip).
Poco fa, grazie ad un mio amico ho fatto una prova.
Sul suo pc ho installato easyphp,configuarato in modo che posso utilizzare le librerie di sql server.
Sul mio pc ho soltanto il database sql server.
Perfetto. Chiamando il mio amico nel suo browser http://127.0.0.1/prova.php riesce a connettersi al mio database.
Ps. prova.php è quel codice di prima. e l'ip che chiedi tu è il mio ip publico. Altrimenti come fa a connettersi il mio amico al mio database?? :D ;)
Qui deduco che il database è settato bene. Accetta connessioni remote.
Anche EasyPhp è settato alla perfezione.

Se voglio adesso provare tutto sul mio pc? Senza dover disturbare il mio amico? Ecco perchè ho messo il post qui. Non so come configurare il mio router.

senza una regola di loopback non puoi fare binding sull' ip pubblico iniziando la connessione da dentro la lan.

E qui giungiamo al dunque. capisco cosa intendi per regola di loopback ecc. ma in parole povere cosa devo fare? Guide, tuturial. Non è che sia tanto pratico al networking.
Grazie in anticipo.
Ps. Anche libri da comprare vanno bene. Anzi, un buon libro sulle reti ecc non ne ho mai letti, e quindi mi farebbe bene :D

songoge
16-10-2009, 13:08
Per vedere quali eseguibili stanno utilizzando le porte usa

netstat -b

Non sapavo del parametro -b
Cmq non risolvo il problema
mi dice :
C:\>netstat -a -b

Connessioni attive

Proto Indirizzo locale Indirizzo esterno Stato
TCP 0.0.0.0:80 PC-MioPC:0 LISTENING
Impossibile ottenere informazioni sulla proprietà
....ecc

Che fortuna direi. :D
Per gli altri ottengo risulati giusti. Ad es. vedo cosa fa firefox e su cosa è collegato

slowped
16-10-2009, 13:19
Proto Indirizzo locale Indirizzo esterno Stato
TCP 0.0.0.0:80 PC-MioPC:0 LISTENING
Impossibile ottenere informazioni sulla proprietà
....ecc


Uhmmmm.... c'è qualcosa in ascolto sulla porta 80 ma il sistema non riesce a ottenere informazioni sul processo.

Quando hai dato il comando eri amministratore del PC? In caso contrario entra come amministratore e riprova.

Altra cosa che ti consiglio di fare è di collegarti con un browser sulla porta 80 del tuo pc, in modo da vedere se risponde.

songoge
16-10-2009, 13:25
Uhmmmm.... c'è qualcosa in ascolto sulla porta 80 ma il sistema non riesce a ottenere informazioni sul processo.

Quando hai dato il comando eri amministratore del PC? In caso contrario entra come amministratore e riprova.

Altra cosa che ti consiglio di fare è di collegarti con un browser sulla porta 80 del tuo pc, in modo da vedere se risponde.

Intendi se ho avviato il prompt come amministratore?Si. almeno l'intestazione dice questo: Amministratore C:\windows\system32\cmd.exe

Facendo un http:\\127.0.0.1:80 sul mio browser spunta l'hello world di iis 7.
Non ricordavo di averlo messo :eek: :muro:

Come lo disattivo?

slowped
16-10-2009, 13:28
Se voglio adesso provare tutto sul mio pc? Senza dover disturbare il mio amico? Ecco perchè ho messo il post qui. Non so come configurare il mio router.

Non hai bisogno di configurare il router se accedi solo in locale. Anzi, se lavori con il browser sulla macchina su cui sono installati il server web e MS sql server, potresti addirittura staccare il cavo di rete.

songoge
16-10-2009, 13:30
Come non detto. Ho trovato Gestione IIS

slowped
16-10-2009, 13:32
Intendi se ho avviato il prompt come amministratore?Si. almeno l'intestazione dice questo: Amministratore

Accertati che l'utente Amministratore abbia realmente i privilegi di amministratore.

Facendo un http:\\127.0.0.1:80 sul mio browser spunta l'hello world di iis 7.
Non ricordavo di averlo messo :eek: :muro:

Non ho parole...

Come lo disattivo?

Almeno questo cerca di scoprirlo da solo ;)

songoge
16-10-2009, 13:34
Non hai bisogno di configurare il router se accedi solo in locale. Anzi, se lavori con il browser sulla macchina su cui sono installati il server web e MS sql server, potresti addirittura staccare il cavo di rete.

Grazie questo lo so :D .
Ma io voglio forzarlo in modo che posso utilizzarlo mettendo nella stringa di connessione il mio ip pubblico. In questo modo posso accedere io e anche altri al database, utilizzando lo stesso file.

Oppure faccio di forza bruta. Metto un if .Se non vede l'ip publico metto quello locale.
Adesso provo.

songoge
16-10-2009, 13:35
Accertati che l'utente Amministratore abbia realmente i privilegi di amministratore.



Non ho parole...



Almeno questo cerca di scoprirlo da solo ;)

Si. si. Ho visto.
Che vergogna. Ma quando l'ho messo :doh: :cry:
E' da ieri che non mi davo pace.

slowped
16-10-2009, 13:46
Ma io voglio forzarlo in modo che posso utilizzarlo mettendo nella stringa di connessione il mio ip pubblico. In questo modo posso accedere io e anche altri al database, utilizzando lo stesso file.

Scusa ma mi sfugge qualcosa. Gli altri non accedono direttamente al tuo database. Essi accedono al server web che poi comunica con il database. Se le cose stanno così, l'importante è che sia garantito l'accesso al server web tramite l'indirizzo pubblico.

OUTATIME
16-10-2009, 13:58
Scusa ma mi sfugge qualcosa. Gli altri non accedono direttamente al tuo database. Essi accedono al server web che poi comunica con il database. Se le cose stanno così, l'importante è che sia garantito l'accesso al server web tramite l'indirizzo pubblico.
Anche perchè dubito che tu abbia un IP pubblico statico....

songoge
16-10-2009, 14:01
Scusa ma mi sfugge qualcosa. Gli altri non accedono direttamente al tuo database. Essi accedono al server web che poi comunica con il database. Se le cose stanno così, l'importante è che sia garantito l'accesso al server web tramite l'indirizzo pubblico.

Si. funziona così.
Però se metto webserver e database nello stesso pc (solo per prova) Non funziona la stringa di connessione con ip publico (accedendo dal medesimo pc)

Se separo allova va bene.

L'obbiettivo finale è averli separati.
Compro uno spazio web in cui posso usare php con le librerie per accedere a sql server. Il database lo lascio sul mio pc sempre connesso.

Il problema è fare i test con tutto su una stessa macchina.
Altrimenti se conoscete spazi web gratis che fanno al caso mio.
Altervista non mi permette di modificare php.ini e quindi caricare la mia dll.
Al momento non trovo nulla di gratis. Tutto a pagamento. No grazie :D per ora

slowped
16-10-2009, 14:11
Il problema è fare i test con tutto su una stessa macchina.


Non vedo dov'è il problema. Durante la fase di sviluppo usi la stringa di connessione con il tuo ip intranet. Quando il prodotto è pronto allora cambi la stringa di connessione e ci metti quello pubblico.

A questo proposito, se non hai un indirizzo IP pubblico statico, devi usare qualche servizio tipo Dyndns o no-ip. ALtrimenti ogni volta che cambia il tuo ip pubblico devi editare la stringa di connessione.