hexo建博客
因为有一个闲置云服务器,想用来建个博客。大部分人建立网站使用的是wordpress,但感觉有点功(hua)能(li)丰(hu)富(shao),只想做一个简单的博客,所以选择了hexo。
其实网上一大堆的用hexo建站的教程,大多数是使用github配合的。没用github的也是在服务器建一个git仓库,感觉有点麻烦。
首先了解一下hexo使用git的简单流程
在本地创建hexo环境,设置好后在本地创建博客,然后同步到git仓库,再转到网址目录。
流程有点奇怪,希望能在本地写文章,然后传到网址目录下,所以直接使用scp去实现。
环境安装
在本地只需要编写markdown文章,所以只需要markdown编辑器就行,我使用的是vscode,因为带终端。
在服务器,需要安装hexo,安装文档参考 https://hexo.io/zh-cn/docs/
需要先安装git和node.js,我服务器是centos,使用以下命令
1 | # 安装git |
然后使用npm安装
1 | $ npm install -g hexo-cli |
创建
选择想要建站的文件夹位置,执行以下命令:
1 | $ hexo init <folder> |
执行完后,文件夹目录如下:
1 | . |
一些网站的配置文件可直接参考 https://hexo.io/zh-cn/docs/configuration ,按照自己喜欢即可。
输入hexo g
生成静态网页,输入hexo s
即可运行,但是毕竟放在服务器上,hexo在后台运行也访问不了,需要配置使用域名访问。
想要配置直接从域名访问博客,需要配置nginx。本人使用的是宝塔,直接新增站点,根目录选择sitefoler/public/
。
有个坑,以上设置完后一直显示403 forbidden
,后来通过hexo s -p 1234 &
让其在后台运行,然后使用反向代理将1234
端口代理到$host
,这样可以成功访问,但感觉太麻烦了。删除反向代理后,查看错误日志,显示
1 | "sitefolder/public/index.php" is forbidden (13: Permission denied), |
输入
1 | ps aux | grep "nginx: worker process" | awk '{print $1}' |
显示
1 | www |
原因是启动用户和nginx工作用户不一致,修改nginx的配置文件(宝塔可直接在nginx管理处修改配置,或者在/www/server/nginx/conf/nginx.conf
处修改),将usr
修改为user
,改完后重启nginx
1 | nginx -t |
连接
之前说过是在本地写文章,然后通过scp传到云服务器的网站文件夹里。
首先配置ssh
在本地运行
1 | ssh-keygen -t rsa -C "user" |
之后一直回车,如果保存文件时报错,可能需要输入别的文件名(如hexo_rsa)
这会在~/.ssh
文件夹下生成私钥id_rsa
(或之前输入的文件名)和对应的公钥id_rsa.pub
在服务器上
1 | cd ~ |
将本地公钥里的内容复制到authorized_keys
里。
成功的标志,运行以下命令能不输入密码直接登录。
1 | ssh user@targetip |
PS:不成功可以尝试修改.ssh
和authorized_keys
的权限
1 | chmod 700 .ssh |
然后需要将写好的文章传到服务器的文件夹中,我使用的scp
,命令格式为:
1 | scp sourcefile user@targetip:targetfolder |
sourcefile:在本地写的markdown文件
targetfolder:网站所在文件夹/source/_posts/
因为每次写完文章后都得scp一次,可以将其写成脚本。
1 |
|
$1
:输入的参数,可以选择需要传过去的文件
sitefolder:网站所在文件夹
用法:./push.sh sourcefile
。需要添加push.sh
的运行权限。
以上只是将文件传了过去,想要在服务器上显示还需要使用hexo g
生成动态页面
每次都手动hexo g
比较麻烦,可以输入以下命令,让hexo在后台自动监控文件的变化。
1 | sudo hexo g --watch & |