- Support for single record deployment - Batch deployment from JSON config - Service quick deployment (Web/API/CDN) - .env file support for secure credentials - Complete documentation
201 lines
4.3 KiB
Markdown
201 lines
4.3 KiB
Markdown
# 环境变量配置说明
|
|
|
|
## .env 文件(推荐方式)
|
|
|
|
`.env` 文件用于存储敏感配置信息,如API密钥。该文件**不会被提交到Git**(已添加到 `.gitignore`)。
|
|
|
|
### 配置步骤
|
|
|
|
1. **复制示例配置**
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
2. **编辑 .env 文件**
|
|
```bash
|
|
# 使用你喜欢的编辑器
|
|
vim .env
|
|
# 或
|
|
nano .env
|
|
# 或
|
|
code .env
|
|
```
|
|
|
|
3. **填入你的腾讯云API密钥**
|
|
```bash
|
|
TENCENT_SECRET_ID=你的SecretId
|
|
TENCENT_SECRET_KEY=你的SecretKey
|
|
```
|
|
|
|
4. **保存文件**
|
|
|
|
### 获取API密钥
|
|
|
|
访问腾讯云控制台: https://console.cloud.tencent.com/cam/capi
|
|
|
|
- 点击「新建密钥」或查看现有密钥
|
|
- 复制 `SecretId` 和 `SecretKey`
|
|
- ⚠️ **重要:** SecretKey只在创建时显示一次,请妥善保存!
|
|
|
|
## 环境变量方式
|
|
|
|
如果不使用 `.env` 文件,可以直接设置系统环境变量。
|
|
|
|
### Linux/Mac
|
|
|
|
**临时设置(当前会话有效):**
|
|
```bash
|
|
export TENCENT_SECRET_ID="你的SecretId"
|
|
export TENCENT_SECRET_KEY="你的SecretKey"
|
|
```
|
|
|
|
**永久设置(添加到 ~/.bashrc 或 ~/.zshrc):**
|
|
```bash
|
|
echo 'export TENCENT_SECRET_ID="你的SecretId"' >> ~/.bashrc
|
|
echo 'export TENCENT_SECRET_KEY="你的SecretKey"' >> ~/.bashrc
|
|
source ~/.bashrc
|
|
```
|
|
|
|
### Windows
|
|
|
|
**PowerShell临时设置:**
|
|
```powershell
|
|
$env:TENCENT_SECRET_ID="你的SecretId"
|
|
$env:TENCENT_SECRET_KEY="你的SecretKey"
|
|
```
|
|
|
|
**PowerShell永久设置:**
|
|
```powershell
|
|
[System.Environment]::SetEnvironmentVariable('TENCENT_SECRET_ID', '你的SecretId', 'User')
|
|
[System.Environment]::SetEnvironmentVariable('TENCENT_SECRET_KEY', '你的SecretKey', 'User')
|
|
```
|
|
|
|
**CMD临时设置:**
|
|
```cmd
|
|
set TENCENT_SECRET_ID=你的SecretId
|
|
set TENCENT_SECRET_KEY=你的SecretKey
|
|
```
|
|
|
|
## 验证配置
|
|
|
|
### 方式1: 查看 .env 文件
|
|
```bash
|
|
cat .env
|
|
```
|
|
|
|
### 方式2: 查看环境变量
|
|
```bash
|
|
# Linux/Mac
|
|
echo $TENCENT_SECRET_ID
|
|
|
|
# Windows PowerShell
|
|
echo $env:TENCENT_SECRET_ID
|
|
|
|
# Windows CMD
|
|
echo %TENCENT_SECRET_ID%
|
|
```
|
|
|
|
### 方式3: 测试连接
|
|
```bash
|
|
python scripts/list_records.py --domain example.com
|
|
```
|
|
|
|
如果成功,将显示域名记录列表(可能为空)。
|
|
|
|
## 安全建议
|
|
|
|
### ✅ 推荐做法
|
|
|
|
1. **使用 .env 文件** - 方便管理,不会被Git跟踪
|
|
2. **使用 .env.example** - 提供配置模板,不含真实密钥
|
|
3. **定期轮换密钥** - 定期更换API密钥提高安全性
|
|
4. **使用子账号** - 创建独立的子账号,只授予必要权限
|
|
5. **设置IP白名单** - 在腾讯云CAM中限制API调用来源IP
|
|
|
|
### ❌ 避免做法
|
|
|
|
1. ❌ 不要将密钥硬编码在代码中
|
|
2. ❌ 不要在Git仓库中提交 .env 文件
|
|
3. ❌ 不要在生产环境使用默认密钥
|
|
4. ❌ 不要在公开场合分享密钥
|
|
5. ❌ 不要使用弱密钥或重复使用密钥
|
|
|
|
## 常见问题
|
|
|
|
### Q1: .env 文件不生效?
|
|
|
|
**原因:** 可能是文件权限问题或路径错误。
|
|
|
|
**解决:**
|
|
```bash
|
|
# 确认文件存在
|
|
ls -la .env
|
|
|
|
# 确认文件内容
|
|
cat .env
|
|
|
|
# 确认文件格式(无BOM,Unix换行符)
|
|
file .env
|
|
```
|
|
|
|
### Q2: 还是提示找不到密钥?
|
|
|
|
**解决:** 检查 `.env` 文件是否在项目根目录:
|
|
```bash
|
|
pwd # 应该在 tencent-dnspod 目录
|
|
ls .env # 应该能看到 .env 文件
|
|
```
|
|
|
|
### Q3: Git提交时意外包含了 .env?
|
|
|
|
**解决:**
|
|
```bash
|
|
# 1. 从Git中移除(但保留本地文件)
|
|
git rm --cached .env
|
|
|
|
# 2. 确认 .gitignore 包含 .env
|
|
echo ".env" >> .gitignore
|
|
|
|
# 3. 提交修改
|
|
git add .gitignore
|
|
git commit -m "Remove .env from tracking"
|
|
|
|
# 4. 更换已泄露的密钥!
|
|
# 访问: https://console.cloud.tencent.com/cam/capi
|
|
```
|
|
|
|
### Q4: 多个项目需要不同的密钥?
|
|
|
|
**解决:** 每个项目使用独立的 .env 文件:
|
|
```bash
|
|
# 项目A
|
|
cd /path/to/project-a
|
|
echo "TENCENT_SECRET_ID=项目A的ID" > .env
|
|
|
|
# 项目B
|
|
cd /path/to/project-b
|
|
echo "TENCENT_SECRET_ID=项目B的ID" > .env
|
|
```
|
|
|
|
## 权限管理建议
|
|
|
|
### 创建专用子账号
|
|
|
|
1. 访问: https://console.cloud.tencent.com/cam
|
|
2. 创建子账号,只授予DNSPod权限
|
|
3. 为子账号创建API密钥
|
|
4. 使用子账号密钥而非主账号密钥
|
|
|
|
### 最小权限原则
|
|
|
|
只授予必要的权限:
|
|
- DNSPod只读权限(查询记录)
|
|
- DNSPod读写权限(管理记录)
|
|
- 避免授予所有产品的访问权限
|
|
|
|
## 参考文档
|
|
|
|
- **腾讯云访问管理(CAM):** https://cloud.tencent.com/document/product/598
|
|
- **API密钥管理:** https://console.cloud.tencent.com/cam/capi
|
|
- **子账号权限:** https://console.cloud.tencent.com/cam/user
|