【腾讯云的1001种玩法】Hello Hexo之静态博客搭建+自动部署

在腾讯云的CentOS7云主机上部署一个Hexo博客,马上让你写博客的姿势变得更加极客。

搭建流程

先明确一下它的运作流程:本地有个 hexo 程序,里面包含了 public 文件夹,sources 文件夹,hexo 将 sources 里的*.md文件渲染为静态的 html 文件放到 public 下,然后我们用git推送到服务器的repository,服务器用git hooks把仓库里的文件同步到网站根目录,而 nginx 的作用就是反向代理。

  • 服务器环境:安装git、nginx、创建git用户
  • 本地搭建Hexo环境:安装NodeJs、hexo-cli,生成本地静态网站
  • 使用git自动化部署发布博客

一、安装git、创建git用户

在服务器上用root权限运行下面命令

yum install git
adduser git

二、nginx安装和配置

yum install nginx
systemctl start nginx
systemctl enable nginx.service # 设置为开机启动

修改nginx的配置文件

vim /etc/nginx/nginx.conf

server那块改为

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  ffflipped.cn; #你的域名
        index index.html;
        root         /usr/www;#网站根目录

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

        location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
                access_log off; log_not_found off; expires max;
        }
}

然后执行

cd /usr
mkdir www
chmod -R 777 /usr/www #设置权限

作为服务器上的网站根目录。

三、本地搭建Hexo环境

安装hexo-cli(windows用git bash运行命令):

sudo npm install -g hexo-cli

初始化hexo,比如我要在~/blog下搭建博客

cd ~
hexo init blog

之后继续安装hexo-deployer-githexo-server,一个用于git自动部署,一个用于本地简单的服务器。

cd blog
npm install hexo-deployer-git --save
npm install hero-server

执行:

hexo g #或者hexo generate
hexo s #或者hexo server

就可以访问http://localhost:4000看到博客了。

四、自动化部署

自动化部署就是可以不用在服务器上执行操作,只要本地 git 推送上去,服务器就会通过git hooks 自动把内容同步到网站根目录。

ssh登录

为了以后每次发布时不用输入密码,我们需要创建证书登录,如果自己电脑里没有公钥(我们的公钥在这里:~/.ssh/id_rsa.pub),则创建公钥:

ssh-keygen -t rsa -C "xx@xx.com"

有则跳过上面这步,然后复制公钥到服务器,下面这个命令就是把公钥内容读入剪贴板。

pbcopy < ~/.ssh/id_rsa.pub

切换为git用户,添加公钥后记得要赋予文件相应权限:

su git
cd ~
mkdir .ssh
vim .ssh/authorized_keys
#粘贴然后保存
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

在自己电脑终端输入ssh git@你的域名验证是否配置好ssh登录。

新建仓库,配置hooks

接着上一步(git用户~目录),在服务器上创建一个裸仓库

git init --bare blog.git

然后

vim ~/blog.git/hooks/post-receive
#写入以下内容保存
#!/bin/sh
git --work-tree=/path/to/www --git-dir=~/blog.git checkout -f

再赋予它权限

chmod +x ~/blog.git/hooks/post-receive

本地打开_config.yml,最后面的deploy修改为:

deploy:
    type: git
    repo: git@你的域名:/home/git/blog.git
    branch: master

我们试试能不能自动部署:

hexo clean && hexo g --deploy

现在,打开域名看看吧。

接下来安装主题和配置hexo的其他功能就是后话了。

相关推荐

使用 Github 和 Hexo 快速搭建个人博客

【腾讯云的1001种玩法】利用腾讯云搭建个人博客

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java Edge

读懂Java中的Socket编程

Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一。如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实...

692
来自专栏张戈的专栏

Nginx开启fastcgi_cache缓存加速,支持html伪静态页面

张戈博客不久前分享过 Nginx 开启缓存为 WordPress 加速的教程,其中分享了 2 种缓存模式:代理模式和本地模式。我一直以为单个 ngx_cache...

5155
来自专栏张善友的专栏

让Jexus支持高并发请求的优化技巧

Jexus web server 5.1 每个工作进程的最大并发数固定为1万,最多可以同时开启4个工作进程,因此,每台Jexus V5.1服务器最多可以到支持4...

1925
来自专栏散尽浮华

进程管理利器-supervisor部署记录

一、简单介绍 supervisor是用来管理进程的一个工具,止于为什么要用supervisor,是因为相对于linux传统的进程管理方式来说,它有很多的优势: ...

3188
来自专栏Jerry的SAP技术分享

运行npm update等命令出错后如何分析问题根源

npm ERR! Unexpected token < in JSON at position 0

762
来自专栏Albert陈凯

HTTP、TCP、UDP:通信协议的规则和区别

TCP、HTTP、UDP:都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务。 TCP HTTP UDP三者的...

2828
来自专栏王磊的博客

设为首页和收藏本站js代码 兼容IE,chrome,ff

设为首页 和 收藏本站js代码 兼容IE,chrome,ff //设为首页 function SetHome(obj,url){ try{ obj.st...

3529
来自专栏技术博文

linux下生成key

linux下生成key 使用public/private key让putty(ssh)自动登录(以及linux上使用密钥做ssh自动登陆)  方法一:使用put...

3617
来自专栏iKcamp

iKcamp|基于Koa2搭建Node.js实战(含视频)☞ HTTP请求

原创作者:大哼、阿干、三三、小虎、胖子、小哈、DDU、可木、晃晃 文案校对:李益、大力萌、Au、DDU、小溪里、小哈 风采主播:可木、阿干、Au、DDU、小...

920
来自专栏用户2442861的专栏

recv函数说明返回值

客户端的程序连接上服务器后recv函数阻塞接受,有时会返回0,说明接收超时服务器主动断开了连接,需要重新connect服务器,但重新connect时会报“Tr...

1531

扫码关注云+社区