IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 PHP Discussion :

Mise en ligne projet Symfony sur serveur privé


Sujet :

PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2019
    Messages : 15
    Points : 77
    Points
    77
    Par défaut Mise en ligne projet Symfony sur serveur privé
    Bonjour à tous,
    J'ai développé une petite application Symfony en suivant plusieurs tutoriels.

    Mon entreprise, utilise déjà plusieurs petites applications que j'ai développé en PHP.
    Mais, les projets devenant de plus en plus gros et complexes, j'ai voulu utiliser un framework pour me faire gagner du temps (à terme, parce que pour l'instant j'en ais perdu pas mal).
    Au moment d'entrer en production, je ne trouve rien dans les méandres d'Internet qui semble pouvoir m'aider.

    Nous possédons un serveur Web sous Windows serveur 2013 qui utilise apache, php 7.4 et mysql.

    Mon projet a été développé en utilisant le serveur symfony et accessible sous https://localhost:8000
    Mais en production, il doit être joignable sous https://<adresse_ip_du_serveur/mon_application/

    J'ai bien tenté le .htaccess suivant à la racine de mon projet :
    Code apache : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <IfModule mod_rewrite.c>
     
        RewriteEngine On
     
        # remove "www" from URI
        RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
        RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]
     
        # force HTTPS
        RewriteCond %{HTTPS} !on
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
     
        # use public as starting point
        RewriteRule ^$ public/ [L]
        RewriteRule (.*) public/$1 [L]
     
    </IfModule>

    Mais, j'ai un message d'erreur :
    No route found for "GET https://<adresse_ip_du_serveur/mon_application/" (from "https://<adresse_ip_du_serveur/")
    Si j'utilise l'url https://<adresse_ip_du_serveur/mon_application/public , j'ai ma page d'accueil sans css et aucun lien ne fonctionne...

    Est-ce qu'une âme charitable pourrait m'aiguiller ?

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Bonsoir,
    Vous devriez regarder du côté des virtualHost de Apache.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2019
    Messages : 15
    Points : 77
    Points
    77
    Par défaut virtualhost interdit
    Citation Envoyé par MaitrePylos Voir le message
    Bonsoir,
    Vous devriez regarder du côté des virtualHost de Apache.
    Merci pour votre aide.
    Mais j'ai vu avec mon administrateur et, pour des raisons de sécurité, à ce qu'il parait, les virtualhost me sont interdits...

    -------------

    Toutefois, j'ai avancé un peu, avec le .htaccess suivant :
    Code apache : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /ulule/
     
    RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
    RewriteRule ^ %1 [L,NE,R=302]
     
    RewriteRule ^((?!public/).*)$ public/$1 [L,NC]
    </IfModule>

    Symfony se lance puisque j'ai un de ses gros message d'erreur - erreur 404.

    Nom : ulule garage (404 Not Found).png
