引子
网上有很多关于怎么把hexo部署到github上的教程,部署到虚拟服务器的也有一些。我是在腾讯的开发者社区看到了一个文章,照着他写的做的。在这里也记录一下。
hexo是一个基于markdown的个人博客工具,因为我觉得markdown挺好的,以前学过一点。以前也用过wordpress,觉得那东西做的是挺好看的,但是会花费不少的精力在找排版上面。而markdown就没有这个问题,主打一个记录,让记录回归记录的本质。所以选了hexo。当然可能有更优秀的工具,但我是新手,并不是很熟悉,有能用的就先用着。
安装前准备
- 虚拟服务器
- 安装必要的库
- 本地安装node和git
- 安装hexo包
以上是将hexo部署到虚拟服务器上的一些必备的东西。如果是github上,不需要虚拟服务器,但需要github的账号。
虚拟服务器
虚拟服务器的准备,如果要长期用,就要花钱了,短期是不用的,有一些体验的账号可以用,但是体验一般是一个月或三个月,很少有体验很久的。
要买服务器的话,其实有很多选择。国内的有腾讯云,阿里云,华为云,京东云等等,虽有一些差异,但总体来说,都那个样。不会的都不会。会的,都一样。我试用了一个月的腾讯云服务器,发现要想正常的访问,备案是必要的,因为试用的是国内的服务器,并没有香港的可以试用。
然后也我了解了一下备案的流程,服务器要租够满2个月还是3个月才能备案,备案还要有域名,备案前不需要建站,但需要明确建站的用途、域名、服务器。看了下个人备案的所需材料,还是挺麻烦的,我就放弃了。但是这时,我已经买了一个域名,不想浪费了,就又在别的地方买了一个香港的服务器。也不知道能用多久,先买了一年的。如果一年后觉得还可以,再续吧。
个人博客的话,流量不大,虚拟服务器的性能不用很好,带宽也是,2M其实就够用。内存也不用很大,这时一般选Linux系统,因为Windows server内存占用还是很大的。我因为以前用ubuntu用的我,所以选了ubuntu的系统。
安装必要的库
虚拟服务器(以后简称服务器)一般会给配上操作系统,但是软件包会比较少。在ubuntu里要做以下几个操作:(下面步骤比腾讯那里给的少了一些,可以结合我的说明去看原文)
- 创建git仓库
- 配置nginx
- 创建git钩子
创建git仓库
这里需要先安openssh,因为买的服务器一般都自带了这个组件,所以这步可以跳过。
创建一个博客用户,这是为了做隔离,防止黑客通过博客拿到系统权限。我不害怕这点,因为站小,也没啥东西,要是有技术能拿下博客,还能注入指令,那以我的技术根本防不住,所以就不给自己添麻烦了。所以我也跳过了这步,直接在root下面开干。
安装git,这是必需的,在终端中输入sudo apt install git-core
,因为我是直接在root里干的,所以可以省掉sudo。
创建hexo_static裸仓库。这个是必需的。
1 | sudo mkdir /var/repo/ |
同样,sudo在root账户下可省略。执行完以后,目录里会出现下面的这些文件。
配置nginx
nginx可以管理多个站点,如果只想用一个hexo可以改端口,或在服务器上做端口映射。
安装ngixn,apt install nginx
。
创建/var/www/hexo目录,用于Nginx托管,修改目录所有权和权限。
1 | sudo mkdir -p /var/www/hexo |
使用vim修改/etc/nginx/sites-enabled/default,使root指向hexo目录nano /etc/nginx/sites-enabled/default
找到server部分,修改如下内容root /var/www/hexo;
重启Nginx服务,使得改动生效service nginx restart
创建Git钩子
在之前创建的hexo_static裸仓库下有一个hooks文件夹,在其中创建一个名为post-receive的钩子文件:nano /var/repo/hexo_static.git/hooks/post-receive
在其中写入如下内容:
1 |
|
保存后退出
让该文件变为可执行文件chmod +x /var/repo/hexo_static.git/hooks/post-receive
本地安装git和node
git安装
git下载的时候有2个选项,安装版一免安装版。git for windows 下载
免安装版解压后是一个文件夹,里面有git-cmd.exe,可以直接运行。我个人喜欢这种免安的版本。
node.js安装
node.js下载链接
下载后一路下一步就可以了。
安装hexo包
在安完node以后,在git-cmd.exe里执行node -v
,能看到回显的版本号,软件基础就都有了。
还是在git-cmd.exe里执行npm install -g hexo-cli
,等待安装完成就行了。
安装成功后,可以通过hexo -version
查看hexo的版本。
初始化hexo
先创建一个存博客文件的文件夹,比如C:\blog,在git-cmd.exe里cd C:\blog,执行命令hexo init
稍等一会儿,在blog目录里可以看到一堆文件。
这里如果再执行hexo s
,在浏览器中输入 http://localhost:4000 就可以看到网站。
部署到服务器
安装部署工具
执行npm install hexo-deployer-git --save
安装部署用的工具。
修改_config.yml
用vscode打开blog目录,在里面找到_config.yml这个文件,修改deploy参数
1 | deploy: |
这里,看了几个介绍,都没有细说这块怎么写。通过查一些资料,发现了原理。
root@server_ip的root,就是用户名,前面创建的git钩子的所有者的用户名,
server_ip就是服务器的ip地址,域名也可以。这里默认是22端口的,如果是非22端口,
可以在本地计算机的.ssh目录里创建一个config文件,文件里写上下面的内容
1 | Host hostname |
配了上面这些,就可以省略端口,就用上面的repo的写法,如果不配这个,resp那里就需要带上端口。
这些可以从ssh免密登陆查到相关的说明。
部署到服务器
执行hexo deploy
,git会自动把项目传到服务器,中间可能会要输入服务器ssh的用户密码,
这里和ssh一样,密码是不回显的,输入的时候注意一下。
写博文
使用cmd定位到hexo blog的目录,执行hexo new "文章名称"
,系统会自动创建一个文章名称.md 的文件,使用VS Code这样的编辑器可以直接编辑文件,然后cmd输入hexo g
,hexo d
就可以发布到服务器上了。