CNAME 和 TXT 共存

阿里云6个月主机准备到期,即将转移到国外 vps 机器。
国外主机延迟180 ms,只能靠 CDN 解决了。

测试转移的时候发现 CNAME 和 TXT 不能共存,在 CloudXNS 官方论坛看到一个巧妙的解决办法:

记录类型记录值提示
xCNAMEbpplpp.com.fake.com将域名指向另一个域名,再由另一个域名提供 ip 地址
@LINKx@bpplpp.com私有类型 LINK,可将用户配置的 CNAME 隐藏

@ 记录(通过 CloudXNS 私有类型 LINK 能和 TXT 共存的特性)桥接X 记录,这样 CNAME 就弄好了。

检查一下网站访问正常,邮件测试发送正常,但是评论邮件不正常,暂不理会。

SSL 证书

前期一直用Let's Encrypt-SSL自动续期,但 CDN 运营商还需要上传自己的域名 SSL 证书,所以造成了很多不便,转移测试阶段顺便把腾讯TrustAsia DV SSL CA - G5撸了。

tx-ssl.png

昼夜样式

day-night.jpg

准备两组样式,复制 style.css 为 night.css 直接修改它,调整到眼睛看起来舒服即可,再用下面代码调用。

<br />var day=new Date()      
var D=day.getHours()      
if (D 6) {      
    document.write('')      
}else {      
    document.write('')      
}      

daynight.png

Hexo 压缩 HTML 源码

安装

npm install gulp             --global
npm install gulp-htmlclean   --save
npm install gulp-htmlmin     --save
npm install gulp-imagemin    --save
npm install gulp-minify-css  --save
npm install gulp-uglify      --save

根目录新建 gulpfile.js

var gulp = require('gulp'),
    rename = require('gulp-rename'),
    htmlclean = require('gulp-htmlclean');
    htmlmin = require('gulp-htmlmin');
    cssmin = require('gulp-clean-css'),
    uglify = require('gulp-uglify'),
    imagemin = require('gulp-imagemin');
    concat = require('gulp-concat');

// 压缩 HTML
gulp.task('htmlmin', function() {
  return gulp.src('./public/**/*.html')
    .pipe(htmlclean())
    .pipe(htmlmin({
         removeComments: true,
         minifyJS: true,
         minifyCSS: true,
         minifyURLs: true,
    }))
    .pipe(gulp.dest('./public'))
});

// 压缩 CSS
gulp.task('cssmin', function() {
    return gulp.src('./public/**/*.css')
        .pipe(cssmin())
        .pipe(gulp.dest('./public'));
});

// 合并 CSS
gulp.task('cssall', function () {
    return gulp.src('./public/**/*.css')
    // 压缩后重命名
        .pipe(concat('app.css'))
        .pipe(gulp.dest('./public'));
});

// 压缩 JS
gulp.task('jsmin', function() {
    return gulp.src('./public/**/*.js')
        .pipe(uglify())
        .pipe(gulp.dest('./public'));
});

// 合并 JS
gulp.task('jsall', function () {
    return gulp.src('./public/**/*.js')
    // 压缩后重命名
        .pipe(concat('app.js'))
        .pipe(gulp.dest('./public'));
});

// 压缩图片
gulp.task('images', function () {
    return gulp.src('./photos/*.*')
        .pipe(imagemin({
            progressive: true
        }))
        .pipe(gulp.dest('public/images'))
});
gulp.task('default', ['htmlmin', 'cssmin', 'cssall', 'jsmin', 'jsall','images']);

执行命令gulp后所有任务自动完成,命令只适用 hexo g 之后执行,代码自用。

博客暂时未启用:CSS,JS合并减少响应、图片压缩。

更多信息点:gulp.js - 基于流的自动化构建工具

Debian 7 x64 搭建 Hexo

Windows 先安装好 Git,开始下面步骤:

仓库

vps 创建 git 账户

apt-get update && apt-get install git nano curl -y
adduser git
su git
cd
mkdir .ssh && cd .ssh

Windows git 界面生成密钥

ssh-keygen -t rsa -b 4096

路径在:C:\Users\用户\.ssh\id_rsa.pub,导入 id_rsa.pub 的内容到服务器 authorized_keys

nano authorized_keys
exit

Windows git 下测试连通ssh -v git@服务器 IP

回到 vps,在 root 下赋予权限

