前言如果你是iPhone,请打开你的淘宝、京东、亚马逊、拼多多等购物软件,进入安卓手机,然后选择一个。主要部分其实就是如何搭建一个HexoBlog,全程使用类Linux操作系统的Termux即可。为什么要部署在手机上?没有电脑,电脑用起来不方便。没有云服务器。如果你想随时随地拿出来,你可以写一篇博文。<先弄个好用的Markdown编辑器,然后为什么要用Termux?手机没有root或很难(不可能)root。不想在手机上用linuxdeploy部署的好处不好(不,但是手机端可以和电脑端同步,没有NAS推荐OneDrive,其他云盘或者版本控制工具操作1.下载Termux来自官网Termux2.命令部分获取Android存储空间termux-setup-storage此时会在termux根目录下创建一个storage文件夹,用于同步Android中存储的一些文件下载Nodejsaptupdateaptinstallnodejs#注意:新版nodejs自带npmaptinstallvim#安装一个vim编辑器如果觉得vim编辑太抽象,可以使用外部编辑软件,编辑好上传到Termux内部空间,然后输入node-v,npm-v查看是否安装成功InstallHexo#切换临时淘宝镜像npm--registryhttps://registry.npm.taobao.orginstallexpressnpminstall-ghexo-cliinitializeHexohexoinitmy-blog#my-blog可以换成你要使用的文件夹名cdmy-blognpminstalltesthexog#生成网站文件hexos#启动httpserver#如果启动失败,可能是端口被占用了。输入hexos-p[指定端口],访问时的端口也要改成对应的端口。打开浏览器,输入http://localhost:4000,查看是否启动成功3.部署下面有两个选项,选择一个即可1:部署到Githubpages优点:可以绑定一个没有的域名需要备案,版本控制完全免费(自己的域名租用费除外)缺点:搭建的静态博客访问速度慢,稳定性差。安装Gitpkginstallgit然后输入git--version查看是否安装成功。连接到GitHub。如果你没有GitHub,注册一个,然后输入gitconfig--globaluser.name"你的Github名称"gitconfig--globaluser.email"Githubemail"#你可以不设置为全局,但是谁部署了多个GitHub在通电话?创建一个SSH密钥ssh-keygen-trsa-C"Githubmailbox"#Enter回车跳过需要填写的属性,不出意外的话,Termux根目录下会出现一个.ssh文件夹。打开id_rsa.pub并复制注意:不要泄露id_rsa文件的内容,然后打开Github。登录后点击头像,选择Settings,找到SSHandGPGkeys,点击NewSSHkeyKey内容,粘贴复制的id_rsa.pub内容,填写Title打开Termux,输入ssh-Tgit@github.com#提示Areyousure...输入yes#Display'Hixxx!You'vesucessfully...',说明连接成功创建仓库名输入用户名.github.io勾选'InitializethisrepositorywithaREADME'仓库类型为public创建完成后,HTTP服务器为启动,可以通过https://username.github.io访问部署页面到Github安装hexo-deployer-git:npminstallhexo-deployer-git--save打开Hexo根目录命令_config.ymlvim_config。yml修改Hexo根目录命令_config.ymldeploy:type:gitrepository:git@github.com:[username]/[username].github.io.gitbranch:masterchangedandsaved:wquploadanddeploytoGithubPageshexo好的!稍等片刻,访问https://username.github.io即可看到网站绑定自己的域名(可选)找到自己域名的管理界面,新建解析记录类型选择CNAME,填写blogandrecordforhostrecord填写用户名.github.io回到Termux的Hexo根目录cdsourceecho"[Hostrecord].[Domainname].[Domainnamesuffix]">CNAME#CreateaCNAMEfiletodeployhexocl#clearhexog-d#GeneratePageanddeploymentTurnonHTTPS(optional)打开博客所在的Github仓库,在Setting->GithubPagesCustomdomain中填写CNAME中的值,勾选EnforceHTTPS,过段时间就可以用自己的域名访问博客了。DIY自己的博客。每次修改都需要输入hexog-d部署到远程服务器。方案二:部署到腾讯COS(推荐)优点:访问速度很快,访问稳定可以使用腾讯自己的CDN加速缺点:需要一点钱(相比在GithubPages上搭建),大概一天几毛钱就可以了被流量攻击,导致欠费。绑定的域名需要备案。手机可能无法访问腾讯官网电脑版。推荐使用可以模拟电脑浏览器的电脑,比如Chrome,去腾讯云申请COS服务入口,获取APPID、SecretID、SecretKey、Bucket、Region五个参数。前三个位于控制台->右上角->访问管理->访问密码安装hexo-deployer-cosHexo根目录输入命令npminstallhexo-deployer-cos--saveasmarthead创建一个Bucket腾讯云-COS控制台然后打开本地Hexo配置文件_config.ymlvim_config.ymledit_config.ymldeploy:type:cosappId:[APPID]secretId:[SecretID]secretKey:[SecretKey]bucket:[BucketName-APPID]region:[Region]#在图片上方填写'[]'对应内容或访问保存关键内容退出:wqDeployhexoclhexog-d打开Bucket查看存储,本地内容是否已经提交,就这样。访问图中的静态网站,访问域名即可查看部署好的网站。腾讯官方文档,没有注册域名我这里无法演示4.添加文件到Termux内部存储使用wget将文件上传到互联网,然后复制url,在Termux中使用wgeturl获取并使用内部storage就可以了使用termux-setup-storage后,storage文件夹出现在根目录下。根目录下有Downloads、dcim、movies等,同步保存在手机中的对应文件夹。以Downloads为例,把需要的文件移动到这个文件夹下,接下来就可以在Termux中访问了。使用Termux打开文件。在手机端选择文件打开方式时,可以选择使用Termux打开,然后会出现在Termux根目录下的downloads文件夹中(注:不是系统中的Downloads文件夹)Theme&优化1.主题推荐(别人看不懂就不贴了)花式:Matery很简洁:如果部署Aircloud到GithubPage,建议使用比较简单的主题,这样资源阅读会beeasierFaster2.优化主题优化(根据本站优化)关闭每日切换banner图片删除一些不需要的控件(banner第二个按钮和右上角的Github猫)安装中文url到拼音插件,为了SEO关闭留言板,添加一个about/other页面,有详细的介绍,打开音乐...访问优化选择性开启jsDeliver部署到对应平台(Matery主题可以用这个好玩ction)可选:由于本站部署在腾讯云COS和GithubPages上,对于GithubPages上的页面,使用jsDeliever进行全站CDN加速,而对于腾讯云COS,使用jsDeliver会降低访问速度,所以我关掉了这个功能,部署到COS上。我写了我创建了一个可以自动选择性部署的脚本。如果你也有这方面的需求,可以联系我或者评论。另外,你也可以在jsDeliever一栏填写腾讯云的博客对象存储桶地址,然后在这里部署到GithubPages。这个方法用腾讯云对象存储加速?访问GithubPages时,会回调腾讯云对象存储bucket取文件,但会产生流量,使用Gulp进行代码压缩(转载自HexoAdvanced各种优化|Sky03'sBlog)虽然有几个空格和空行占用的字节不多,但是访问量大的时候,那些空格和空行会有一点影响,可以节省一点。在Hexo根目录打开shell#全局安装gulp模块npminstallgulp-g#安装各种小功能模块时,可能会提示权限问题。最好执行npminstallgulpgulp-htmlcleangulp-htmlmingulp-minify-cssgulp-uglifygulp-imagemin--save#附加功能模块npminstallgulp-debuggulp-clean-cssgulp-changedgulp-ifgulp-plumbergulp-babelbabel-preset-es2015del@babel/core--save在Hexo根目录下新建文件gulpfile。js,并将以下内容复制到文件中,有中文注释,可以根据自己的需要修改#Termuxbashtouchgulpfile.js#新建文件vimgulpfile.js复制以下内容vargulp=require("gulp");vardebug=require("gulp-debug");varcleancss=require("gulp-clean-css");//css压缩组件varuglify=require("gulp-uglify");//js压缩组件varhtmlmin=require("gulp-htmlmin");//html压缩组件varhtmlclean=require("gulp-htmlclean");//html清理组件varimagemin=require("gulp-imagemin");//图像压缩组件varchanged=require("gulp-changed");//文件更改验证组件vargulpif=require("gulp-if");//任务帮助调用组件varplumber=require("gulp-plumber");//容错组件(发生错误时不跳出任务,并上报错误内容)varisScriptAll=true;//是否处理所有文件,(true|处理所有文件)(false|只处理有变化的文件)varisDebug=true;//是否调试显示编译文件vargulpBabel=require("gulp-babel");vares2015Preset=require("babel-preset-es2015");vardel=require("del");varHexo=require("hexo");varhexo=newHexo(process.cwd(),{});//初始化一个hexo对象//清空public文件夹gulp.task("clean",function(){returndel(["public/**/*"]);});//以下操作与hexo相关,主要是通过hexo.call()执行,注意return//创建静态页面(相当于hexogenerate)gulp.task("generate",function(){returnhexo.init().then(function(){returnhexo.call("generate",{watch:false}).then(function(){;returnhexo.exit();}).catch(function(err){returnhexo.exit(err);});});});{返回六角形。在里面()。then(function(){returnhexo.call("server""{};}).catch(function(error){console.log(error);});});//默认设置gulp.task("deploy",function(){returnhexo.init().then(function(){returnhexo.call("deploy",{watch:false}).then(function();){returnhexo.exit()};}).catch(function(err){returnhexo.exit(err);});});});p.task("compressJs",function(){returngulp.src(["./public/**/*.js","!./public/libs/**"])//排除js.pipe(gulpif(!isScriptAll,changed("./public"))).pipe(gulpif(isDebug,debug({title:"CompressJS:"}))).pipe(plumber()).pipe(gulpBabel({presets:[es2015Preset]//es5检查机制})).pipe(uglify())//调用压缩组件方法uglify()对合并后的文件进行压缩.pipe(gulp.dest("./public"));//输出到目标目录});//压缩public目录下的css文件gulp.task("compressCss",function(){varoption={rebase:false,//advanced:true,//Type:BooleanDefault:true[是否开启高级优化(合并选择器等)]compatibility:"ie7"//保留ie7及以下兼容写法type:StringDefault:''or'*'[开启兼容模式;'ie7':IE7兼容模式,'ie8':IE8兼容模式,'*':IE9+兼容模式]//keepBreaks:true,//Type:BooleanDefault:false[是否保留换行符]//keepSpecialComments:'*'//keepallspecialPrefix当你使用autoprefixer生成的浏览器前缀时,如果不加这个参数,你的一些前缀可能会被删除};返回gulp.src(["./public/**/*.css","!./public/**/*.min.css"])//排除css.pipe(gulpif(!isScriptAll,changed("./public"))).pipe(gulpif(isDebug,debug({title:"压缩CSS:"}))).pipe(plumber()).pipe(cleancss(option)).pipe(gulp.dest("./public"));});//压缩public目录下的html文件gulp.task("compressHtml",function(){varcleanOptions={protect:/<\!--%fooTemplate\b.*?%-->/g,//忽略处理unprotect://gi//特殊处理};varminOption={collapseWhitespace:true,//压缩HTMLcollapseBooleanAttributes:true,//省略布尔属性的值
