服务器搭建静态博客
在服务器上搭建静态博客
背景
之前在服务器上搭建了基于Halo
的动态博客系统,可以通过网页后台,方便进行博客写作和管理。但苦于资金有限,服务器性能一般,服务器除了要处理访问,还要挂着守护进程。于是就希望能有适于低性能服务器的解决方案。
同时,自己一直通过GithubPage
托管一部分博客,一直没能统一部署,所以希望能够寻求到能够同时部署到服务器和github.io的方案。
这几天发现一个关于此的专栏(见文末引用),于是跟着步骤做了一遍。所以此篇为备忘。
停用Halo
先ssh连接到服务器,停用Halo
的守护进程
systemctl disable halo
systemctl stop halo
配置静态资源
首先将已经托管在GithubPage
的仓库克隆到nginx
的默认静态资源目录/var/www/html
cd /var/www/html
git clone xxxxx
修改nginx的配置文件,将刚刚克隆的资源目录添加为root字段的值
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html/xxx.github.io;
测试静态资源
在浏览器输入服务器的ip和端口号(一般为80,就是nginx配置文件中的)
xxx.xxx.xxx.xxx:80
如果成功加载网页,就说明之前的配置成功。
但现在无法使用之前的配置进行域名访问
。只需要将之前在/etc/nginx/config.d/
下的配置文件(这是Ubuntu的nginx目录,红帽系的可能有所不同)里有root字段的目录也改为和上文nginx配置文件里的一样的就好。(Halo原来的配置为通过代理监听Halo的端口。)
至此,已经可以通过域名访问从github克隆到服务器的静态资源了。
配置同时部署
如果想将本地机里的静态资源同时部署到github和服务器的话,就需要在服务器也创建一个git仓库,并在本地机里将hexo根目录下配置文件里的deploy项进行修改。
创建仓库
首先创建一个git用户,用m选项添加家目录,并将其加入root用户组
useradd git -m -G root
进入git的家目录并创建裸仓库hexo.git
,并将仓库所有者和组权限进行修改
cd /home/git/
git init --bare hexo.git
chown -R git:git hexo.git
cd /var/www/html/
chown -R git:git xxx.github.io
配置仓库储存位置,在配置文件 /home/git/hexo.git/hooks/post-receive
中写入如下内容:
#!/bin/sh
git --work-tree=/var/www/html/xxx.github.io --git-dir=/home/git/hexo.git checkout -f
保存之后,为该文件添加可执行权限
chmod +x post-receive
这样,一会儿部署的静态资源就会储存到nginx的默认静态资源目录(见前文)。
除此,为了在部署时免除密码,需要将本地机的ssh公钥导入git家目录下的~/.ssh/authorized_keys
文件中。(如果在root或默认目录下有,也可以复制一份)。
配置本地机部署
编辑本地机的Hexo根目录下的配置文件(_config.yml
),修改deploy
的内容:
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: git
repo:
github: git@github.com:your_github_name/your_github_name.github.io.git,main
hexo: git@your_server_ip:/home/git/hexo.git,master
至此,使用hexo d
就可以同时部署到GithubPage和自己的服务器上了!
References: