Serveur apache en local

j’ai créé un site en local( xxxx.html) que je peux contacter par mon localhost (créé par Directory /opt/www/htdocs) OK jusque là! mais si je veux l’essayer par l’@ ip de mon PC, suivi de xxx.html, pas moyen d’y arriver:
"Firefox ne peut établir de connexion avec le serveur à l’adresse indiquée.
Le site est peut-être temporairement indisponible ou surchargé. Réessayez plus
tard ;
Si vous n’arrivez à naviguer sur aucun site, vérifiez la connexion
au réseau de votre ordinateur ;
Si votre ordinateur ou votre réseau est protégé par un pare-feu ou un proxy,
assurez-vous que Firefox est autorisé à accéder au Web "

Pourtant tout semble fait dans les normes requises (Directory sur apache2.conf rempli, virtual hosts complété , " serveurctl reload apache2" fait …
en plus ça a connecté il y a 3 jours!!
depuis je n’ai rajouté que quelques modifs de texte dans mon fichier xxxx.html ;
Un mystère à éclaicir?
merci

Bonjour,

Déjà celui de connaître ta config Apache !
Sinon, comment veux-tu qu’on puisse t’aider ?

On peut commencer par demander de vérifier si apache écoute sur l’adresse et le port considérés (avec ss ou netstat -tnlp). Si ce n’est pas le cas, il sera temps de s’intéresser à sa configuration.

J’aurais fait l’inverse :

  • vérifier la config
  • vérifier « l’écoute »

:stuck_out_tongue:

mais les deux se valent :wink:

Je suis une feignasse, et vérifier le port en écoute est plus rapide qu’éplucher une configuration.

2 J'aime

salut, il semble dans « ss » que l’@ip de mon PC connecte bien avec des sites autres que le PC émetteur de mon exemple: ce dernier a lors de la tentative de connexionà mon adresse ip/xxxx.html un statut dans « ss » indiqué à SYN-SENT (what is it ?) au lieu de ESTAB !
quant à ma config, voilà le plus intéressant dans apache2.conf (extrait):

# Include module configuration:
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

# Include list of ports to listen on
Include ports.conf


# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /opt/www>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

#<Directory /srv/>
#       Options Indexes FollowSymLinks
#       AllowOverride None
#       Require all granted
#</Directory>

pour 01-luminaire.conf, on a (extrait) :

 # However, you must set it for any further virtual host explicitly.
        ServerName luminaire.html
               ServerAdmin webmaster@localhost
        DocumentRoot /opt/www/htdocs




        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        <Directory /opt/www/htdocs>
           Options All
           AllowOverride None
        </Directory>

voilà les billes !

PC émetteur ? Tu essaies d’accéder au site depuis le PC qui fait tourner apache ou depuis un autre PC ? Situé où ?
Il faut regarder les ports en écoute (listen, d’où les options -tnlp mentionnées) sur le serveur.

le PC émetteur est un autre PC, mais connecté à un port du même hub (live box); voici la sortie de
ss -tnlp
sur mon PC récepteur (serveur Apache):

root@magma:/home/ordi# ss -tnlp
State           Recv-Q          Send-Q                   Local Address:Port                    Peer Address:Port          Process          
LISTEN          0               511                                  *:80                                 *:*              users:(("apache2",pid=1829,fd=4),("apache2",pid=665,fd=4),("apache2",pid=664,fd=4),("apache2",pid=663,fd=4),("apache2",pid=662,fd=4),("apache2",pid=661,fd=4),("apache2",pid=644,fd=4))

donc il semble bien que la réception n’indique aucun signe !

apache écoute le port 80 sur toutes les adresses IP de la machine, c’est un bon début.

telnet adresse.ip.du.serveur 80

depuis le serveur ou depuis le client devrait se connecter, ensuite tu peux taper

GET / HTTP/1.0

suivi de plusieurs appuis sur la touche « entrée » et la réponse devrait s’afficher.
Si ce n’est pas le cas, vérifier l’adresse IP, puis les règles de firewall si présentes.

heu, heu…je me trouve piteux: en recopiant l’adresse ip du PC serveur j’ai interverti un chiffre (au lieu de 192 j’avais écrit 198 …)
et donc tout fonctionne!
Je demande platement pardon à vous tous qui vous êtes penché sur le pb, et à qui j’ai fait perdre du temps !
(c’est donc pour çà que la connexion marchait il y a 3/4 jours: le chiffre ip était le bon à ce moment là)
merci et mille excuses
Patrick

Tu peux définir un nom d’hôte dans /etc/hosts du poste client pour éviter de devoir taper une adresse IP dans le navigateur.

1 J'aime

OK et merci

hello, maintenant que le pb de connexion entre 2 PC du même réseau(derrière live-box) est résolu par les sous-adresses ( 192.168.1.x) se pose le pb de connexion par un PC extérieur à tout ce réseau : en clair, j’ai pu récupérer l’@ de la live-box, mais en la tapant de l’extérieur j’ arrive sur cette live-box, mais après? comment taper vers le PC connecté à la live-box? faut-il rajouter un autre nombre à l’@ live-box ?
quelques tuyaux ? merci

Il faut définir une redirection de port (NAT) vers le serveur sur la box.
Ne pas faire ça avec un serveur insuffisamment sécurisé.

Hello,

pour rendre accessible un PC de ton réseau interne pour le réseau externe (internet), tu peux créer un NAT (network address translation) sur ta box.
Si ton serveur web a l’IP 192.168.1.40, et ta box l’adresse IP externe 1.2.3.4, tu peux faire une redirection des ports 80 et 443 vers les ports 80 et 443 de ton serveur web, ainsi http://1.2.3.4:80 sera « redirigé » vers http://192.168.1.40:80
Tu peux aussi utiliser des ports externes plus exotiques, par exemple 123456 redirige vers le port 80 de ton serveur web, et dans ce cas depuis l’extérieur il te faudra taper http://1.2.3.4:123456

Pour lier un nom de domaine à l’adresse IP de ta box, tu peux aussi utiliser un service de DNS dynamique (DynDNS) gratuit et supporté par ta livebox, ce qui te permettra de taper par exemple http://mon_exemple.dyndns.com:80 au lieu de http://1.2.3.4:80 (surtout que les box particuliers changent de temps en temps d’adresses IP externes)

Par contre, assure-toi que ton serveur apache est sécurisé (tu pourras trouver des tas de tutos et articles sur le sujet, sur le web) et à jour des correctifs de sécurité, car il deviendra accessible à l’Internet.

impossible de rentrer tel quel l’@ip de la box suivi de:80 aucun effet!je suis donc allé me perdre dans les commandes vi de: ip a, /etc/network/interfaces, /etc/resolv.conf… rien ne progresse dans mes recherches, je dois certainement oublier des étapes

As-tu configuré ta box avec les règles NAT comme on te l’a expliqué ? Si l’adresse interne fonctionne de ton LAN, l’adresse externe va fonctionner avec les règles NAT.
Attention si tu veux utiliser l’@ externe à partir d’une autre machine sur ton LAN : certaines box (orange par exemple) ne gèrent pas le NAT hairpining.

dans la livebox, l’@ip du PCoù se trouve mon localhost/nom site.html a bien port 80 valide, mais l’adressage http://adresse box :80 ne donne rien…
la procédure me dépasse !

Tu peux fourni une capture d’écran de ta règle de NAT mise en place sur l’interface de la Livebox ?
Accessoirement la configuration de ton vhost ?

Si tu ne configure pas ton vhost pour répondre sur l’ip tu ne parviendra pas à mettre en place la redirection PAT vers le port 80 de ton serveur ET avoir accès à ton site.

hello,
voici les captures demandées:
Capture d’écran du 2022-04-07 14-27-06

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        ServerName luminaire.html
        #ServerAlias 198.168.1.12
        ServerAdmin webmaster@localhost
        DocumentRoot /opt/www/htdocs




	# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
	# error, crit, alert, emerg.
	# It is also possible to configure the loglevel for particular
	# modules, e.g.
	#LogLevel info ssl:warn

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
	<Directory /opt/www/htdocs>
	   Options All
	   AllowOverride None
	</Directory>
	# For most configuration files from conf-available/, which are
	# enabled or disabled at a global level, it is possible to
	# include a line for only one particular virtual host. For example the
	# following line enables the CGI configuration for this host only
	# after it has been globally disabled with "a2disconf".
	#Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sts=4 sr noet