2
votes

Déployer une application angulaire dans le dossier Apache

J'ai un serveur Apache qui exécute l'application Angular 6 sous /var/www/html/ . J'ai essayé d'ajouter un dossier /var/www/html/admin/ mais j'obtiens des erreurs Échec du chargement de la ressource: le serveur a répondu avec un statut de 404 (non trouvé) . Savez-vous quelle configuration je dois implémenter?

Ma configuration apache actuelle est:

<Directory /var/www/html/admin>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>


3 commentaires

Définissez-vous le Href de base correct dans votre fichier angular index.html?


@MikeOne et @sancelot ont correctement diagnostiqué le problème. Par défaut, DocumentRoot est défini sur / var / www / html , et comme vous utilisez le répertoire admin , vous devriez avoir utilisé la référence de base comme '/ admin' au lieu de '/' par défaut au moment de la compilation. Vous pouvez le modifier ultérieurement dans index.html généré si vous le souhaitez. @DmitryK a utilisé DocumentRoot comme le chemin du répertoire pour héberger le code Angular, donc la référence de base par défaut fonctionne bien.


J'ai écrit un article sur le même angular-6-deploy-on-apache-server-by-resolution-404, j'espère que cela vous aidera: joeljoseph.net/...


4 Réponses :


3
votes

Voici mon exemple de travail:

<VirtualHost fancy.local:80>
    DocumentRoot "/abs/path/to/fancy/dist/browser"
    ServerName fancy.local
    <Directory "/abs/path/to/fancy/dist/browser">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

dist / browser est une source générée avec index.html


1 commentaires

En remarque, puisque vous n'hébergez que du code Angular, les Options ne doivent pas être définies avec «Index», «FollowSymLinks», «Comprend» et «ExecCGI» pour des raisons de sécurité.



2
votes

Votre projet angulaire (s base href) est faux. lorsque vous déployez votre application, spécifiez base-href sur la cmdline:

ng build --prod --base-href ./

pour référence https://angular.io/guide/deployment


0 commentaires

2
votes

Vous devez ajouter des règles de réécriture à .htaccess. Sinon, les requêtes vers vos routes ne seront pas redirigées vers index.html pour le rendu. Regardez le lien suivant pour Déploiement d'Apache: https://angular.io/guide/deployment

RewriteEngine On
    # If an existing asset or directory is requested go to it as it is
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
    RewriteRule ^ - [L]
    # If the requested resource doesn't exist, use index.html
RewriteRule ^ /index.html


0 commentaires

1
votes

Un de mes projets qui était sur le serveur tomcat , j'ai fait ce qui suit:

  1. Créez un nouveau dossier dans src / WEB-INF .
  2. Dans le dossier WEB-INF , créez web.xml avec le code ci-dessous.
"assets": [
              {
                "input": "src/assets",
                "output": "/assets/"
              },
              "src/favicon.ico",
              "src/WEB-INF"
    ],
  1. Mettez à jour votre section des ressources angular.json build>, lorsque vous construisez votre projet, il sera copié dans le dossier final ./dist .
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <error-page>
        <error-code>404</error-code>
        <location>/</location>
    </error-page>
</web-app>

  1. Mettez à jour votre fichier index.html

J'espère que cela aidera quelqu'un.


0 commentaires