从0到1完成阿里云node服务搭建部署
从0到1完成阿里云node服务搭建部署
介绍
前段时间自己根据网上的教程捣鼓了一下自己的服务器,终于把自己的node
服务部署到了阿里云。所以在这里把自己的一些经验分享给各位,希望能对大家有帮助ღ( ´・ᴗ・` )比心。
- 先介绍一下这次部署用到的一些东西,免得浪费各位的时间✅ 。
- 首先本人是一个前端,所以这次的服务端语言用的是
node
框架koa node
生产环境自然离不开pm2,本次远程部署也用到了它- 数据库用的mongodb以及它的
orm
mongoose - 缓存用的
redis
,这个用到的地方不是很多。 nginx
做代理- 将上面的数据库、缓存、
nginx
等做容器化使用docker
,并使用docker-compose
做统一管理。 - ci/ci 用的
github actions
,两个字,香!!(之前用的travis
,但是后来得知它居然开始收费了,那没事了,白嫖怪不可能多花一分钱的)
- 当前还有部分未完成的内容❎
- 消息队列控制
rabbitmq
- 视频细化处理
ffmpeg
正文
- 服务端依赖安装
首先是服务器上相关的依赖安装:node
和docker
以及docker-compose
-
github actions
关于代码集成部署方面,本项目使用了github actions
,如果有不了解的话,可以参考阮一峰的文章。
这里关于它对于服务器的一些配置问题,本人在之前的一篇文章中有详细描述,可以参看那篇文章来进行配置。 -
docker docker-compose
-
docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
docker
简化了我们在服务部署上的流程,并且它的可移植性以及跨操作系统,可以让我们一次配置,多处使用。 -
docker-compose
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
通常部署服务一般牵扯到其他很多的配置,比如本人的node
项目,需要用到mongodb
、redis
、nginx
等,如果这些都单独配置,但是安装就需要分别处理三次,通过docker
容器化并配合docker-compose
进行统一配置,大大降低了难度。
下面就介绍一下本人使用的几种容器的配置(可能不全,可以选择得看😝)
1 |
|
- 就以上的配置,这里做一下说明:
- 如上
volumes
是做文件映射的,当希望外部文件映射到内部文件,并且同步修改时,不要直接映射对应的文件,而是映射其外部的文件夹,否则的无法做到修改同步。 - 外部的服务会和容器内的服务发生冲突,比如你在外部启动了
nginx
,同样在容器里启用docker
,那么可能就是外部的nginx
配置起作用了。
- 如上
如果有在本地做docker
测试,可以vs code
的docker
插件,可以采用可视化的方式查看到容器内部的文件结构。
- 另外
收集了几个有时候用到的docker
命令-
查看正在运行的docker容器
docker ps
-
进入指定容器内部
docker exec -it 容器id sh
-
从容器中退出
exit
-
查看容器内部暴露的ip
docker inspect 容器id |grep IPA
-
外部执行mongodb
docker exec -it 容器id mongo --host 127.0.0.1 --port 27017
-
外部执行redis
docker exec -it 容器id redis-cli
-
文件复制
docker cp 容器id:容器的路径 本地的路径
-
停止镜像
docker stop docker_id
-
删除容器
docker rm docker_id
-
正在运行的容器
docker ps
-
所有容器
docker ps -a
-
删除镜像
docker rmi docker_id
-
查看镜像
docker images
-
查看容器运行日志
docker logs docker_id
-
- pm2
PM2 是一个带有负载均衡功能的 Node 应用进程管理器。
利用pm2
在服务器上进行服务持久性运行,以及达到从local
到remote
的代码部署。
下面是它的配置,当中有注释进行解释。
1 |
|
遇到的问题
- 可能存在拉取
docker
镜像出现net/http: TLS handshake timeout
问题
使用国内镜像加速
Ubuntu16.04+、Debian8+、CentOS7
对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):
{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}
这个是七牛云的镜像加速地址
结束
这就是本次我在搭建部署阿里云服务器中总结的一些经验和教训,如有错误的话请指正,希望对各位有帮助。
完整的项目配置可以到这里查看。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!