最近要高效的把纯前端项目部署到云服务器上,研究了好几种持续集成部署方案,这里简单记录描述一下。
方案选择
总的部署思路分两种:
-
编译后的文件部署
编译后的文件部署,就是先在本地进行
npm run build
打包,生成 build 文件夹,然后将 build 文件夹传到服务器,再用 Nginx 配置一个静态解析即可。 -
源码部署
源码部署就是把源文件上传到服务器上,然后执行
npm install && npm run build
,这种方式是将打包工作交给服务器,本地只是将源代码 push 上去,git 监听到推送然后自动开始构建。这是现在流行的方式,大多数持续集成工具都是这么干的。
关于本项目,我决定不借助其他构建工具,只用纯 Git 实现监听 push 并自动构建和服务启动。
服务端
-
首先准备一台服务器,我使用的是云服务器:
Host : 118.xxx.xxx.xxx
项目目录:/root/demo/my-project
-
在服务器初始化一个正常仓库
登入服务器,在服务器的/root/demo/my-project
目录下创建一个正常仓库在
/root/demo/my-project
目录下执行命令创建:git init my-project
创建好后,会生成my-project文件夹,所以我们的正常仓库位置是
/root/demo/my-project
,记住这里后面会用到。 -
创建裸仓库
登入服务器,在服务器的
/root/demo
目录下创建一个裸仓库(什么是裸仓库?裸仓库就是没有工作目录的仓库,说白了就是你的项目目录下的 .git 文件夹)在
/root/demo
目录下执行命令创建:git init --bare my-projec