用Github搭建自己的博客(发布到自己的服务器) 编辑
博客
此博客基于Hacker-Blog theme 修改而来,Forked from pages-themes/hacker
博客地址: https://blog.hpanpan.cc
目前没有采用GitHub的Pages服务,而是利用Actions自动编译后发布到Google Cloud服务器
发布文章 (提交到Master分支)
在_posts/
文件夹内创建md文件即可
文件名格式:yyyy-mm-dd-title.md
文章内容内容如下:
---
layout: post
title: 文章标题,不写会默认使用文件名称
category : Comic 文章分类
tags : Linux 前端 文章Tag
stickie: true 置顶
seo_keywords: seo
seo_description: seo
---
xxxx 文章内容
配置文件_config.yml
参考 http://jekyllcn.com/docs/configuration/
单页面
可参考 about.md
模板,
布局文件
Footer: _includes/footer.html
Header: _includes/header.html
头部导航条: _includes/links.html
网站head部分: Edit _includes/head.html
默认布局页: Edit _layouts/default.html
文章详情布局页: Edit _layouts/post.html
CSS
Site wide CSS: Edit _sass/base.scss
Custom CSS: Make _sass/custom.scss
and use it. Then add @import "custom";
to css/main.scss
404 page
Edit 404.md
使用GitHub Pages服务时只需要建个404.md的文件就好
但是发布到自己服务器之后需要自己在nginx配置404页面,下面是本网站的Nginx配置:
server {
listen 443 ssl;
server_name blog.hpanpan.cc;
proxy_set_header Host $host;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header 'Access-Control-Allow-Credentials' 'true';
ssl_certificate_key /home/xxx/hpanpan.cc.key;
ssl_certificate /home/xxx/hpanpan.cc.pem;
location / {
root /home/hanpanpan92/wwwroot/blog;
index index.html index.htm;
}
error_page 404 403 500 502 503 504 /404.html;
location = /404.html {
root /home/hanpanpan92/wwwroot/blog;# 放404页面的目录
}
}
server {
listen 80;
server_name blog.hpanpan.cc;
rewrite ^(.*)$ https://blog.hpanpan.cc;
}
自定义编译流水线Actions,实现发布到自己的服务器
name: Jekyll MySite CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build the site in the jekyll/builder container
run: |
docker run \
-v $:/srv/jekyll -v $/_site:/srv/jekyll/_site \
jekyll/builder:latest /bin/bash -c "chmod -R 777 /srv/jekyll && jekyll build --future"
# Deploy
- name: Show Dir
run: pwd && ls
- name: Deploy
uses: easingthemes/ssh-deploy@v2.0.7
env:
SSH_PRIVATE_KEY: $
ARGS: "-avz"
SOURCE: "_site/"
REMOTE_HOST: $
REMOTE_USER: root
TARGET: /home/hanpanpan92/wwwroot/blog
上面的代码中的 secrets.ACCESS_TOKEN 是需要在自己服务器生成秘钥,然后添加到github项目仓库的设置中,具体:在项目目录下点击“setting”,左侧菜单中点击“secrets” 然后新增一个秘钥
在自己服务器上生成(RSA格式)秘钥:
ssh-keygen -m PEM -t rsa -b 4096
不要用 :ssh-keygen -o 因为它生成的格式是OpenSSH,而github需要的RSA格式
生成秘钥后执行: cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
在把 id_rsa
中的内容填到github的ACCESS_TOKEN那就可以了
至于为啥需要RSA格式的秘钥,是因为发布到服务器时用的这个插件 easingthemes/ssh-deploy ,它的主页也有说明
注意事项
域名服务商dynadot 提供了免费SSL ,提供的证书是cer格式,Nginx需要用pem格式,需要转换一下: 建议使用Google Shell 操作,因为Google Shell 里默认安装了openssl需要的环境,操作比较方便
openssl x509 -inform der -in demo.cer -out demo.pem
关于 SSL证书到期后更换问题:
今天是2020.1.4,之前的 dynadot证书虽然能一直免费使用,但每三个月要手动更换一次,今天在使用上面的转换命令时发生了如下错误:
还不知道怎么回事,但发现个超级简单的方式,可以吧xxxx.cert格式的证书转成nginx需要的pem格式,就是使用mac电脑自带的导出功能,下载cert格式证书后用mac默认的钥匙串打开,找到自己的证书后导出pem格式即可如下:
注意:证书更换完后,需要重启nginx,新证书才能生效 !!!
博客服务器配置
域名服务商:https://www.dynadot.com/
注册邮箱:hanpanpan92@gmail.com
登录账号:hanpanpan92
域名到期时间:2022/07/12
服务器:Google Cloud IP:34.92.198.141
服务器到期时间:2022-01-01 记得调整Google Cloud 免费使用方案
参考文档
使用GithubActions自动部署应用到自己的服务器(ECS) 使用GithubActions自动部署应用到自己的服务器(ECS)