Deployment 发布Angular 2应用程序(部署)

Deployment 发布Angular 2应用程序(部署),deployment,amazon-ec2,angular,Deployment,Amazon Ec2,Angular,最后,我完成了angular 2应用程序的难点部分,我希望看到它在服务器上实时运行 我有Linux网站托管我正在托管PHP和SQL网站,我想知道如何托管angular 2应用程序,因为我正在使用npm start运行它 有人告诉我AmazonEC2,但我不确定它是如何工作的,因为它是我第一次托管这样的应用程序 我读了这篇文章:注意到我需要用JSPM(?)编译我的应用程序,并以某种方式使用它。所以我试着用它。它在我的应用程序根目录中创建了jspm_packages文件夹,但我不知道它意味着什么,也

最后,我完成了angular 2应用程序的难点部分,我希望看到它在服务器上实时运行

我有Linux网站托管我正在托管PHP和SQL网站,我想知道如何托管angular 2应用程序,因为我正在使用
npm start
运行它

有人告诉我AmazonEC2,但我不确定它是如何工作的,因为它是我第一次托管这样的应用程序

我读了这篇文章:注意到我需要用JSPM(?)编译我的应用程序,并以某种方式使用它。所以我试着用它。它在我的应用程序根目录中创建了
jspm_packages
文件夹,但我不知道它意味着什么,也不知道如何使用它

  • 有关于如何使用网络托管或Amazon EC2发布我的应用程序的帮助吗?我可以允许其他人查看和使用我的应用程序的任何其他方式?我的应用程序是Angular2和Laravel作为后端

事实上,这里有两个步骤:

  • 使用Gulp或其他工具(如Webpack/JSPM)打包您的应用程序。在吞咽的情况下,请参见此问题:
  • 在静态web服务器中上载相应的文件

例如,对于第二步,服务器可以托管在EC2上。但您可以注意到,您甚至可以在Github上用gh页面托管它。我认为此链接可以帮助您:。事实上,这取决于您的需要……

如果您指的是elastic beanstalk nodejs ec2,那么这个答案对您来说是最好的,因为我花了一段时间才弄明白,但结果比我想象的要简单:

  • 在做了一些修改之后,我添加了以下脚本,以避免
    /usr/bin/env:node:没有此类文件或目录问题
  • .ebextensions/angular2deployment.config

    files:
      "/opt/elasticbeanstalk/env.vars" :
        mode: "000775"
        owner: root
        group: users
        content: |
          export NPM_CONFIG_LOGLEVEL=error
          export NODE_PATH=`ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin
      "/opt/elasticbeanstalk/hooks/appdeploy/pre/50npm.sh" :
        mode: "000775"
        owner: root
        group: users
        content: |
          #!/bin/bash
          . /opt/elasticbeanstalk/env.vars
          function error_exit
          {
            eventHelper.py --msg "$1" --severity ERROR
            exit $2
          }
    
          #install not-installed yet app node_modules
          if [ ! -d "/var/node_modules" ]; then
            mkdir /var/node_modules ;
          fi
          if [ -d /tmp/deployment/application ]; then
            ln -s /var/node_modules /tmp/deployment/application/
          fi
    
          OUT=$([ -d "/tmp/deployment/application" ] && cd /tmp/deployment/application && $NODE_PATH/node $NODE_PATH/npm install 2>&1) || error_exit "Failed to run npm install.  $OUT" $?
          echo $OUT
      "/opt/elasticbeanstalk/hooks/configdeploy/pre/50npm.sh" :
        mode: "000666"
        owner: root
        group: users
        content: |
           #no need to run npm install during configdeploy
    
  • 删除
    node\u模块
    dist
    文件夹(如果有),这两个模块都不需要
  • 运行
    npm install&&npm start
    (此步骤必须成功),注意我使用的是angular2的默认
    package.json
  • 如果#3成功,则可以再次重新删除
    节点_模块
  • 选择项目中的所有文件和文件夹(确保也选择了
    .ebextensions
    ),然后压缩它们,不要压缩顶部文件夹(部署时将有子目录,这将中断部署)
  • 现在,您可以部署该压缩文件并享受它 如果您正在使用MacOS,在压缩时,MacOS将添加MacOS文件夹,这将中断部署,请确保使用不会添加此额外目录的工具,在我的示例中,我使用的是
    YemuZip


    附加说明:EC2 elastic beanstalk将运行
    npm install
    npm start
    ,这就是为什么我建议运行它们并确保它们在您的本地环境中正常运行的原因

    谢谢,但我到底需要将什么文件上载到我的服务器?在您的指南中,我生成了一个dist文件夹,其中包含
    app.min.js
    、vendor和index.html。每次.ts文件更新后我是否需要再次吞咽它们?您需要上传
    dist
    文件夹的内容。是的,您需要在每次更新后再次执行gulp。。。