如何把hexo搭建的博客发布到自己的云服务器,包含部署https
本文将介绍如何把自己搭建的hexo发布到云服务器上
购买云服务器、域名以及ICP备案
想要部署hexo博客,有一台具有公网ip的云服务器是必须的。
如果想要别人能够方便的访问你的博客,还需要申请一个域名。
如果你希望你的博客能够在大陆地区被正常访问,那么还需要进行ICP备案。
以上三者作为前置条件,本文不做赘述,请自行上网搜索相关教程。
在云服务器上配置好ssh公钥登录
在你希望使用的账户的~目录下的.ssh文件夹中,创建authorized_keys文件,将你的公钥复制进去。注意公钥是一行一个。然后把这个文件的权限改为600。
1 | chmod 600 authorized_keys |
这样就可以进行ssh公钥登录了。
可以尝试使用ssh命令登录一下,如果没叫你输密码,那么就可以进行下一步了。
安装Nginx
和git
ubuntu和debian系列执行
1 | sudo apt install nginx git |
centos系列执行
1 | sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm |
如果你显示安装不了nginx,可以选择使用下载源码进行编译的方式,具体如下:
1 | mkdir -p /usr/local/nginx |
然后将 /usr/local/nginx/sbin
添加到环境变量中,这样就可以使用nginx
命令了。
具体方法如下:
1 | echo 'export PATH=$PATH:/usr/local/nginx/sbin' >> /etc/profile |
就可以了。
然后使用nginx -V
查看版本号,如果显示版本号,那么就安装成功了。
接下来配置 systemctl
来使nginx开机自启动
1 | vim /usr/lib/systemd/system/nginx.service |
在里面输入
1 | [Unit] |
然后保存退出,执行
1 | systemctl enable nginx.service |
接下来使用命令
1 | systemctl status nginx.service |
查看nginx的状态,如果显示active,那么就安装成功了。
在服务器端创建git仓库
1 | mkdir /var/repo/ |
这里我们选择把仓库建立在 /var/repo/
下面,你也可以选在自己的路径
然后修改权限
1 | chown -R $USER:$USER /var/repo/ |
创建远程的git仓库
1 | cd /var/repo/ |
这里和hexo
也可以改成你喜欢的名字
配置http下的nginx
创建托管的地址
1 | mkdir -p /var/www/hexo |
此时选择在 /var/www/hexo
下面进行托管
输入
1 | nginx -t |
查看配置文件的路径然后修改配置文件,在http那个大括号下面写入:
1 | server { |
然后输入
1 | sudo systemctl restart nginx.service |
测试一下是不是真的配置好了,建立一个文件 /var/www/hexo/index.html
输入
1 | <html> |
在云服务器提供商那里打开防火墙,在你本地使用 {服务器ip}:80
的方式查看,出现了正确的网页表示成功
创建git hook一键部署
1 | vim /var/repo/hexo.git/hooks/post-receive |
在文件中写入
1 |
|
保存后更改权限
1 | chmod +x /var/repo/hexo.git/hooks/post-receive |
检查远程git仓库配置是否正确
记得把下面的USER换成你自己的用户名
1 | git clone USER@{云服务器IP}:/var/repo/hexo.git |
克隆成功就ok了
部署本地的hexo博客到远程
在本地的 _config.yml
的最后,改成下面这个样子
1 | deploy: |
第二个部分如果你没有配置 github pages
可以不用管
然后使用
1 | hexo g |
部署,如果能够通过 {云服务器ip}:80
访问成功,就大功告成了
配置域名解析
在域名注册商那里加一条A记录,指向你的服务器ip,然后测试域名访问
在博客底端悬挂ICP备案号
这里我使用的是butterfly
主题,悬挂的方法可以是在butterfly
的主题配置文件里面的Footer Settings配置成如下样式
1 | # Footer Settings |
配置https
如果你以上都成功了,那么就可以考虑配置一下https了。这里给出一种使用 let's encrypt
申请免费证书的方法
安装 certbot
输入
1 | yum install certbot |
一键安装
使用 certbot
申请证书
输入
1 | sudo certbot certonly -d your_domain --manual --preferred-challenges dns |
进行申请,注意替换你的 your_domain
,然后按照提示,输入邮箱,再添加一条TXT记录,指向它给你的值,然后回车。
配置nginx为https
在配置文件里面,添加一下内容:
1 | server { |
重新使用命令
1 | sudo systemctl restart nginx.service |
就可以了