梅林固件安装hexo个人网站并配置cloudflare前置

这次网站翻新花的时间不比上次少,cloudflare真的是太复杂了,怎么折腾都无止境
这次的主要目标是把个人网站搬到路由器上,以省去国外VPS的成本
(谁让我的racknerd主机快到期了,网络还拉跨不想续费呢)
路由器建网站的经验网上比较少,大多数人买到高档路由器都是建个人云,
建网站不一样的地方是,它需要被多数人访问,需要针对网络流量做很多优化调整。

这里我记录一下这次的建设过程

梅林固件安装nginx

1.买个高速的u盘

现在u盘是真便宜了,128G这个档(100元左右成本)
闪迪CZ74>金士顿海DTKN>康威视X307C>其它
我个人买的是闪迪CZ74

2.安装虚拟内存和entware

u盘格式化成ext4格式,正常web界面安装这俩插件即可

3.装个编辑器vim或者nano
opkg install vim-full

默认安装问题:E1187: Failed to source defaults.vim
需要一个自启用户脚本,将缺少的/root/.vimrc生成
代码是这么一段,怎么加到启动里得查梅林文档,目前我还没搞懂

cp /opt/share/vim/vimrc /jffs/configs/vimrc
ln -s /jffs/configs/vimrc /root/.vimrc
4.安装并配置nginx
okpg install nginx

按照debian的习惯,默认的/opt/etc/nginx/nginx.conf可以拆开两个

(1)参数配置

## /opt/etc/nginx/nginx.conf

user nobody;
worker_processes  1;

#error_log  /opt/var/log/nginx/error.log;
#error_log  /opt/var/log/nginx/error.log  notice;
#error_log  /opt/var/log/nginx/error.log  info;

#pid        /opt/var/run/nginx.pid;


events {
    worker_connections  64;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  /opt/var/log/nginx/access.log main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    gzip  on;

    ##
    # Virtual Host Configs
    ##

    include /opt/etc/nginx/site.d/*;
}

个人家庭动态网络,80\443\8080端口全会被封,
所以nginx起一个加密端口即可,假设是7553

(2)网站配置

## /opt/etc/nginx/site.d/donneryst

# SSL certificate and key configuration shared by both server blocks
ssl_certificate /opt/etc/ssl/certs/fullchain.pem;
ssl_certificate_key /opt/etc/ssl/private/privkey.pem;

# Default server configuration

server {
    listen 7553 ssl;
    listen [::]:7553 ssl;
    http2 on;
    server_name donneryst.com www.donneryst.com;

    root /opt/var/www/html;
    index index.html index.htm index.nginx-debian.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

这里的证书fullchain.pem与privkey.pem后面会由cloudflare生成,不用走letsencrypt
到这里nginx基本就配置好了

5.上传网站

这里我传到了/opt/var/www/html,需要注意的是文件权限,文件全部644,文件夹全部755

# 修改目录权限为 755
find /opt/var/www/html -type d -exec chmod 755 {} \;

# 修改文件权限为 644
find /opt/var/www/html -type f -exec chmod 644 {} \;

域名与cloudflare配置

网上说的cname接入我完全搞不定,不知道是否还有效,以下是单域名的接入配置

1.配置主域名的解析服务器到Cloudflare

添加 - 现有域,然后按照提示配置原dns服务商的解析服务器

2.DNS配置

(1)主域名和www域名的CNAME都配到路由器动态域名donneryst.asuscomm.com,开启小黄云
(2)开启DNSSEC
(3)_acme-chanllege的CNAME按照TLS设置里的要求配置

3.SSL/TLS配置

(1)概述,我配为:完全(严格)
(2)边缘证书,在用户与cloudflare之间,cloudflare会自己生成两个并且自主更新
(3)源服务器证书,在cloudflare与主机之间,需要在cloudflare生成后,下载下来配置给梅林里的nginx
(4)自定义主机名,留空,这里我怎么配置都无法得到加速,靠CNAME接入cloudflare优选节点大法疑似已失效

4.速度配置 - 优化

所有可用设置启用

5.规则(这是重点)

新建Origin Rule,条件是SSL/HTTPS等于true,操作是 重写 端口 收件人 7553

评论系统

waline这次装到leanCloud上了,云端服务比本地靠谱多了
照着官方手册来:https://waline.js.org/guide/get-started/

1.注册国际版leanCloud并创建应用

这一步就是为了拿到APP ID, APP Key 和 Master Key

2.访问https://vercel.com/,并用github账户登录,创建一个project

名称随便起,我就叫waline

3.进入dashboard,设置环境变量

(Settings - Environment Variables)
配置三个环境变量 LEAN_ID, LEAN_KEY 和 LEAN_MASTER_KEY。
它们的值分别对应上一步在 LeanCloud 中获得的 APP ID, APP KEY, Master Key

4.重新部署

(Redeploy)

5.绑定域名

在Vercel侧配置(Settings - Domains)
waline.donneryst.com

在cloudflare的DNS侧配置

CNAME	waline.donneryst.com	cname.vercel-dns.com
6.访问并登录

评论系统:waline.donneryst.com
评论管理:waline.donneryst.com/ui
默认管理员用户是github登录的vercel用户

hexo网站的rsync部署

1.客户端安装cwrsync

本地Windows环境需要安装cwrsync,配置bin目录进PATH,并卸载windows默认ssh

2.服务器端需要安装rsync
okpg install rsync
3.配置文件需要指定私钥路径
deploy:  
  type: rsync
  host: donneryst.asuscomm.com
  user: admin
  root: /opt/var/www/html/blog
  port: 22
  delete: true
  progress: false
  args: --chown=admin:root --chmod=D755,F644
  key: C:\Users\jhpx\.ssh\id_rsa
  verbose: true
  ignore_errors: false

以上配置需要修改 hexo-deployer-rsync\lib\deployer.js的源码

if (args.args) params.unshift(args.args);
改为
if (args.args) params.unshift(...args.args.split(' '));

已经给hexo-deployer-rsync官方提了个pull_request,已经同意,下一版本应该会合并进主分支