作为一个网站站长应该了解的常识和小技巧

序言

工作中进行项目管理也好,自己建站也好,总会遇到一些问题,那么作为一个项目管理员或者说站长可以了解一下这些知识技能或者小技巧

建站工具

  • Hexo: 我个人的网站就是使用 Hexo 搭建的,它有丰富的主题仓库,对于我这种比较颜控的人,比较受用。
  • Hugo: 同事这边有使用过效果还不错, 而且还是用 Go 写的,我还没有尝试过,有机会可以尝试一下。

网站提速

网站访问速度慢是最初大家都会遇到的问题,这边就简单说下如何进行网站提速:

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

网站快速更新 & 自重启

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

  • 使用 Docker 进行项目打包,Dockerfile 示例:
FROM nginx
COPY nginx.conf /etc/nginx/conf.d/nginx.conf
COPY public/ /usr/share/nginx/html/
CMD [ "nginx", "-g", "daemon off;" ]
  • 使用 Makefile 配合 Docker 进行镜像推送:
.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

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 进行部署:
.PHONY: update
update:
        @docker-compose pull && docker-compose down && docker-compose rm && docker-compose up -d
  • 当然如果你 CICD 玩的很 6,而且有自己的 Gitlab 那肯定可以更舒服。

网站运维的一些小技巧

  • 删除冗余的镜像:网站运行的久了,总会多出很多 tag<none> 的镜像,占用磁盘容量还没什么作用,可以使用如下命令进行批量删除:
docker rmi -f  `docker images | grep '<none>' | awk '{print $3}'`
  • 删除多余 PodK8s 运行的久了也会有很多 StatusEvictedPod,占用磁盘,可以使用如下命令进行批量删除:
kubectl get pods -n < your namespace > | grep Evicted | awk {'print $1'} | xargs kubectl delete pod -n < your namespace >
  • 证书过期:推荐使用 MySSL 企业版的监控管理,网站证书过期微信通知,站长福音:

image

  • Nginx 自启:服务器因为 CPU 满了等原因导致重启也是很多人都遇到的问题,可以 Nginx 设为开机自启,推荐使用 chkconfig