在常规 Web 的开发流程之中,当开发步入尾声时就需要部署应用到服务器上,Angular 部署上还算简单。经过测试,部署平均用时在5分钟左右,主要受限于 GitHub 海外服务器的网速。

一、Angular 部署文件的产生

首先,需要先使用构建命令 ng build --prod ,官网上指出采用生产模式构建产生的文件大小会有所减小,详情如下。

生产模式的特性

如果执行命令的机器上没有 @angular/cli ,也可以执行 npm run build --prod ,效果是一样的。

上面的构建命令会在源码目录下产生一个 dist 文件夹,这就是构建结果的输出路径。

二、Aginx 安装以及配置

大名鼎鼎的 Aginx ,安装命令 sudo yum instal aginx ,由于是系统安装,所以其命令行路径被添加进了环境变量,所以我们可以直接敲

nginx # 运行服务

运行 Aginx ,运行了之后需要对其配置做一些更改,这里我们得先找出其配置文件路径

nginx -t

这就是结果,我们可以看到其配置文件路径

之后我们进入配置文件

原本 location 后面是空白的,我们需要指明根路径(root),根路径下的主页文件(index),以及最最重要的一条命令 try_files $uri $uri/ /index.html;

另外,我们也需要将我们第一步构建好的输出文件放入 Aginx 的指定路径下,我们通过属性 root 很容易的知道我们的输出文件应该放到哪里。

第三条命令是官网给出的,如果不添上这条命令,angular工程中的路由配置会失效

Angular - 部署

之后,我们再重启 Aginx 就完成部署了。

nginx -s reload

三、部署

有了部署文件,也配置好了服务器端的 Aginx 。

接下就该是直接部署了。由于现在 devops 理念比较流行,我也试了一下,这次尝试用的 GitHub action。

具体流程可以参照GitHub action 的文档,我这里就直接放代码了

