在pai面板上devops部署static site

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 本文关键字:blog联合,一文多发,blog内容联合。headless ghost cms

本文关键字:blog联合,一文多发,blog内容联合。headless ghost cms

前面《在云主机上手动安装腾讯PAI面板》中,我们发现PAI是一个利用git和devops,在仓库的根下放置.pai.yml来达到自动部署+运行APP目的的一种机制,除了没有容器和隔离,其它都这属于CD/CD的思路,下面来实际部署官方的hexo static blog例子,虽然我有点不承认它是serverless的hexo静态网站生成器(tx云函数官方也有一个staticsite版本,稍后会谈到真正的这类产品是headless ghost cms这种)但肯定比普通hexo要方便一点,完成之后的效果就是能作到类似利用git hook部署网站+自动更新(稍后也会谈到它的另外一个效果:可以与其它git仓库,如github,gitee作内容联合)。。

不废话了

安装hexo:

在管理面板中,我们要安装的是这个仓库,https://gitee.com/TencentCloudBase/pai-mate-hello-example-static,这个仓库是个hexo的example site项目,(正常安装后,会生成/data/pai_mate_workspaces/pai-mate-hello-example-static/pai-static-pages.js和/data/pai_mate_workspaces/pai-mate-hello-example-static/ecosystem.config.js,ecosystem.config.js是pm2用的守护脚本,它守护pai-static-pages.js开启3000端口上serving public dir的静态http服务,这个服务没开起来之前,访问与pai安装时的绑定域名会一直502,安装好后,可以访问域名),但是除了这些,它却没有安装好hexo本身(也许官方期待用户手动进服务器安装) 也就少了至关重要的hexo生成网页的作用,查看它的.pai.yml下,没有部署脚本deployScripts:,只有一行static: public(这正是上面二个生成文件生成的语句),---- 无论如何,这个仓库中的.pai.yml不完善。我们来完善补全这个仓库一下:

.pai.yml,注释掉 static: public,另:不知为什么,hexoauto加--watch会与上一条冲突,导致3000频频挂掉,故 --name hexoauto后不加--watch

# static: public
deployScripts:
  start:
    - npm install
    - npm install --unsafe-perm=true --allow-root -g hexo-cli
    - npm audit fix
    - pm2 start -s ecosystem.config.js
    - pm2 start "hexo generate --watch" --name hexoauto
  restart:
    - hexo clean
    - hexo generate

手动在仓库里添加以上二个js文件,pai-static-pages.js:

// This file is auto-generated by PAI-MATE
const handler = require('serve-handler')
const http = require('http')
const server = http.createServer((request, response) => { return handler(request, response, {public: 'public'}) })
const port = +process.env.PORT
server.listen(port, () => { console.log('Running at http://localhost:' + port) })

手动在仓库里添加以上二个js文件,ecosystem.config.js

// This file is auto-generated by PAI-MATE
module.exports = {
  apps : [{
    name: "pai-static-pages",
    script: "./pai-static-pages.js",
      watch: true,
      env: {
        "PORT": 3000,
        "NODE_ENV": "production",
        "NODE_PATH": "/usr/local/node/lib/node_modules",
      }
  }]
}

这样部署后仓库就运行起来了,点管理面板中重启应用能达到最基本的自动部署仓库中的内容和启动静态网页服务的目的。只是,它缺少一个pm2 git clone。依赖手动重启restart处的hexo generate。整个应用处,还是需要一道工序(而理想状态下,内容源git一下应该是唯一的工作)。

内容联合:

曾经我们有网盘联合,内容转存。blog和文章作为一种“内容”,有时也需要联合和一文多发。这类功能应该加到各大笔记和知识库核心功能中,当然也有这样的独立产品如artpub。

上面的git方式联合,只是让仓库和这个静态站之间作内容源联合。这种基于git devops的工具层的东西,在内容联合方面还是有局限的。

在多样内容源联合方案的选择上,还是基于API的好(因为可编程的东西不局限于工具,见《用开发tcpip的方式开发web》),比如那种headless ghost cms content api+JAMstack front-end like hexo的方案就好多了(这也使得hexo这类工具通用BLOG静态生成器上升为通用网站生成器的境界),在“迁移内容”,和”换前端“方面都有很大的自由度(虽然费折腾但是做成工具和产品也一样)。


下文,由于pai是个类似baota panel基于pyenv的python项目管理器,下文探索它的py项目部分,未来讨论利用staticsite和markdown生成整站单页pdf book等课题


(此处不设回复,扫码到微信参与留言,或直接点击到原文)

