web-dev-qa-db-ja.com

Angular 2をApacheサーバーにデプロイ

Angular 2アプリケーションをApacheサーバーにデプロイします。 this および this しかし、どれも機能していません。サーバーにnpmngがインストールされています。

一言で言えば、ここで私がやったことです:

  1. サーバー上の完全なプロジェクトリポジトリを複製しました。
  2. npm installを使用してインストールされた依存関係。
  3. ng build --prodコマンドを使用し、distディレクトリを作成しました。
  4. Apacheルートを/var/www/html/distディレクトリに変更しました。
  5. mod_rewriteを有効にし、Apacheを再起動し、distディレクトリにこの.htaccessを追加しました。

<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L] </IfModule>

しかし、私のホームページdomain.comのみが機能し、domain.com/logindomain.com/registerなどの他のページは404エラーをスローします。 domain.com/index.html/loginでも機能しません。

アプリケーションは、ng serveを使用して開発しているローカルシステムで正常に動作します。何が欠けていますか?

11
Kanav

/etc/Apache2/sites-enabled/000-default.confファイル。これを追加してApacheを再起動すると、ウェブサイトは正常に動作します。

<Directory "/var/www/html/dist">
  AllowOverride All
</Directory>
9
Kanav

ルートフォルダーに.htaccessファイルを作成し、これを.htaccessに貼り付けます

 <IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
</IfModule>
11
Sumit Jaiswal

1)index.htmlファイルのベースタグを変更する

<base href="./">

2)プロジェクトのビルド:

ng build --prod --base-href /myproject/

3) "/ usr/local/Apache2/htdocs/myproject /"にdistファイルを追加します

4)Apache Server 2.4(httpd)の場合:ファイル:/usr/local/Apache2/conf/httpd.conf setup "FallbackResource"

<Directory "/usr/local/Apache2/htdocs">
   ...
   FallbackResource /myproject/index.html
</Directory>

完全なファイル「/usr/local/Apache2/conf/httpd.conf」:

ServerRoot "/usr/local/Apache2"

Listen 80

LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_Host_module modules/mod_authz_Host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
LoadModule filter_module modules/mod_filter.so
LoadModule mime_module modules/mod_mime.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule env_module modules/mod_env.so
LoadModule headers_module modules/mod_headers.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so

LoadModule unixd_module modules/mod_unixd.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so

<IfModule !mpm_prefork_module>
    #LoadModule cgid_module modules/mod_cgid.so
</IfModule>
<IfModule mpm_prefork_module>
    #LoadModule cgi_module modules/mod_cgi.so
</IfModule>

LoadModule dir_module modules/mod_dir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so

<IfModule unixd_module>
User daemon
Group daemon

</IfModule>
ServerAdmin [email protected]

<Directory />
    AllowOverride none
    Require all denied
</Directory>

DocumentRoot "/usr/local/Apache2/htdocs"
<Directory "/usr/local/Apache2/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
    FallbackResource /myproject/index.html
</Directory>

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

<Files ".ht*">
    Require all denied
</Files>

ErrorLog /proc/self/fd/2

LogLevel warn

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    CustomLog /proc/self/fd/1 common

</IfModule>

<IfModule alias_module>

    ScriptAlias /cgi-bin/ "/usr/local/Apache2/cgi-bin/"

</IfModule>

<IfModule cgid_module>
</IfModule>


<Directory "/usr/local/Apache2/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

<IfModule headers_module>
    RequestHeader unset Proxy early
</IfModule>

<IfModule mime_module>
    TypesConfig conf/mime.types

    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz

</IfModule>

<IfModule proxy_html_module>
Include conf/extra/proxy-html.conf
</IfModule>

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
5
rafambbr

Apacheの場合、リクエストをindex.htmlにリダイレクトするには、ルートに.htaccessファイルが必要です。 distフォルダー(index.htmlと同じレベル)に.htaccessを作成します。これがアプリのパブリックルートであると想定し、これを.htaccessファイルに貼り付けます。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# not rewrite css, js and images
RewriteCond %{REQUEST_URI} !\.(?:css|js|map|jpe?g|gif|png)$ [NC]
RewriteRule ^(.*)$ /index.html?path=$1 [NC,L,QSA]

現在、リクエストするパスに関係なく、Apacheは実際の既存ファイル(RewriteCond%{REQUEST_FILENAME}!-f)へのリクエストとcss、jsなどへのリクエスト(RewriteCond%{REQUEST_URI }!。(?: css | js | map | jpe?g | gif | png)$)-実際にそれらが必要なため、除外する必要がありました。また、これを機能させるには、Apacheのmod_rewrite拡張機能を有効にする必要があります。ほとんどの場合、有効になっています。そうでない場合は、ホスティングプロバイダーにお問い合わせください

3
  1. Index.htmlファイルのベースタグを変更する

    <base href="./">

  2. その後ビルドを作成する

    ng build --prod

  3. これで、新しいフォルダーdistができました。今すぐdistフォルダーをデプロイします。動作するはずです。

3
krunal shah

Index.htmlファイルのベースタグを変更する

実行:

ng build --prod -bh "http://example.net"
1
Fernix

後にdistディレクトリでindex.htmlを開きます

ng build --prod

チャンの基本要素をサイトのDNS名に追加します。たとえば、ローカルのApacheサーバーの場合は、

<base href="/">

<base href="//localhost/angular2/ng2-cli/dist/">
0
Mohannd