gitpages 是结合 git 服务操作的 web 网页托管平台。通过 git 提交再结合 git hook 脚本就能很好的将提交的文件上传到web服务虚拟目录里。但是 Github、Netlify、Coding 等已经提供了免费 gitpages 服务,为什么还要自己在 vps 上折腾搭建 gitpages 呢?因为这些服务商提供的 gitpages 是有限制的,比如空间容量相对较小、对动态网页支持不完善或者没有、访问速度较慢等。那么自建的 gitpages 的优势就显现出来了。下面就介绍怎么一步步搭建该服务。
¶1. 搭建 git 服务器仓库
¶1)安装 git
1 | apt install -y git |
接下来我们创建一个git用户组和用户,用来运行git服务:
1 | #创建git用户组 |
¶2)配置 ssh 秘钥登录
收集所有需要登录的用户的公钥,公钥位于id_rsa.pub文件中,把我们的公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
如果没有该文件创建它:
1 | mkdir -p /home/git/.ssh |
配置客户端的 ssh key 到服务端中,操作如下:
1 | #copy客户端的秘钥到vps的/home/git/.ssh/authorized_keys |
¶3)创建 git 仓库
1 | mkdir -p /opt/blog/git |
1 |
|
1 | chown -R git:git /opt/blog/git && chgrp -R git /opt/blog/git && chmod -R 755 /opt/blog/git |
¶4)其他方式搭建 git 服务器仓库
以上方式是通过 git 原始支持的方式搭建 git 服务器仓库,此外还可以通过搭建开源的 git 仓库托管平台(如:Gitlab、Gogs 等)来创建服务器仓库,其使用体验会更好。
对于在 Gogs 中使用 Git 钩子来部署网站,则操作如下(设 Gogs 是通过 Docker 安装的):
1 | docker exec -it gogs bash |
可在 Gogs 后台面板中的对应仓库,并找到“管理 Git 钩子”,修改 post-receive,内容如下:
1 |
|
提示:以上的
/data/git/gogs-repositories/qcmoke/myblog.git是对应仓库在 Gogs 容器中的路径,其中/data/git/gogs-repositories是固定的,而/qcmoke/myblog.git则需根据自己的情况进行修改。
¶2. 搭建 web 服务
需要安装好nginx,可以参考我的另一篇文章《nginx学习笔记》。
这里已经提前通过编译安装的方式把nginx安装到了/opt/nginx目录,然后只需配置nginx即可。
1 | vim /opt/nginx/conf/conf.d/blog.conf |
1 | server { |
1 | #启动nginx(如果没有启动的话) |
¶3. 配置 https 服务
使用 https 就需要配置 SSL 证书 ,SSL证书有免费的和付费的,这里使用的是免费的 Let’ s Encrypt SSL证书。
具体操作参考《通过certbot工具生成ssl证书》。参考该教程使用 certbot 工具通过HTTP 验证模式申请签发多域名证书。
配置nginx web服务
1 | vim /opt/nginx/conf/conf.d/blog.conf |
需求:
http://example.com、http://www.example.com、https://example.com都重定向到https://www.example.com,并且图片都能压缩传输。
1 | server { |
重载配置
1 | nginx -s reload |
¶4. 测试
客户机
1 | git clone [email protected]:/opt/blog/git/blog.git |
之后浏览器访问http://example.com就能访问到push到服务器的index.html页面了。
📚 参考
