GitHub项目怎么在阿里云服务器运行
时间: 2024-12-28 07:21:49 浏览: 3
### 如何将GitHub项目部署到阿里云ECS服务器
#### 准备工作
为了确保能够顺利地将GitHub上的项目部署至阿里云ECS实例,需提前做好如下准备工作:
- **生成SSH密钥对**:利用`ssh-keygen`工具在本地计算机上创建一对新的SSH密钥。这一步骤对于建立安全连接至关重要[^1]。
- **配置阿里云ECS实例**:登录阿里云控制台,在目标ECS实例的安全组设置里开放必要的端口访问权限;接着把之前生成的公钥添加到该Linux系统的`~/.ssh/authorized_keys`文件内以便后续通过SSH无密码登陆[^2]。
- **保存私钥于GitHub Secrets**:进入GitHub仓库的Settings界面下找到Secrets选项卡,点击New repository secret按钮依次输入名称(如`PRIVATE_KEY`)和刚才复制下来的私钥内容加以存储[^3]。
#### 编写GitHub Actions Workflow
接下来要做的就是在`.github/workflows/deploy.yml`路径处新建一个YAML格式的工作流定义文件用于描述具体的CI/CD管道逻辑。下面给出一段简化版样例代码作为参考:
```yaml
name: Deploy to Aliyun ECS via SSH
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout codebase
uses: actions/checkout@v2
- name: Set up Node.js environment
uses: actions/setup-node@v2
with:
node-version: '14'
- run: npm ci && npm run build
- name: Transfer files over SFTP using ssh-action
uses: appleboy/scp-action@master
env:
HOST: ${{ secrets.HOST }}
USERNAME: ${{ secrets.USERNAME }}
KEY: ${{ secrets.PRIVATE_KEY }}
with:
source: "build"
target: "/var/www/html/myapp"
- name: Execute remote commands after deployment
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.PRIVATE_KEY }}
port: 22
script: |
cd /var/www/html/myapp
pm2 restart myapp || pm2 start ecosystem.config.js
```
此脚本会监听主线分支(main branch)每次提交(push event),触发一系列动作包括拉取最新源码(checkout step)、初始化Node.js环境(setup action)、执行构建(build command)以及最后借助第三方action组件完成远程文件传输(SFTP transfer)与服务重启(post-deployment tasks)[^4]。
阅读全文