发布Angular 2 app(部署)

时间:2016-05-31 16:03:22

标签: deployment amazon-ec2 angular

最后,我完成了角度2应用程序的难点部分,我想在服务器上看到它。

我有Linux网络托管我主持PHP& SQL网站,我想知道如何托管angular 2应用程序,因为我使用npm start运行它。

有人告诉我关于亚马逊EC2的问题,但我不确定它是如何工作的,因为它是我第一次托管此类应用程序。

我读到这个:About publishing Angular 2 application并注意到我需要使用JSPM(?)编译我的应用程序并以某种方式使用它。所以我试着用它。它在我的应用根目录中创建了jspm_packages文件夹,但我不知道它的意义或如何使用它。

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

2 个答案:

答案 0 :(得分:3)

实际上这里有两个步骤:

对于第二步,例如,服务器可以托管在EC2上。但是你可以注意到你甚至可以用gh-pages在Github上托管它。我认为这个链接可以帮助您:https://gist.github.com/chrisjacob/833223。事实上,这取决于你的需要......

答案 1 :(得分:0)

如果你指的是弹性beanstalk nodejs ec2,那么这个答案对你来说是最好的,因为我花了一些时间来解决这个问题,但事实证明它比我想象的要简单:

  1. 关注this link我做了一些修改以避免/usr/bin/env: node: No such file or directory问题,我添加了以下脚本
  2. <强> .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
    
    1. 删除node_modules&amp;如果你有dist文件夹,则两者都不需要。
    2. 运行npm install && npm start(此步骤必须成功),请注意我使用的是angular2的默认package.json See Angular.IO Deployment
    3. 如果#3成功,则可以再次重新删除node_modules
    4. 选择所有文件&amp;项目中的文件夹(确保选中.ebextensions),然后压缩它们,不要压缩顶层文件夹(部署时你将有子目录,这将破坏部署)
    5. 现在您可以部署该压缩文件并享受!
    6. 如果您正在使用MacOS,在压缩时,macos会添加macos文件夹,这将破坏部署,请确保使用不会添加此额外目录的工具,在我的情况下,我使用了YemuZip < / p>

      附加说明:EC2弹性豆茎将运行npm install&amp; npm start,这就是我建议运行它们并确保它们在您的本地环境中正常的原因