使用hexo并部署到aws上

使用hexo并部署到aws上

看csdn上的一些大牛都在写自己的博客,自己也想试试,在同事的推荐下使用了 一开始使用了Hexo,把github作为自己的静态博客的存放地址,然后和同事一起申请了域名,购买了aws的云服务,从那以后就使用了一段时间的WordPress。但是讲道理,WordPress对MarkDown的支持是在是太烂了,这个周末两个,重新使用Hexo,并使用git进行静态文件的提交。实现自动化的web更新。

写作环境

我使用Hexo的环境是windows,mac的操作也差不多。在完成自己的目标之前也google了一些其他人的blog(在相应的操作前面,我会把参考的blog贴出来)。在这里我不得不吐槽一下google和baidu的差别了。讲道理,要查一些资料还是用google的好。

首先是获取Hexo 官方文档 ,通过官方文档上的说明进行前期工作,从nodejs官网下nodejs,nodejs官网 。我的git是通过安装visual studio 2015时,让vs的安装器帮我安装的。因此也为后面的创建自己的公私钥时,造成了一定的麻烦。因此还是从git官网直接下载和安装git官网。当这些前期环境准备好之后。在cmd控制台中通过

npm install -g hexo-cli进行Hexo的安装。等待Hexo客户端的安装完成。完成之后,我的博客内容是放在D盘下的 ,通过cmd控制台切换到d盘,然后依次输入如下命令:

hexo init blog
cd blog
npm install

通过这些命令之后,进入blog目录可以看到如下文件:

blog内容

在该文件路径下使用cmd控制台输入hexo server ,然后打开浏览器输入http://localhost:4000。可以看到如下界面:

初始界面

这个界面是使用默认的landscape主题,接下来的时间是选择一款自己喜欢的主题,我选择的是Next主题。主题官网 .我选择这个主题的原因是这个主题比较简洁。

通过官方文档的说明进行一步一步进行操作。就能很快搭建成我这样子的blog界面了。

我的界面

在配置中的坑

一些坑

  1. 点击分类页显示/Get/categories问题
  2. 点击标签页显示/Get/tags问题
  3. 点击关于页显示/Get/about 问题

这三个的结局办法都是类似的,在cmd控制台中使用hexo new page xxx 其中xxx分别为categories、tags、about。在source文件下会出现如下的文件夹:

文件夹

在这三个文件夹中分别有一个index.md文件,把分别进行如下设置:

tags:

title: about
date: 2016-09-04 01:24:56
type: "about"
comments: false

categories:

title: categories
date: 2016-09-04 01:17:32
type: "categories"
comments: false

about:

title: about
date: 2016-09-04 01:24:56
type: "about"
comments: false

使用comments:false的原因是我使用了多说评论,在这些页面中不需要使用多说评论

上云

在网上搜Hexo的教程都是使用github作为静态页面的展示平台,但我们为了追(zhuang)求(bi),准备使用云主机作为自己的展示平台。

购买域名

提供域名购买的服务器商非常多,

  1. 阿里云链接
  2. 腾讯云链接

有很多提供类似的域名购买服务的提供商,随便选择一家进行购买就行了。

云选择

国内有很多的云服务提供商,BAT一个都不会错过。但我不得不说的是阿里云的云主机实在是太贵了。我选择的是亚马逊的云主机,现在AWS的云主机可以免费使用一年。但申请AWS的云主机需要信用卡验证。没有信用卡的朋友可以去某宝上搜AWS基本就能看见aws认证卡之类的东西,8块钱就能享用一年的云服务。在整个过程中比较麻烦的是输入验证码阶段。不知,是为什么提供手机号,第一次验证都无法通过,第二次要看脸了,如果可以的话还是提供座机号码进行电话验证。

一切就绪后就可以登录aws云主机了。AWS默认使用私钥的登录模式。通过命令ssh -i xxx ec2-user@xxx 第一个xxx是使用AWS给的私钥文件,第二个xxx为AWS为你分配的公网IP。在linux和mac上需要使用chmod 600 xxx进行修改权限。

搭建服务器环境

在云上使用Hexo有两种方式。第一种是使用hexo server ,然后用nginx进行反向代理4000端口,还一种是使用 git上传在本地生成的静态文件。在这里我是使用第二种方式。

在登上AWS的虚拟机之后 ,首先要做的是更新软件环境sudo yum upgrade ,当一切更新完成后,使用sudo yum install nginx 下载并安装nginx。为了追求更好的展(zhuang)现(bi),我打算让自己的网站使用https,我的证书是通过亚数信息的mpki系统申请的TrustAsia证书,这个证书可以免费使用一年。等待证书发下来后。把证书上传到自己的云主机上。在nginx的conf.d文件夹下新建一个nginx的配置文件。用于配置自己的hexo静态页面访问服务。

