Bonjour a tous,
C'est la première fois que je lance un sujet. Veuillez m'excuser si je fais mal certaines choses.
J'ai donc un vps chez ovh avec ubuntu. A l'aide de divers tutoriel, j'ai configuré apache2 pour pouvoir faire tourner deux applications nodejs. j'ai utilisé mod_proxy mod_proxy_http pour que mes applications tournent sur un port différent de 80. j'ai ajouté dans la configuration de mon site dans sites-available la directive DirectoryIndex index.js (car apache2 cherchait index.html. forcement il ne le trouvait pas).
Maintentant, lorsque je tape l'url de mon site, au lieu d'avoir mon site, le navigateur m'affiche le code source de mon fichier index.js. Je précise que mon appli est lancé par pm2.
qu'ai-je oublié?
Merci.
Hum normalement dans votre situation apache ne sert que de proxy.
Par conséquent vous ne devez pas pointer sur le dossier de votre appli mais sur le port de l'appli.
Par conséquent si vous avez du texte qui s'affiche il faut voir la config côté nodejs..
au cas où cela peut aider, que mon appli soit lancé par pm2 ou pas, cela ne change rien. le code source s'affiche. C'est comme si le serveur n'exécutait pas le fichier et ne faisait que le lire. Pourtant au niveau accessibilité (chmod) le fichier est bien executable (le x est bien présent à la fin sous la commande: ls -la).
Je pense que si le soucis ce trouvait sur nodejs, le fichier s'executerait mais une erreur de script serait renvoyé par le navigateur. non?
Normalement votre appli doit tourner sur un autre port.
Vous avez essayé de vous connecter à ce port avec votre navigateur ?
C'est la première étape. Une fois que cela sera ok vous pourrez vous occuper d'apache.
si je passe par monsite.ovh:3000 le site est inaccessible pourtant le port n'est pas bloqué. Je comprend plus rien…
si je met mon site sur le port 80 à la place d'apache (je lui attribut un autre port) le site n'est pas accessible non plus. je désespère…
Faut commencer par débugger ça déjà ![]()
si je lance l'appli en ligne de commande "node index.js" et que je tape comme url monsite.ovh:3000 alors ça marche. si j'essaye juste avec monsite.ovh (donc port 80) il affiche le code source. je précise que dans le error.log d'apache il n'y a rien. pas d'erreur pour apache
c'est quoi la config du vhost apache ?
J'ai suivi des config sur des tutos
ServerName monsite.ovh
ServerAdmin monmail
ServerAlias www.monsite.ovh
DocumentRoot /var/www/monsite.ovh (je mis un lien vers le dossier)
DirectoryIndex index.js
Options -Indexes +FollowSymLinks
AllowOverride all
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
Require all granted
ProxyPass http://127.0.0.1:3000
ProxyPassReverse http://127.0.0.1:3000
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
bonjour,
si je passe par monsite.ovh:3000 le site fonctionne.
si je passe par monsite.ovh, le code source est affiché.
quelqu'un a une idée svp? je désespère sérieusement
hum strange, déjà il ne faudrait pas pointer dans le dossier du site mais dans un dossier vide / bidon.
Ensuite sur une config toute simple en proxy j'ai ça perso :
DocumentRoot 'un dossier vide ça le fait bien'
ServerName 'nom du site'
ServerAdmin 'un mail'
CustomLog /var/log/apache2/access.log combined
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://localhost:19999/
ProxyPassReverse / http://localhost:19999/
La grosse différence semble être que j'ai un / après le ProxyPass et le ProxyPassReverse…
le problème est enfin résolue. j'ai fais une grosse erreur de débutant. mais bon c'est ce que je suis.
le problème était dans le virtualhost. au niveau du proxy_pass. j'avais mis la Location au niveau du dossier dans lequel se trouve l'appli. alors qu'il fallait mettre juste "/" après proxy_pass. ce qui donne au final:
proxy_pass / http:// 127.0.0.1:3000/.
et si ça peut servir à certains débutant comme moi, le / à la fin est tout aussi important. Dans certain tuto il n'y est pas. mais si on l'oublie, faut fichier type css et autre ne seront pas chargés. vous aurez une erreur proxy 502.
voilà. merci Sich