website-小技巧

描述

分享一些对自己站点管理的一些小技巧

建站工具

  • Hexo: 我之前的博客就是使用 Hexo 搭建的,它有丰富的主题仓库,对于我这种比较颜控的人,比较受用。
  • Hugo: 当前博客使用 Hugo 写的,之前的 Github 账号由于换手机丢了双因素,导致博客代码也丢了,就尝试了一下 Hugo

网站提速

  • 静态资源选择:图片尽量选用 JPG 格式,PNG 格式的图片普遍要比 JPG 格式的图片大很多。
  • 静态资源压缩:过大的资源加载会非常耗时,影响网站渲染的速度,可以压缩一下,用tinypng或者compress都可以,既不降低清晰度,又能压缩大小。
  • 静态资源转发:可以去申请一个七牛云账号,使用七牛云的对象存储配合 CDN 加速,既拥有了图片云存储,又拥有了资源加速,一箭双雕。

网站快速更新 & 自重启

一个舒服的网站管理环境能提高网站运营的生活幸福感

  • 使用 Docker 进行项目打包,Dockerfile 示例
1
2
3
4
FROM nginx
COPY ../../../nginx.conf /etc/nginx/conf.d/nginx.conf
COPY ../../../public /usr/share/nginx/html/
CMD [ "nginx", "-g", "daemon off;" ]
  • 使用 Makefile 配合 Docker 进行镜像推送
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    .PHONY: server build version

    registry=example.registry
    version=`git describe --tags`

    server:
    @hexo clean \
    && hexo g \
    && hexo s

    version:
    @echo "build new version..." \
    && standard-version \
    && git push --follow-tags origin master

    deployment: version
    @echo "build docker image for origin ..." \
    && hexo clean \
    && hexo g \
    && docker build -t $(registry)/allens-blog/blog:$(version) . \
    && sudo docker push $(registry)/allens-blog/blog:$(version)
  • SSL 证书:证书只需要在 Docker Compose 里把服务器本地的 Nginx 目录映射打牌 Docker 里面就可以了 , 添加 restart: always 挂掉就会自动重启。

    其实可以把证书和私钥一起打包到镜像里面,但是这样就没办法使用 ACME 去维护了,而且把私钥托管到代码里着实有点不太安全,哪怕仓库是私有的,所以建议使用挂载的方式,然后在服务器上装个 ACME。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    version: '3'
    services:
    backend:
    image: example.registry/allens-blog/blog:v0.0.59
    restart: always
    ports:
    - 80:80
    - 443:443
    volumes:
    - /etc/nginx:/etc/nginx
  • 服务器使用 Makefile 进行部署
    1
    2
    3
    .PHONY: update
    update:
    @docker-compose pull && docker-compose down && docker-compose rm && docker-compose up -d

    当然如果你 CICD 玩的很 6,而且有自己的 Gitlab 那肯定可以更舒服。

网站运维的一些小技巧

  • 删除冗余的镜像:网站运行的久了,总会多出很多 tag 为 的镜像,占用磁盘容量还没什么作用,可以使用如下命令进行批量删除
    1
    docker rmi -f  `docker images | grep '<none>' | awk '{print $3}'`
  • 删除多余 Pod:K8s 运行的久了也会有很多 Status 为 Evicted 的 Pod,占用磁盘,可以使用如下命令进行批量删除
    1
    kubectl get pods -n < your namespace > | grep Evicted | awk {'print $1'} | xargs kubectl delete pod -n < your namespace >
  • 证书过期:可以使用 MySSL 企业版的监控管理,网站证书过期微信通知
  • Nginx 自启:服务器因为 CPU 满了等原因导致重启也是很多人都遇到的问题,可以 Nginx 设为开机自启,推荐使用 chkconfig)

website-小技巧
https://agopher.com/2020/09/25/tech/2020-website/
作者
冷宇生(Allen)
发布于
2020年9月25日
许可协议