在使用nginx服务之前我们要先把自己的Hexo生成的静态文件上传到云上。在这里我是参考ZhangFinder’s Blog进行配置的。

本地生成SSH密钥
  1. 看c盘用户文档下是否有.ssh文件夹。如果没有则需要使用cmd控制台到用户目录下使用mkdir .ssh 进行创建。

  2. 在.ssh 文件上右击,选择Git Bash here 打开bash终端。

  3. 输入ssh-keygen -t rsa -C "xxx" ,xxx自己命名,然后一路回车就把公钥和私钥创建完成了。

  4. 配置git(依旧在刚才的git bash中):

    git config --global user.email "email@examole.com"
    git config --global user.name "username"
  5. 配置hexo的 deploy

    在自己的hexo中重新配置一下:

    deploy:
     type: git
     meaage: update
     repo: git@www.hsulei.com:/home/git/blog.git
     branch: master

服务器配置
  1. 使用sudo adduser git进行用户添加。

  2. 切换到git账户下,并进行一些git用户操作。

    cd ~
    mkdir .ssh && cd .ssh
    touch authorized_keys
    vi authorized_keys

    创建authortized_keys文件的目的是存放刚才生成的公钥。

  3. 把刚才生成的公钥文件中的内容复制到authorized_keys文件中(公钥文件是以.pub为结尾的文件)。当这步完成后,我们可以在自己的客户端进行ssh git@www.hsulei.com进行链接测试,能链接上去就没有问题。不能链接的话。重新仔细操作一遍。

  4. 接下来创建直接的静态文件存放位置。

    cd /var/www
    sudo mkdir hexo
  5. 创建git仓库。

    cd ~
    mkdir blog.git && cd blog.git
    git init --bare

  6. 创建git hooks。

    cd ~/blog.git/hooks
    touch post-receive
    vi post-receive
  7. 配置脚本。

    
    
    #!/bin/bash -l 
    
    GIT_REPO=/home/git/blog.git
    TMP_GIT_CLONE=/tmp/blog
    PUBLIC_WWW=/var/www/hexo
    rm -rf ${TMP_GIT_CLONE}
    git clone $GIT_REPO $TMP_GIT_CLONE
    rm -rf ${PUBLIC_WWW}/*
    cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
  8. 修改权限。

    chmod +x post-receive
    sudo chmod 775 -R /var/www/hexo
  9. 进行nginx的配置。

    cd /etc/nginx/conf.d
    sudo vi hsulei.com.conf
  10. 编辑hsulei.com.conf。

   server {
           ssl_session_cache        shared:SSL:10m;
           ssl_session_timeout      60m;

           ssl_session_tickets      on;

           ssl_stapling             on;
           ssl_stapling_verify      on;

           server_tokens off;
           proxy_hide_header X-Powered_By;

           if ($request_method !~ ^(GET|HEAD|POST)$ ) {
              return    444;
           }
                   add_header  Strict-Transport-Security  "max-age=31536000";
           add_header  X-Frame-Options  deny;
           add_header  X-Content-Type-Options  nosniff;

           listen 443 ;
           server_name www.hsulei.com hsulei.com;
           root /var/www/hexo;
           access_log  /var/log/nginx/blog_access.log;
           error_log   /var/log/nginx/blog_error.log;

           ssl on;
           ssl_certificate /etc/nginx/_.hsulei.com/_.hsulei.com.pem;
           ssl_certificate_key /etc/nginx/_.hsulei.com/_.hsulei.com.key;
           ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配
           ssl_ciphers  ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:DES-CBC3-SHA;
           ssl_prefer_server_ciphers   on;
              # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
       #

           location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ {
               root /var/www/hexo;
               access_log   off;
               expires      1d;
           }
       location ~* ^.+\.(css|js|txt|xml|swf|wav)$ {
           root /var/www/hexo;
           access_log   off;
           expires      10m;
       }
       location / {
           root /var/www/hexo;
           if (-f $request_filename) {
               rewrite ^/(.*)$  /$1 break;
           }
       }

   }

   server {
           listen 80;
           server_name www.hsulei.com hsulei.com;

           location / {
                   rewrite ^(.*) https://$host$1 permanent;
           }

很多的ssh配置我是按照jerryqu的 博客进行配置的。jerryqu的博客

  1. 启动nginx。


    sudo service nignx start

剩下的事情就是在本地使用 hexo ghexo d进行发布了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值