前言
以前自己的博客站点是托管在Github的,使用过Netlify,coding,但速度都不是很理想。也曾使用过Gitee(速度虽然不从,但绑定域名要付费99, 放弃 )。最近买了阿里云的学生机来玩,国内速度还不错,1核2G5Mbps。所以今天计划把自己原来托管在github的网站迁移到阿里云服务器。迁移过程还算顺利。
我迁移大体的思路是,继续用hexo部署。搭建自己的git服务器,然后用hexo部署到自己的git服务器。然后通过nginx挂载git仓库,实现全静态访问。速度可想而知。
开始操作
搭建Git服务器
安装git
1
|
$ yum install -y git
|
创建仓库
先创建一个git
用户,用来运行git
服务:
1
|
$ adduser git # 添加git用户 用于ssh
|
- 在
home/git
的目录下,创建一个名为hexoBlog
的裸仓库(bare repo)。
1
|
$ cd /home/git/
|
上面已经创建的裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git
结尾。然后,把owner改为git
用户
1
|
$ sudo chown -R git:git /home/git/hexoBlog.git
|
禁用shell登录:
出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd
文件完成。找到类似下面的一行:
1
|
git:x:1001:1001:,,,:/home/git:/bin/bash
|
改为:
1
|
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
|
克隆远程仓库:
现在,可以通过git clone
命令克隆远程仓库了,在自己的电脑上运行:
1
|
$ git clone git@server:/home/git/hexoBlog.git # server 为ip
|
出现上面信息,基本说明搭建完毕,剩下的推送就简单了。
创建Hooks钩子
创建hooks钩子的目的是把,git仓库里的代码拉到一个路径下,便于查看修改和以后的nginx挂载
在hooks下创建post-receive脚本,它将在仓库接收到push时执行。
1
|
$ vim /home/git/hexoBlog.git/hooks/post-receive
|
写到这里,用户组对/home/hexoBlog路径只有读的权限,没有写的权限。上边的配置都没有什么问题,就这个权限折腾了一天,用户组默认的权限是没有写权限的,配置好不能上传代码,问题就在用户组的权限。
修改目录及其子文件的权限
1
|
$ chmod -R 777 /home/hexoBlog # 让所有用户有操作权限
|
之后push之后就可以在 /home/hexoBlog看到push的文件了
部署hexo网站
云服务器端配置 Nginx
安装 启动 测试Nginx
1
|
$ yum install -y nginx
|
能够正常获取以下欢迎页面说明Nginx安装成功。
1
|
Connecting to 127.0.0.1:80... connected.
|
查看 Nginx 的默认配置的安装位置
nginx -t
修改Nginx的默认配置,其中 vim 后边就是刚才查到的安装位置(每个人可能都不一样)
1
|
$ vim /etc/nginx/nginx.conf
|
重启 Nginx 服务
1
|
$ systemctl restart nginx
|
至此,服务器端配置就结束了。接下来,就剩下本地 hexo 的配置更改了。
修改 hexo 站点配置文件 git 相关设置
打开你本地的 hexo 博客所在文件,打开站点配置文件(不是主题配置文件),做以下修改。
1
|
deploy:
|
在 hexo 目录下执行部署,试试看。
1
|
$ cd 你的hexo目录
|
打开你的公网 IP,看是不是已经部署成功了。