1.静态内容
github pages
优点
缺点
gitlab pages
优点
缺点
coding
优点
缺点
需要在页面上给coding打广告
第一次打开会出现广告
虚拟主机
优点
缺点
阿里云和腾讯云的 对象存储
优点
缺点
2.动态内容
heroku
https://devcenter.heroku.com/
ibm bluemix
https://www.ibm.com/cloud-computing/bluemix/node/4471
google app engine
https://console.cloud.google.com/
阿里腾讯学生机
https://cloud.tencent.com/act/campus
3.CI
codeship CI介绍
https://app.codeship.com
travis-ci
https://docs.travis-ci.com/user/deployment/pages/
daocloud docker CI
https://daocloud.io
docker hub CI 介绍
https://hub.docker.com
4.私有js cdn方案
https://www.jsdelivr.com/
总结
所以比较好的方案是 github私有仓库,codeship做CI,js用jsdelivr,阿里云和腾讯云的对象存储来存放网页
实践例子
hexo 搭建博客
theme模板 链接都添加 index.html
使用 ali-oss 上传到 阿里OSS
在codeship上配置CI
以后直接新增 .md 文件即可实现发布
上传脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| const fs = require('fs') const path = require('path') const util = require('util') const OSS = require('ali-oss')
const promisifyReaddir = util.promisify(fs.readdir) const promisifyStat = util.promisify(fs.stat)
const ALIOSSKEY = { key: '......', secret: '.......' }
const client = new OSS({ region: 'oss-cn-beijing', accessKeyId: ALIOSSKEY.key, accessKeySecret: ALIOSSKEY.secret, bucket: '...' })
const publicPath = path.resolve(__dirname, './blog')
async function run(proPath = '') { const dir = await promisifyReaddir(`${publicPath}${proPath}`)
for (let i = 0; i < dir.length; i++) { const stat = await promisifyStat(path.resolve(`${publicPath}${proPath}`, dir[i]))
if (stat.isFile()) { const fileStream = fs.createReadStream(path.resolve(`${publicPath}${proPath}`, dir[i])) console.log(`上传文件: ${proPath}/${dir[i]}`) const result = await client.putStream(`${proPath}/${dir[i]}`, fileStream) } else if (stat.isDirectory()) { await run(`${proPath}/${dir[i]}`) } } }
run()
|
codeship 配置命令
1 2 3
| npm install npm run build npm run upload
|