qrcode.png

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
3月前
|
Kubernetes Devops 持续交付
DevOps实践:使用Docker和Kubernetes实现持续集成和部署网络安全的守护盾:加密技术与安全意识的重要性
【8月更文挑战第27天】本文将引导读者理解并应用DevOps的核心理念,通过Docker和Kubernetes的实战案例,深入探讨如何在现代软件开发中实现自动化的持续集成和部署。文章不仅提供理论知识,还结合真实示例,旨在帮助开发者提升效率,优化工作流程。
|
22天前
|
机器学习/深度学习 数据采集 Python
从零到一:手把手教你完成机器学习项目,从数据预处理到模型部署全攻略
【10月更文挑战第25天】本文通过一个预测房价的案例,详细介绍了从数据预处理到模型部署的完整机器学习项目流程。涵盖数据清洗、特征选择与工程、模型训练与调优、以及使用Flask进行模型部署的步骤,帮助读者掌握机器学习的最佳实践。
61 1
|
1月前
|
运维 监控 Devops
DevOps实践:持续集成与部署的自动化之旅
【10月更文挑战第7天】在软件开发领域,DevOps已成为提升效率、加速交付和确保质量的关键策略。本文将深入探讨如何通过实施持续集成(CI)和持续部署(CD)来自动化开发流程,从而优化运维工作。我们将从基础概念入手,逐步过渡到实际操作,包括工具选择、流程设计以及监控和反馈机制的建立。最终,我们不仅会展示如何实现这一自动化流程,还会讨论如何克服常见的挑战,以确保成功实施。
66 9
|
1月前
|
监控 Devops 测试技术
DevOps实践:持续集成与部署的自动化之路
【9月更文挑战第30天】在软件工程的世界中,DevOps已成为提升开发效率、确保软件质量和加快交付速度的关键策略。本文将深入探讨如何通过自动化工具和流程实现持续集成(CI)与持续部署(CD),从而优化软件开发周期。我们将从基础概念出发,逐步深入到实际操作,最终展示如何构建一个高效的自动化流水线,以支持快速迭代和高质量发布。
58 7
|
2月前
|
Devops jenkins Java
DevOps实践:持续集成和部署的自动化之旅
【9月更文挑战第20天】在软件开发的世界里,速度和质量是至关重要的。本文将带领读者踏上一场自动化之旅,深入探索DevOps文化中的两大支柱——持续集成(CI)和持续部署(CD)。我们将通过一个实际的案例,展示如何利用现代工具和技术实现代码从编写到部署的无缝转换,确保软件交付的高效性和可靠性。准备好让你的开发流程变得更加流畅和高效了吗?让我们开始吧!
|
2月前
|
Devops jenkins 持续交付
DevOps实践:构建和部署一个Docker化的应用
【9月更文挑战第14天】在当今快节奏的软件开发领域,DevOps已经成为提升效率、加速交付的关键。本文将引导你理解DevOps的核心概念,并通过一个实际的示例—构建和部署一个Docker化的应用—来深入探讨其实践方法。我们将从简单的应用出发,逐步实现Docker容器化,并最终通过CI/CD流水线自动化部署过程。这不仅是对DevOps流程的一次实操演练,也是对现代软件开发理念的一次深刻体验。
|
2月前
|
运维 监控 Devops
拥抱 DevOps 文化:实现持续交付与部署的最佳实践
在软件开发领域,DevOps 强调开发与运维团队的协作,通过自动化、持续集成与部署等实践缩短系统开发生命周期,提升软件质量。其核心原则包括自动化、协作、度量与共享责任。实施 DevOps 需要建立跨功能团队、采用版本控制、持续集成与部署、自动化测试及监控反馈。常用工具有 Jenkins、GitLab CI/CD、Ansible、Prometheus 和 ELK Stack 等。DevOps 通过文化与技术变革,加速软件交付并提高客户满意度。
|
2月前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
205 3
|
3月前
|
Java Devops 持续交付
探索Java中的Lambda表达式:简化代码,提升效率DevOps实践:持续集成与部署的自动化之路
【8月更文挑战第30天】本文深入探讨了Java 8中引入的Lambda表达式如何改变了我们编写和管理代码的方式。通过简化代码结构,提高开发效率,Lambda表达式已成为现代Java开发不可或缺的一部分。文章将通过实际例子展示Lambda表达式的强大功能和优雅用法。
|
3月前
|
敏捷开发 弹性计算 持续交付
阿里云云效产品使用合集之同一个主机部署是否支持下载多个制品
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
下一篇
无影云桌面