博客从几年前开始就一直有的没的写着,近一年来更一篇都没更新……
博客由几个平台、个人服务间来回了几次,图片都丢失得差不多了,最后的都在lofter
里,它估计也差不多到了寿终正寝的时刻,竟然没了“导出”功能,估计过两天要一篇的移过来了。
目前在hexo
里,今天花一整天的时间去研究如何直接发布到“阿里云”的服务器里去
废话少说
先说下操作思路:
- 在本地安装
hexo
- 在服务端(阿里云)安装
git
- …… 本地执行
hexo d
的时候,直接通过git
自行push
到服务器hexo
仓库(文件夹)- 再由上述“中介”推送到
hexo
站点文件夹- 通过
Nginx
配置站点,也可以用Apache
等。这有两个目的,一是配置站点,另一个是绑定域名,可被外部访问到。
1、本地安装 hexo
安装教程
根据上面的官方教程,可以很简单的安装完,具体操作和 hexo
的操作方法我就不说了,网上的教程非常多。
2、服务端需要 Git
这也不说了,度娘能解决……
相对于网上的教程,唯一比较想说的,别单独创建用户——专门给 git
专用……
别管这样的建议,到需要考虑这些内容的时候,你大概率不需要这些知识。
所以当 git --varsion
能操作的时候(显示出版本号,没报 command not found
),就证明你已经可以在服务端用 git
。
3、这部分在服务端操作
接下来同样在服务端(阿里云)上,建两个文件夹,这是为了区分 git
作业文件,和 hexo
站点文件。
如,希望放 hexo
的路径里是:/var/www/blog
那请操作:
$ mkdir /var/www/blog #新建文件夹,放 hexo 站点
$ mkdir /var/www/repo #新建文件夹,存放 git 文件(git 仓库)
$ cd /var/www/repo #进入刚后创建的 repo 文件夹
$ git init --bare blog.git #初始化 git 仓库
$ cd blog.git/hooks #初始化 git 仓库
vim post-receive #创建一个文件且打开
post-receive
作为个“勾子”,作用是告诉 git
当下面有更新上来时,把文件直接推到 hexo
文件夹里去。现在粘贴些内容:
#!/bin/sh
git --work-tree=/var/www/blog --git-dir=/var/www/repo/blog.git checkout -f
上述代码的前面路径是你放
hexo
站点路径,后面路径是刚才创建的放git
地址
退出 vim
把上面的代码粘贴进去后,按
esc
(就是键盘左上角),然后输入:wq
,再按回车,即可退出vim
下面我们需要给刚才的文件添加可执行权限:
chmod +x post-receive # 添加可执行权限
测试
在本机上制作:
git clone root@服务器IP:/var/www/repo/blog.git
如果能拉下来就表示 OK
4、Nginx 创建站点
安装找度娘……
vim /etc/nginx/conf.d/blog.conf
添加如下代码:
server {
listen 80;
server_name 域名1, 域名2;
location / {
root /var/www/blog;
index index.html index.htm;
}
}
上述“域名1”、“域名2”为你的域名,切记:baidu.com 和 www.baidu.com 是两个域名,需如上形式添加
退出 vim
(如上文)
测试
上传一个 html
文件,改文件名为 index.html
,然后通过你刚输入的域名进行访问,看是否能访问到,过后记得删除……
5、配置本机 hexo
到本地 hexo
项目的根目录下,找到 _config.yml
deploy:
type: git
repository: root@服务器IP:/var/www/repo/blog.git
branch: master
然后打开本地终端
$ hexo clean # 清除缓存和静态文件
$ hexo g # 生成静态文件,在 hexo 项目的根目录下的 public 里。
$ hexo d # 通过你设置的路径布署到线上