Affichages : 684
Taille : 111,8 Ko

    Et là, je bloque...

    Je ne comprends pas, on dirait que les fichiers sont inaccessibles alors que les chemins sont bons...

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2019
    Messages : 15
    Points : 77
    Points
    77
    Par défaut
    En résumé,
    J'ai ce .htaccess à la racine de mon projet dans le dossier .../www/html/ulule/
    Code apache : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /ulule/
     
    RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
    RewriteRule ^ %1 [L,NE,R=302]
     
    RewriteRule ^((?!public/).*)$ public/$1 [L,NC]
    </IfModule>

    Et, celui-ci, généré par symfony/apache-pack dans le dossier .../www/html/ulule/public/
    Code apache : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    RewriteEngine On
     
        # Determine the RewriteBase automatically and set it as environment variable.
        # If you are using Apache aliases to do mass virtual hosting or installed the
        # project in a subdirectory, the base path will be prepended to allow proper
        # resolution of the index.php file and to redirect to the correct URI. It will
        # work in environments without path prefix as well, providing a safe, one-size
        # fits all solution. But as you do not need it in this case, you can comment
        # the following 2 lines to eliminate the overhead.
        RewriteCond %{REQUEST_URI}::$0 ^(/.+)/(.*)::\2$
        RewriteRule .* - [E=BASE:%1]
     
        # Sets the HTTP_AUTHORIZATION header removed by Apache
        RewriteCond %{HTTP:Authorization} .+
        RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]
     
        # Redirect to URI without front controller to prevent duplicate content
        # (with and without `/index.php`). Only do this redirect on the initial
        # rewrite by Apache and not on subsequent cycles. Otherwise we would get an
        # endless redirect loop (request -> rewrite to front controller ->
        # redirect -> request -> ...).
        # So in case you get a "too many redirects" error or you always get redirected
        # to the start page because your Apache does not expose the REDIRECT_STATUS
        # environment variable, you have 2 choices:
        # - disable this feature by commenting the following 2 lines or
        # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the
        #   following RewriteCond (best solution)
        RewriteCond %{ENV:REDIRECT_STATUS} =""
        RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
     
        # If the requested filename exists, simply serve it.
        # We only want to let Apache serve files and not directories.
        # Rewrite all other queries to the front controller.
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ %{ENV:BASE}/index.php [L]

    Mais quand je tente d'accéder à mon application via http://<ip_du_serveur>/ulule/, j'ai le message :
    No route found for "GET http://<ip_du_serveur>/ulule/"
    Je retourne Google dans tous les sens depuis 3 jours et je ne comprends pas mon erreur.
    Personne n'a-t-il installé un appli développée en symfony sur un serveur pro, coupé d'Internet ?

    Pour déployer mon application, je fais simplement un copier/coller de mon dossier de développement sur le serveur de prod.
    Est-ce ma méthode de déploiement qui est faussée ?

    A savoir également, que si j'accède à http://<ip_du_serveur>/ulule/public
    J'ai uniquement le html de ma page d'accueil qui s'affcihe, sans css, ni javascript, ni les assets.

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Mais j'ai vu avec mon administrateur et, pour des raisons de sécurité, à ce qu'il parait, les virtualhost me sont interdits...
    Peut-être devriez-vous envisager de travailler avec des personnes compétentes !!!!

    Sinon, avez-vous tenter http://<ip_du_serveur>/index.php/ulule/ ?

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2019
    Messages : 15
    Points : 77
    Points
    77
    Par défaut Tout est résolu
    A force d'acharnement et de discussions, j'ai réussi à faire fonctionner mon installation.
    Tout fonctionne désormais.

    Donc en résumé :

    Il m'a fallu installer webpack-encore-bundle et apache-pack

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    composer require symfony/webpack-encore-bundle
    composer require symfony/apache-pack
    npm install
    symfony console cache:clear
    Indiquer la racine du projet dans webpack.config.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .setPublicPath('/ulule/public/build')
    Modifier mes raccourcis et liens vers les images en passant en lien relatif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a class="nav-link" href="/garage">Garage</a>
    devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a class="nav-link" href="garage">Garage</a>
    Il ne me reste plus qu'à faire un petit htaccess à la racine pour renvoyer vers public.

    Par contre, ce qui est désagréable, c'est que désormais si j'utilise le serveur de développement de symfony avec un
    mon application se lance mais sans les css et js de bootstrap...

    Merci pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] hébergement projet symfony sur un serveur distant
    Par sali27 dans le forum Débuter
    Réponses: 20
    Dernier message: 01/06/2011, 20h59
  2. Réponses: 0
    Dernier message: 08/12/2010, 18h12
  3. [1.x] Déployer un projet symfony sur un serveur
    Par phoelis1 dans le forum Symfony
    Réponses: 10
    Dernier message: 27/05/2008, 19h17
  4. réglage pare-feu sur serveur privé
    Par Blaireau dans le forum Réseau
    Réponses: 3
    Dernier message: 20/04/2007, 14h25
  5. Réponses: 3
    Dernier message: 13/03/2007, 17h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo