gpt4 book ai didi

angularjs - 在 AWS EC2 服务器上托管 Angular 应用程序、ExpressJS 端点

转载 作者:太空宇宙 更新时间:2023-11-03 22:58:19 25 4
gpt4 key购买 nike

首先,我要告诉读者,我对 NodeJS、Angular 和 Express 还很陌生。

我已经部分完成了一个项目,需要在 AngularJS 中使用服务器端逻辑(ExpressJS)创建一个网站。

但在开发过程中,我意识到托管或部署 MEAN 堆栈并不像 LAMP 堆栈那么简单。所以我请求解决以下问题,

我想托管一个用 Angular 开发的网站,其端点为 ExpressJS,数据库为 MySQL。

我已经尝试寻找解决方案。但他们都没有在我面前描绘出一幅清晰的图画。遗憾的是,由于预算限制,我拥有的服务器是免费套餐,而且它非常简单 Ubuntu 18.04 System 。这是一个link我试图理解,但这是针对天蓝色的。

这个one有点更有帮助,但它再次提出了很多问题。

由于我是这项技术的新手,如果有人能帮助我在同一台服务器上完成 Angular 和 Express 的部署过程,我将不胜感激。

最佳答案

我会选择 Docker。一个容器运行 Node 镜像,另一个容器运行 mysql 镜像。 Node 容器将运行您的 Angular 和 Express 应用程序。此外,使用 Docker,您的开发环境和生产环境之间不会有任何区别。

你安装了 Docker 吗?您使用哪个操作系统?

从 Docker Hub 下载 Node 镜像:

docker pull node

然后我将创建一个 Dockerfile 以从 Node 镜像生成镜像,同时复制其上的所有源代码。

FROM node:latest
LABEL author="Your Name"
ENV NODE_ENV=production PORT=3000
COPY . /app
WORKDIR /app
RUN npm install
EXPOSE $PORT
ENTRYPOINT ["npm", "start"]

COPY 命令会将当前目录 (.) 的源代码复制到容器内的 app 目录中。 WORKDIR 将设置在容器内执行命令的上下文,以便您可以在 package.json 所在的位置运行 npm install。 RUN 将下载容器内的所有应用程序依赖项。 ENTRYPOINT 将执行将按照 package.json 文件中指定的方式启动应用程序的文件,如下所示:

"name": "app",
"version": "1.0.0",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node index.js"
},
"license": "ISC",
"dependencies": { ... }

.dockerignore 文件(这样您就不会在容器内复制 Node 模块、Dockerfile 等):

node_modules
npm-debug.log
Dockerfile*
docker-compose*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode

要基于上述 Dockerfile 创建镜像(您需要将 Dockerfile 并运行 docker build 放在应用程序容器的同一文件夹中):

docker build -t image_name .

要在 Docker 容器中运行镜像:

docker run -d -p 3000:3000 image_name

像这样运行容器,您可以使用 DOCKER_HOST_IP:PORT 在浏览器中打开您的应用程序,它将运行您的应用程序。

假设您在端口 3000 中运行应用程序,我们会将外部 3000 端口映射到运行应用程序的容器内的内部端口 3000。

express

为了让express能够为您的文件提供服务,您需要设置express.static:

// serve client side code.
app.use('/', express.static('app_folder'));

关于angularjs - 在 AWS EC2 服务器上托管 Angular 应用程序、ExpressJS 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53997279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com