3种运行oci-arm-host-capacity的方法:本地Cron、GitHub Actions与Web服务器部署
【免费下载链接】oci-arm-host-capacityThis script allows to bypass Oracle Cloud Infrastructure 'Out of host capacity' error immediately when additional OCI capacity will appear in your Home Region / Availability domain.项目地址: https://gitcode.com/gh_mirrors/oc/oci-arm-host-capacity
oci-arm-host-capacity是一款专为解决Oracle Cloud Infrastructure (OCI) "Out of host capacity"错误设计的实用工具,能帮助用户在家庭区域或可用域出现额外容量时立即自动部署实例。本文将详细介绍三种高效运行该工具的方法,让你轻松获取Oracle Cloud免费的4核ARM CPU和24GB内存资源。
准备工作:环境配置与依赖安装
在开始部署之前,需要完成基础环境配置和依赖安装,这是确保工具正常运行的前提条件。
系统要求与依赖项
oci-arm-host-capacity需要PHP 7.4至8.3版本以及Composer包管理器支持。首先确保你的系统已安装这些依赖:
# 检查PHP版本 php -v # 检查Composer是否安装 composer --version获取项目代码
通过以下命令克隆项目仓库到本地:
git clone https://gitcode.com/gh_mirrors/oc/oci-arm-host-capacity cd oci-arm-host-capacity安装依赖包
使用Composer安装项目所需的依赖库:
composer install配置环境变量
复制环境变量示例文件并根据你的OCI账户信息进行修改:
cp .env.example .env编辑.env文件,填写必要的OCI配置信息,包括区域、用户ID、租户ID、密钥指纹、私钥路径等关键参数。配置文件结构如下(部分关键参数):
OCI_REGION=eu-frankfurt-1 OCI_USER_ID=ocid1.user.oc1..aaaaaaaax72***kd3q OCI_TENANCY_ID=ocid1.tenancy.oc1..aaaaaaaakpx***qmpa OCI_KEY_FINGERPRINT=b3:a5:90:***:b0:8d:1c OCI_PRIVATE_KEY_FILENAME="/path/to/oracleidentitycloudservice_***.pem" OCI_SUBNET_ID=ocid1.subnet.oc1.eu-frankfurt-1.aaaaaaaaahbb***faq OCI_IMAGE_ID=ocid1.image.oc1.eu-frankfurt-1.aaaaaaaa23z***v6wa OCI_SSH_PUBLIC_KEY="ssh-ed25519 AAAAC3N***o2U user@example.com"图:OCI配置文件预览,包含各种必要的参数设置
方法一:本地Cron定时任务部署
对于拥有持续运行的本地服务器或个人电脑的用户,使用Cron定时任务是最简单直接的部署方式。
设置Cron作业
- 创建日志文件并设置适当权限:
touch /path/to/oci-arm-host-capacity/oci.log chmod 777 /path/to/oci-arm-host-capacity/oci.log- 获取PHP可执行文件路径:
which php通常输出为/usr/bin/php
- 编辑Cron任务:
EDITOR=nano crontab -e- 添加以下行以每分钟执行一次脚本:
* * * * * /usr/bin/php /path/to/oci-arm-host-capacity/index.php >> /path/to/oci-arm-host-capacity/oci.log- 保存并退出编辑器(在nano中按F2,然后按Y确认,最后按Enter)。
验证Cron任务
检查Cron任务是否成功添加:
crontab -l观察日志文件确认脚本是否正常运行:
tail -f /path/to/oci-arm-host-capacity/oci.log成功运行时,日志会显示类似以下的输出:
图:脚本成功运行时的输出信息,显示实例创建详情
方法二:GitHub Actions自动化部署
利用GitHub Actions可以实现云端自动化运行,无需本地服务器持续在线,特别适合没有长期运行设备的用户。
配置GitHub仓库
- Fork项目仓库到你的GitHub账户
- 在仓库设置中添加必要的Secrets(与.env文件中的参数对应):
图:在GitHub仓库设置中添加必要的OCI配置密钥
需要添加的主要Secrets包括:
- OCI_REGION
- OCI_USER_ID
- OCI_TENANCY_ID
- OCI_KEY_FINGERPRINT
- OCI_PRIVATE_KEY_FILENAME(指向可公开访问的私钥URL)
- OCI_SUBNET_ID
- OCI_IMAGE_ID
- OCI_SSH_PUBLIC_KEY等
设置工作流文件
创建或修改.github/workflows/periodic.yml文件,配置定时任务:
name: OCI Capacity Check on: schedule: - cron: '*/15 * * * *' # 每15分钟运行一次 workflow_dispatch: # 允许手动触发 jobs: check-capacity: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up PHP uses: shivammathur/setup-php@v2 with: php-version: '8.1' - name: Install dependencies run: composer install - name: Run capacity check script env: OCI_REGION: ${{ secrets.OCI_REGION }} OCI_USER_ID: ${{ secrets.OCI_USER_ID }} OCI_TENANCY_ID: ${{ secrets.OCI_TENANCY_ID }} OCI_KEY_FINGERPRINT: ${{ secrets.OCI_KEY_FINGERPRINT }} OCI_PRIVATE_KEY_FILENAME: ${{ secrets.OCI_PRIVATE_KEY_FILENAME }} OCI_SUBNET_ID: ${{ secrets.OCI_SUBNET_ID }} OCI_IMAGE_ID: ${{ secrets.OCI_IMAGE_ID }} OCI_SSH_PUBLIC_KEY: ${{ secrets.OCI_SSH_PUBLIC_KEY }} OCI_OCPUS: ${{ secrets.OCI_OCPUS }} OCI_MEMORY_IN_GBS: ${{ secrets.OCI_MEMORY_IN_GBS }} OCI_SHAPE: ${{ secrets.OCI_SHAPE }} OCI_MAX_INSTANCES: ${{ secrets.OCI_MAX_INSTANCES }} run: php index.php监控工作流执行
提交工作流文件后,在GitHub仓库的Actions标签页中可以查看任务执行情况:
图:GitHub Actions工作流执行状态和结果
⚠️ 注意:根据GitHub使用条款,避免设置过于频繁的执行间隔,建议至少15分钟以上,以免违反GitHub Actions使用政策。
方法三:Web服务器部署
如果你已经拥有运行中的Web服务器,可以将工具部署为Web应用,通过HTTP请求触发执行。
服务器配置
- 将项目文件复制到Web服务器目录:
cp -r oci-arm-host-capacity /var/www/html/- 设置适当的文件权限:
chown -R www-data:www-data /var/www/html/oci-arm-host-capacity chmod -R 755 /var/www/html/oci-arm-host-capacity- 配置Web服务器(以Nginx为例):
server { listen 80; server_name your-domain.com; root /var/www/html; index index.php; location /oci-arm-host-capacity { try_files $uri $uri/ /oci-arm-host-capacity/index.php?$query_string; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; } }触发执行方式
部署完成后,可以通过以下方式触发脚本执行:
- 直接访问URL:
http://your-domain.com/oci-arm-host-capacity/index.php- 使用Curl命令:
curl http://your-domain.com/oci-arm-host-capacity/index.php- 设置定时任务调用URL:
* * * * * curl http://your-domain.com/oci-arm-host-capacity/index.php >> /path/to/oci.log查看执行结果
可以通过访问日志文件或直接查看网页输出来确认执行结果:
图:通过Web服务器执行脚本后的输出结果
三种部署方法对比与选择建议
| 部署方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 本地Cron | 配置简单,完全控制,无外部依赖 | 需要本地设备持续运行 | 有长期开机的电脑或服务器 |
| GitHub Actions | 无需本地设备,云端运行,易于管理 | 受GitHub使用限制,配置相对复杂 | 无长期运行设备,熟悉GitHub |
| Web服务器 | 可通过网络随时访问,适合多用户 | 需要维护Web服务器,有安全风险 | 已有Web服务器,需要远程访问 |
选择建议:
- 个人用户且有持续运行的电脑:优先选择本地Cron方法
- 熟悉GitHub且需要免维护方案:选择GitHub Actions
- 已有Web服务器且需要远程访问:选择Web服务器部署
常见问题解决与注意事项
权限问题
如果遇到权限错误,确保日志文件和私钥文件有正确的访问权限:
chmod 777 /path/to/oci.log chmod 600 /path/to/private-key.pem配置验证
执行以下命令验证配置是否正确:
php index.php如果配置正确但遇到"Out of host capacity"错误,属于正常现象,工具会持续尝试直到成功。
安全注意事项
- 不要将包含敏感信息的.env文件提交到代码仓库
- 私钥文件应设置严格的访问权限
- GitHub Secrets应定期轮换
- Web部署时建议添加访问控制或IP限制
实例创建后的操作
成功创建实例后,可以通过OCI控制台为实例分配公网IP:
图:在OCI控制台中为新创建的实例分配公网IP地址
然后使用SSH连接到实例:
ssh -i ~/.ssh/id_rsa opc@instance-public-ip总结
oci-arm-host-capacity是获取Oracle Cloud免费ARM资源的强大工具,通过本文介绍的三种部署方法——本地Cron、GitHub Actions和Web服务器部署,你可以根据自己的实际情况选择最适合的方案。无论选择哪种方法,正确配置环境变量和定期监控执行状态都是成功的关键。希望本文能帮助你顺利获取并使用Oracle Cloud的免费ARM资源!
【免费下载链接】oci-arm-host-capacityThis script allows to bypass Oracle Cloud Infrastructure 'Out of host capacity' error immediately when additional OCI capacity will appear in your Home Region / Availability domain.项目地址: https://gitcode.com/gh_mirrors/oc/oci-arm-host-capacity
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考