在Linux服务器上部署Angular 5应用程序

3

我是新手,想在Linux上部署Angular应用程序,之前我在IIS上做过这个,很简单。我有一个Linux服务器,通过Putty访问。我想在这个服务器上部署我的Angular 5应用程序。目前为止,我已经执行了以下步骤:

  1. 运行ng build --prod
  2. 通过pscp将dist文件夹中的文件复制到Linux服务器上的某个文件夹中

现在,当我尝试像http://hostname/folderPath/index.html这样访问该文件夹时,什么也没有显示出来。我知道我错过了一些步骤,请有经验的人帮忙指导如何部署应用程序。


您有任何教程或指南链接吗? - Arokia Lijas
3个回答

1
根据我们的讨论,您说您还没有设置URL重写规则。
根据您用来托管应用程序的工具不同,您需要设置URL重写规则。
请参阅官方文档
对于Linux服务器:
Apache:
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

NGinx:

try_files $uri $uri/ /index.html;

明天我会尝试并告诉你。 - Gagan Jaura
我应该在哪里编写这些规则? - Gagan Jaura

1

只需要从index.html中删除base标签即可。

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Angular App</title>
<base href="/">
Some more code
Don't do anything to this

删除后,您的代码将会像这样

    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <title>Angular App</title>
    Some more code
    Don't do anything to this


我已经移除了它,但是没有运气 :( - Gagan Jaura
控制台没有错误。浏览器显示页面无法显示。 - Gagan Jaura
1
你不应该删除基础路径... @GaganJaura,由于你的应用程序位于不同的文件夹路径中,你应该使用<base href="/folderPath"> - penleychan
@GaganJaura,你好奇地设置了URL重写吗? - penleychan
如果您删除基础标签,那也没关系,因为HTML默认会从包含HTML文件的当前目录开始加载资产。 - nitishk72
显示剩余3条评论

0

不要删除 "base href",否则它将无法工作。 按照以下步骤操作,这对我有用:

<base href="" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接