技术 · 2017年3月24日

使用Git部署Hexo博客到Ubuntu服务器

在远程服务器上创建Git仓库

1.在远程服务器上

在 /root 目录下

git init   --bare empty.git

git remote add origin /root/empty.git

2.在本地机器上

git clone ssh://username@{远程服务器ip地址}:{ssh协议端口}/root/empty.git

3.若想迁本地项目可以将 .git/config 下的 remote 以及 branch 配置部分删除,然后重新配置 remote 以及 branch

git remote add origin ssh://username@{remote ip address}:{ssh port}/root/empty.git

git add .

git push origin master

 

使用Git部署Hexo博客到Ubuntu服务器

服务器部分

Nginx 部分

在 /var/www/html 目录下创建静态资源托管目录

mkdir staticWeb

在 /etc/nginx/sites-availables 创建 static-web 配置文件

server {
  listen 80 default_server;
  listen [::]:80 default_server;

  root /var/www/html/staticWeb;
  index index.html index.htm index.nginx-debian.html;

  server_name _;

  location / {
    try_files $uri $uri/ =404;
  }

}
$ nginx -t

$ sudo serice nginx reload
Git 部分
$ cd ~
$ mkdir repos && cd repos
$ git init --bare hexo_blog.git
$ touch ~/repos/hexo_blog.git/hooks/post-receive #新建一个名为post-receive的钩子文件
$ echo "git --work-tree=/var/www/html/staticWeb --git-dir=~/repos/hexo_blog.git checkout -f" >> ~/repos/hexo_blog.git/hooks/post-receive
$ chmod +x /home/ubuntu/hexo_blog.git/hooks/post-receive #设置执行权限

本地部分

将本地的 id_rsa.pub 公钥添加服务器端的 .ssh/authorized_keys 文件中去,避免每次部署输入账号以及密码来授权。
ssh-copy-id [username]@[ip]
编辑 hexo 项目下的 _config.yml 文件
...
...
deploy:
 type: git
 repo: ssh://[username]@[ip]:[ssh Port]/~/repos/hexo_blog.git
 branch: master
...
...
部署
$ hexo g #生成要部署的文件

$ hexo d #开始部署
访问服务器地址查看是否部署成功