hexo+git重建博客(整理)
本地搭建Hexo环境
windows 本地安装git和nodejs
用git bash运行,安装hexo-cli:
1 | npm install -g hexo-cli |
初始化hexo,比如我要在~/blog下搭建博客
1 | cd ~ |
之后继续安装hexo-deployer-git和hexo-server,一个用于git自动部署,一个用于本地简单的服务器。第三个是butterfly主题要用到的。
1 | npm install hexo-deployer-git --save |
执行:
hexo g #或者hexo generate
hexo s #或者hexo server
就可以访问http://localhost:4000看到博客了。
然后,安装和部署了butterfly主题。
服务器部分
安装和设置git账户
#登录服务器
#安装git
1 | yum install git |
#新建用户,设置密码
1 | useradd -m git |
赋与sudo权限:
1 | chmod -v u+w /etc/sudoers |
#找到allow root to run any commands anywhere添加:
1 | git ALL=(ALL) ALL |
#改回权限
1 | chmod -v u-w /etc/sudoers |
#更改git文件夹权限:
1 | cd /home chmod -R 755 git |
#切换用户
1 | su git |
#建立博客文件夹
1 | cd ~ mkdir blog |
安装和设置nginx
生成静态文件,提供给Nginx静态资源
安装nginx
1 | sudo yum install -y nginx |
配置server:
1 | sudo vim /etc/nginx/nginx.conf |
http块的server部分root后值修改为:
/home/git/blog
启动Nginx
1 | sudo service nginx start |
自动化部署
自动化部署就是可以不用在服务器上执行操作,只要本地 git 推送上去,服务器就会通过git hooks 自动把内容同步到网站根目录【/home/git/blog】。
ssh登录设置
为了以后每次发布时不用输入密码,复制公钥到服务器,下面这个命令就是把公钥内容读入剪贴板。在git bash中输入:
1 | clip < ~/.ssh/id_rsa.pub |
登录服务器git用户,添加公钥后记得要赋予文件相应权限:
1 | su git |
#粘贴然后保存
1 | chmod 600 ~/.ssh/authorized_keys |
在自己电脑终端输入ssh git@120.XX.XX.XX,验证是否配置好ssh登录。
配置hooks。
接着上一步(git用户~目录),在服务器上创建一个裸仓库
1 | cd /home/git |
然后,
1 | vim ~/blog.git/hooks/post-receive |
写入以下内容保存
1 | #!/bin/sh |
再赋予它权限
1 | chmod +x post-receive |
本地打开_config.yml,最后面的deploy修改为:
1 | deploy: |
试试能不能自动部署
1 | hexo clean && hexo g --deploy |
以上步骤仅将本地blog/public文件夹中的内容上传到云服务器。
大工告成!
总结一下:通过以上方式,可以在本地写博客以及测试,然后通过上面的deploy,一条代码直接部署到云服务器。即在本地的blog/source/_posts中写.md的文章,然后通过–deploy同步到远程分支/home/git/blog.git,之后通过hooks的设置同步到/home/git/blog,而这个文件夹及nginx server中设置的文件目录。