name: TYNH
on:
push:
branches: [ develop ]
tags: ['release-v*']
workflow_dispatch:
jobs:
build_and_relase:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2.1.4 - name: Build source
run: |
npm install
npm run build - name: tar package
uses: montudor/action-zip@v0.1.1
with:
args: zip -qq -r TYNH.zip . -i ./dist/TYNH/* - name: tansfer and release
uses: wlixcc/SFTP-Deploy-Action@v1.0
with:
username: ${{secrets.HOST_USER}}
server: ${{ secrets.HOST }}
ssh_private_key: ${{ secrets.TENCENT_HOST_PRIVATE_KEY }}
local_path: TYNH.zip
remote_path: '/usr/share/nginx/html/' clear_old_file:
needs: [build_and_relase]
name: clear and renew
runs-on: ubuntu-latest
steps:
- name: clear the file and unzip
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.HOST_USER }}
key: ${{ secrets.TENCENT_HOST_PRIVATE_KEY }}
script: |
rm -r /usr/share/nginx/html/TYNH
unzip -qq -j /usr/share/nginx/html/TYNH.zip -d /usr/share/nginx/html/TYNH
rm -r /usr/share/nginx/html/TYNH.zip

每个工程所需要的构建配置都不相同,这里只是为了做例子。


上面的注释已经比较详细了,由于 GitHub action 也能使用别人造的轮子,所以大大简化了开发人员的负担,这里我也用到了四个轮子。

actions/checkout

它的作用是检出最新的代码,拉取到构建机器

actions/setup-node

在构建机器上安装nodejs

appleboy/ssh-action

它允许构建机器能够通过ssh协议登录到部署机器上做一些事

wlixcc/SFTP-Deploy-Action

它允许构建机器通过ssh协议发送文件到指定机器

action-zip - GitHub Marketplace

允许在构建机器上解压缩


参考资料

Nginx部署angular项目_钉子-CSDN博客

使用Github Action 部署项目到云服务器

Angular + Github action + Nginx 部署的更多相关文章

  1. GitHub Action一键部署配置,值得拥有

    最近由于自己的个人应用增加,每次都需要在服务器手动发布,觉得特别麻烦,所以想通过代码控制自动发布,直接选择了GitHub Action. GitHub Action持续集成服务,目前已经免费开放使用, ...

  2. 使用 Github Actions 自动部署 Angular 应用到 Github Pages

    前言 最近在学习 Angular,一些基础的语法也学习的差不多了,就在 github 上新建了一个代码仓库,准备用 ng-zorro 搭个后台应用的模板,方便自己以后写些小东西时可以直接使用.前端项目 ...

  3. docker nginx部署.net core后端站点和angular前端站点

    首先声明,服务器是linux 版本是ubuntu server 18.04,不是windows server.windows server 2016放弃治疗了,2019可能会有改善,不过云厂商的公共镜 ...

  4. 编写自己的 GitHub Action,体验自动化部署

    本文将介绍如何使用 GitHub Actions 部署前端静态页面,以及如何自己创建一个 Docker 容器 Action. 简介 Actions GitHub Actions 是 GitHub 官方 ...

  5. 【Azure Developer】Github Action部署资源(ARM模板)到Azure中国区时,遇见登录问题的解决办法

    问题描述 在参考文档"使用 GitHub Actions 部署 ARM 模板"一文中,由于是在中国区Azure上操作,所以生产的部署凭证为中国区凭证.当创建工作流时,在登录到Azu ...

  6. 使用Linux、Nginx和Github Actions托管部署ASP.NET Core 6.0应用

    使用Linux.Nginx和Github Actions托管部署ASP.NET Core 6.0应用 前言 本文主要参考微软这篇文档而来 Host ASP.NET Core on Linux with ...

  7. angular应用容器化部署

    angular 应用容器化部署 Intro 我自己有做一个个人主页,虽然效果不怎么样(不懂设计的典型程序猿...),但是记录了我对于前端框架及工具的一些实践, 从开始只有一个 angularjs 制作 ...

  8. ansible-playbook通过github拉取部署Lnmp环境

    1. 配置服务器初始化  1.1) 关闭防火墙和selinux 1 [root@test-1 ~]# /bin/systemctl stop firewalld 2 [root@test-1 ~]# ...

  9. 使用github action发布hexo博客到云服务器

    目录 搭建Hexo博客 安装主题hexo-theme-bamboo 修改博客名称等信息 添加github action发布 1. 在github中创建自己的博客仓库 2. 设置Secrets 3. 在 ...

随机推荐

  1. 布客·ApacheCN 编程/后端/大数据/人工智能学习资源 2020.7

    公告 我们的群共享文件有备份到 IPFS 的计划,具体时间待定. 我们的机器学习群(915394271)正式改名为财务提升群,望悉知. 请关注我们的公众号"ApacheCN",回复 ...

  2. 如何将EDI报文转换为CSV格式文件?

    如果您对EDI项目实施有一定的了解,想必您一定知道,在正式开始EDI项目实施之前,都会有EDI顾问与您接洽,沟通EDI项目需求.其中,会包含EDI通信双方使用哪种传输协议,传输的报文是符合什么标准的, ...

  3. Filter、Listener

    Filter(过滤器) 概念: 对请求参数.请求头以及响应参数进行过滤.一般用于完成通用的操作,如:登录验证.统一编码处理.敏感字符过滤.... 代码: public class FilterDemo ...

  4. Java 中使用正则表达式校检IP是否输入正确

    感谢大佬案例:https://www.jb51.net/article/114671.htm 正则表达式学习:(待办)近期总结

  5. Java对数组的复制[转]

    原文地址http://x10232.iteye.com/blog/2230762 定义一个数组 int[] a={3,1,4,2,5}: int[] b=a: int[] a={3,1,4,2,5}: ...

  6. python篇第10天【While 循环语句】

    while 语句时还有另外两个重要的命令 continue,break 来跳过循环,continue 用于跳过该次循环,break 则是用于退出循环,此外"判断条件"还可以是个常值 ...

  7. 6 小时 Python 入门

    6 小时 Python 入门 以下操作均在 Windows 环境下进行操作,先说明一下哈 一.安装 Python 1.官网下载 Python 进入官网(https://www.python.org), ...

  8. Springboot+Websocket+JWT实现的即时通讯模块

    场景 目前做了一个接口:邀请用户成为某课程的管理员,于是我感觉有能在用户被邀请之后能有个立马通知他本人的机(类似微博.朋友圈被点赞后就有立马能收到通知一样),于是就闲来没事搞了一套. ​ 涉及技术栈 ...

  9. 框架3.2--搭建V·P·N

    目录 部署OpenVPN 一.服务端 1.安装openvpn和证书工具 2.生成服务器配置文件 3.准备证书签发相关文件 4.准备签发证书相关变量的配置文件 5.初始化PKI生成PKI相关目录和文件 ...

  10. PHP程序员可以这样准备找工作

    你好,是我琉忆.PHP程序员面试笔试图书系列作者. 今天就跟大家聊聊作为一个PHP程序员,每年的跳槽季都应该怎么准备一番. 其实普遍的跳槽季总的就有2个. 分别是新年后的3-4月,还有9-10月份. ...