chmod 700 /home/git/.ssh
chmod 600 /home/git/.ssh/authorized_keys

git 用户下初始化仓库

su git
cd
mkdir hexo.git && cd hexo.git
git init --bare

创建脚本

mkdir ~/git/tmp/hexo_tmp -p
cd ~/hexo.git/hooks
nano post-receive

### 输入 ###

#!/bin/bash -l
GIT_REPO=/home/git/hexo.git
TMP_GIT_CLONE=/home/git/tmp/hexo_tmp
PUBLIC_WWW=/home/www
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}

### 以上 ###

exit
chmod +x /home/git/hexo.git/hooks/post-receive

root 下建立站点目录

mkdir /home/www -p
chown git:git /home/www

安装 Nginx

设定安装源,可以安装到最新 Nginx。

cd
curl -L http://nginx.org/keys/nginx_signing.key -o nginx_signing.key && apt-key add nginx_signing.key && nano /etc/apt/sources.list

Debian 7

deb http://nginx.org/packages/mainline/debian/ wheezy nginx
deb-src http://nginx.org/packages/mainline/debian/ wheezy nginx

Debian 8

deb http://nginx.org/packages/mainline/debian/ jessie nginx
deb-src http://nginx.org/packages/mainline/debian/ jessie nginx

安装apt-get update && apt-get install nginx -y

配置

cd /etc/nginx/conf.d
cp default.conf hexo.conf
mv default.conf{,_`date +%F`}
nano hexo.conf

### 内容 ###

server {
 index index.html index.htm;
 server_name google.com;
 root /home/www;

 location / {
     try_files $uri $uri/ /index.html;
    }
}

重启service nginx restart

hexo 本地环境

初始化环境

cd
npm install hexo -g
hexo init hexo(hexo 可指定路径)
cd hexo
hexo g && hexo s

打开浏览器 http://127.0.0.1:4000 即可看到本地浏览。

推送工具(必备)npm install hexo-deployer-git -save

修改主题,实时预览npm install hexo-browsersync --save

推送参数

deploy:
  type: git
  repository: git@主机IP:hexo.git
  branch: master

清理、编译、推送hexo clean && hexo g && hexo d

同时推送 VPS & Github

deploy:
 - type: git
   repository: git@github.com:bpplpp/bpplpp.github.io.git
   branch: master
 - type: git
   repository: git@主机IP:hexo.git
   branch: master

服务器安全

禁止 git shell 登陆nano /etc/passwd

git:x:1000:1000:,,,:/home/git:/bin/bash
修改
git:x:1000:1000:,,,:/home/git:/wp-content/bin/git-shell

问题集

ssh: connect to host xx.xx.xx.xx port 22: Connection refused
因改过SSH端口ssh: Could not resolve hostname xx.xx.xx.xx:123: Name or service not known

解决:

Windows:C:\Users\Administrator\.ssh\
Linux:/home/git/.ssh/
在两个.ssh 目录创建文件 config 内容:

Host 服务器
Port 端口

WordPress 迁移 Ghost

文章

1. WordPress 安装插件:Ghost
2. 在 Ghost 插件里导出 Download Ghost File,自动下载 wp2ghost_export_xxx.json 文件
3. 然后再 Ghost 博客后台 - Labs - Import - 导入文件,大约 2 分钟完成

评论

1. WordPress 安装插件 Disqus Comment System
2. 登陆账户,绑定网站
3. 再在该插件里切换到 Plugin Settings
4. Import and Export - Export comments to Disqus
5. 完成

图片

暂无找到合适办法。

Windows 批量下载七牛文件

准备

1. 下载 qshell.exe
http://developer.qiniu.com/code/v6/tool/qshell.html

2. 新建 qshell.conf

{
    "dest_dir" : "备份路径 C:/Users/Administrator/Desktop/qshell/qiniu_bak",
    "bucket" : "空间",
    "domain" : "二级域名",
    "access_key" : "七牛AKey",
    "secret_key" : "七牛SKey",
    "is_private" : false,     // 空间是否私有
    "prefix" : "",        // 指定前缀文件
    "suffix" : ""         // 指定后缀文件
}

下载七牛文件

1. 桌面新建文件夹 qshell ,再新建子文件夹 qiniu_bak
2. qshell 里有 qshell_windows_amd64.exe 和 qshell.conf
3. CMD: cd 到 qshell
4. 执行 qshell_windows_amd64 qdownload 10 qshell.conf

完成。