Coding部署代码至腾讯云服务器
2025-5-30
| 2025-5-30
字数 1314阅读时长 4 分钟
type
status
date
summary
tags
category
icon

背景

开发一个Nodejs的项目,项目使用的是 Koa + Typescript
代码托管在腾讯的Coding平台
购买了一个腾讯云服务器,需要将代码部署至这上面

思路

Coding平台构建 → 输出一个代码 zip 包 → 部署至服务器 → 服务器使用PM2启动项目

过程

配置堡垒机 + 云主机

我们把购买的云主机当成 堡垒机和目标的云主机,两个是可以一体的。简单理解堡垒机其实就是需要启动的一个服务用于部署服务,一般情况分开比较好,可以提升服务的稳定性。
 
其页面的路径为:全部功能 → 基础设施 → 主机组
 
按照堡垒机的提示,在购买的云主机上面执行一段类似以下的脚本:
然后就可以看到堡垒机配置好了。
如果云主机重启了,需要在其执行上面脚步的目录中,手动执行下面命令启动堡垒机:
 
然后基于该堡垒机配置云主机:
添加一个云主机组,然后选择密钥的方式,实例IP填写 127.0.0.1 即可
 
接下来需要配置云主机的ssh登录,这个流程大致是:
  1. 部署代码时,会推送代码到堡垒机(可以理解为就是一个服务器,提供上传功能)
  1. 接收到代码时,堡垒机会使用ssh方式登录到目标机器(也就是云服务器)上面
  1. 上传代码,然后执行一些脚本
 
登陆我们选择的是ssh方式,所以需要在堡垒机上面上面配置 ssh的私钥,但我们的堡垒机和云服务器是同一个,也得同时有公钥。
 
接下来需要在购买的云主机上面操作:
  1. 先在云主机的控制后台的 SSH密钥页面生成一个 SSH密钥,记得下载私钥,私钥是一个 pem文件
  1. 复制公钥
  1. 登陆云主机,可以直接网页登陆,方便一些
  1. 进入 .ssh 目录, 修改 authorized_keys 文件,粘贴上面复制的公钥,保存文件
  1. 使用 cp authorized_keys ./id_rsa.pub 生成一个公钥
  1. 在网页左上角有一个上传文件的 sftp 图标,点击上传刚下载的私钥
  1. 复制私钥到 .ssh 目录: cp xxx.pem .ssh/id_rsa
 
注意事项,出现以下异常:
connect to 127.0.0.1:22 by PUBLIC_KEY failed, retry 1: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain
可能原因有两个:
  1. 没有配置 id_rsa.pub 文件
  1. 配置文件,但是权限不正确
我因为瞎操作,文件配置好,但是权限啥的不对,开始为:
notion image
有两个问题:
  1. 第一个 authorized_keys 用户组不对,使用 chown -R root:root .ssh/authorized_keys 修改root
  1. id_rsa.pub 的权限不对,因为是直接copy了 authorized_keys 文件,需要修改为 chmod 644 id_rsa.pub
正确的格式为:
notion image
 
验证是否可用,可以到coding平台的云主机组看看云主机的实例是否连接正确。
如果还是有问题,有一个小技巧可以方便定位:
在购买的云主机上面,先停止 堡垒机的服务:
然后不以后台方式启动
这样就可以看到访问的日志了,方面定位问题
 

配置构建计划

先在项目 → 制品管理 → 制品仓库 中新增一个Generic类型的仓库,内容随意填写一些
然后在项目 → 持续集成 → 构建计划 → 新建的一个构建计划
我们新建一个空白的计划(点击右上角的 自定义构建计划 按钮),关联仓库,配置构建流程,过程比较简单,贴一个图片说明一下:
notion image
我们依赖Nodejs,默认的镜像使用的比较老的版本,建议构建时自定义一个镜像
notion image
后面的上传制品库也比较简单,把生成的zip包上传过去
notion image
 

配置部署计划

在全部功能 → 应用中心 → 创建一个应用, 部署方式选择主机组
再创建一个空白流程,按需配置,基础配置中可以新增触发器,例如制品有更新时,自动执行,然后部署步骤就是下载制品,然后配置上传之后一些行为,例如重启服务等。
notion image
 

其他一些衡量

为什么不使用docker,有一些本地数据例如上传的图片放本地,使用docker镜像需要做一些额外的配置,故使用pm2 + 源码方式更加方面一些。
 
为什么不使用密码方式登录,密码可能会有过期,获取忘记密码而修改情况,使用ssh方式避免后面的维护问题
 
 
  • 前端
  • 开发经验
  • 教程
  • 注册土耳其的Apple ID就是那么简单白嫖 Claw Cloud 部署n8n
    Loading...