QQ在线客服

当前位置:首页> 资讯> 互联网络

搭建hexo博客

2019-11-09 13:16 来源: Jin GaYe 编辑: 佚名 浏览(756)人   

  小伙伴们,大家好丫,经过几天的折腾,总算把我的博客弄得差不多啦。虽然加载速度还是有点抱歉,但整体上已经有模有样啦,O(∩_∩)O。今天的话,就来梳理一下从无到有如何搭出来一个基本的博客,技术有限,也请大家多多指正哈。
  如果你没有自己服务器的话,而且只是弄着玩玩,不怎么经常性去维护的话,可以考虑部署到github或者coding呢,这里暂时只讲部署到github,coding类似。如果你有自己的服务器,并且想更多推广出去的话,那可就要好好多打理啦。本文采用的主要是hexo来搭建。 

内容

版本

本地系统

ubuntu 16.04 LTS

服务器

腾讯云

服务器系统

ubuntu 16.04 LTS

域名

jarrychen.xyz(已备案)

nginx

1.10.3

nodejs

10.16.3

npm

6.12.1

提交搜索引擎

baidu(已收),google(已收),搜狗
360, naver(已收),bing
yandex(已收) ,神马

  以下内容如果是用sudo apt-get install的话,缺少依赖时应先运行sudo apt-get update,其他的内容后续想到再补充。 

1. 安装nodejs^1

// 此处采用的是源码安装,需要时间较久

cd /data

mkdir nodejs

cd nodejs    //进入到你要放nodejs压缩包的地方,eg: /data/nodejs

wget https://nodejs.org/dist/v10.14.2/node-v10.14.2.tar.gz     //版本号详细可上官网看,建议下载最近且稳定的版本,可以避免不少坑

tar -zxvf node-v10.14.2.tar.gz

cd node-v10.14.2

./configure

make

make install    //较久

node -v

npm -v        //此为验证是否安装成功// 若要npm比较稳定// npm install -g n // sudo n stable

2. 安装git^2

sudo apt-get install git  //一句命令即可

3. hexo-cli

(1). 安装hexo-cli

//需要使用npm来安装该模块//npm有时安装包可能卡住或者因为被墙了下载不下来,推荐换成国内的镜像//此处采用的是taobao

npm config set registry https://registry.npm.taobao.org

 

npm install -g hexo-cli    //安装hexo脚手架

hexo -v //验证是否安装成功

//然后找一个你喜欢的文件夹

hexo init yourBlog

 

cd yourBlog

npm install    //先安装一些初始必要的依赖

 

hexo clean    //清除已经生成的页面

hexo g    //生成静态页面

hexo s    //运行hexo

hexo d    //部署,需先配置好部署地方

· node_modules: 依赖包

· scaffolds:生成文章的一些模板

· source:用来存放你的文章

· themes:主题

· _config.yml: 博客的配置文件

(2). 配置hexo^3

  安装完毕后的主题默认是landscape,如果你不喜欢的话,可以上这里查阅有什么主题,我采用的是ocean主题。
  基础的配置可以查看下方主题设计者的文档

· Ocean中文文档^4

 

4. 添加一些功能

· 标签云

· 摘要

· 评论

· 访问统计

· 计算字数及阅读时间

· 音乐-网易云外链

· 背景织网特效

· live2d

· 运行时间

· 图片懒加载

· 推荐阅读

· 版权信息

· 在线联系

· 支持数学公式

· 多渠道分享

 

5. 部署到服务器上(ubuntu)

(1). 安装nginx

//为了方便和快一点,这里采用的是apt-get安装,不采取源码安装

sudo apt-get install nginx

//y执行安装过程,若报缺少依赖,则

sudo apt-get update

sudo apt-get install nginx

//即可//安装完毕后,浏览器输入云主机ip看到nginx欢迎页面即成功

(2). 配置nginx

  这一步比较琐碎,包括设置网站根目录,配置http跳转https,自定义404页面,gzip压缩提高加载速度等等。不过在进行这些之前,最关键的前置步骤是需要有一个可以用的域名,指已备案,且添加解析记录到你的云主机,并且申请ssl证书上传到服务器中。

//进行了前面这些操作后

cd /etc/nginx  //进入nginx的安装目录

 

cd conf.d    //在此处创建ssl.conf配置http跳转https

touch ssl.conf

vim ssl.conf  //此处根据自己的域名证书所在的路径,对下面eg进行替换

 

e.g:

server{

    listen 80;

    server_name domainname;

    rewrite ^(.*)$ https://${server_name}$1 permanent;    //这里是设置跳转最重要的地方,重定向到https

}

 

server{        //https的配置

    listen 443 ssl http2;

    server_name domainname;

    ssl on;

    ssl_certificate 1_domainname_bundle.crt;

    ssl_certificate_key 2_domainname.key;

    ssl_session_timeout 5m;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

    ssl_prefer_server_ciphers on;

    location / {    //指向网站根目录

        proxy_redirect off;

        proxy_set_header REMOTE-HOST $remote_addr;

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass http://localhost:4000/;    //hexo是在4000端口上运行

     }

}

 

//https的跳转上面配置完还不可以,还需要配置一处地方//nginx目录中

cd site-available

vim default

//server中添加

server_name localhost;

location / {

        root webapproot;    //你的webapp的路径

        index index.html index.htm index.nginx-debian.html;

        try_files $uri $uri/ = 404;

}

//然后

nginx -t  //查看是否配置出错//没有的话

nginx -s reload

service nginx restart    //输入域名访问即可跳到安全的https

//搞定这个后,剩下的是配置自定义404页面和开启gzip压缩了//404这个看个人喜好了,开启gzip压缩是很有必要的,多少能提高加载速度

cd /etc/nginx

vim nginx.conf

//配置404,在默认的配置文件中的http里添加这一段

server_tokens off;

proxy_intercept_errors on;//这里偷懒把所有错误码都定位到404页面了    

error_page 403 404 500 502 503 504 /404.html;

server {

 

    location /404.html {

        root 404页面的路径;

    }

}

 

//开启gzip压缩### Gzip Settings ##

 

    gzip on;    //开启gzip压缩

    gzip_disable "msie6";    //针对ie浏览器要设置的

    gzip_min_length 1k;    //最小被压缩长度,小于这个大小的不会被压缩

    gzip_vary on;    

    # gzip_proxied any;

    gzip_comp_level 2;    //压缩力度,越大压缩越厉害但耗性能,这里够用了

    gzip_buffers 4 16k;

    gzip_http_version 1.1;

    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript image/jpeg image/gif image/png video/mp4 audio/webm video/ogg;    //要压缩的文件格式

(3). 安装pm2模块

//这里安装pm2模块的目的是为了让你的项目持久化运行//正常的hexo server,关掉窗口后也就停止运行了//所以需要它来帮助运行

 

npm install -g pm2    //全局安装

//写一个运行的脚本const {exec} = require('child_process')

exec('hexo s',(error,stdout,stderr)=>{

    if(error){

        console.log('exec error:${error}')

        return

    }

    console.log('stdout:${stdout}');

    console.log('stderr:${stderr}');

})

//保存为xx.js到你博客的根目录//运行

pm2 start xx.js

//会发现把窗口关掉,去浏览器还是能照常访问

//这里每次运行hexo的几句命令都好麻烦,有没有方法可以减少呢?//答案是有的//编辑博客根目录的package.json,修改里面"script"部分//在其中添加"build"字段//内容写上

 

hexo clean && hexo g && gulp(可选) && hexo d && pm2 restart xx.js//其中gulp是压缩代码,即把你那些htmljscss代码丑化,图片压缩大小//分别表示清除已生成,重新生成,压缩,部署,持久化运行

(4). 安装hexo-admin

//如果你是部署到服务器上,每次上去黑窗口写或者写完再上传都比较麻烦//自己懒得做管理端的话,是否有方便的方法来写文呢//答案是有的,就是hexo-admin插件

 

cd yourBlog

npm install hexo-admin --save

 

hexo s//输入博客根目录网址+/admin/即可登录,首次无需输入账号密码//这毕竟是一个管理端,总不能让人随便访问//找到页面中的settings

//点击下面的 Setup authentification here //填写用户名,密码,和加密串

//然后把生成的账号,密码,和加密串等信息写到_config.yml配置文件中//即在_config.yml中添加

admin:

  username: yourusername

  password_hash: yourpassword_hash

  secret: your secret

  command: './admin_script/hexo-generate.sh'

//然后再次运行打开相同路径即可触发登录//为了更愉快的写文章//可以给配置中再加个command,里面写上hexo clean && hexo g//即每次写完推文总是重新生成静态文件,方便一些

 

6. 部署到github^5

(1).安装插件并配置

//先安装部署到github上所需要的插件

npm install hexo-deployer-git --save

 

//进入博客根目录修改__config.yml文件

deploy:

  type: git

  repo: git@github.com:OwnerName/OwnerName.github.io.git

  branch: master

(2).配置github并部署

//生成ssh keys

ssh-add ~/.ssh/id_rsa

//然后

cd ~/.ssh

sudo gedit id_rsa.pub

//将内容复制下来后,登陆github,右上角进入settings//选择SSH and GPG keys//然后new SSH key,将复制的内容粘贴上去,保存

//新建一个respository//命名为OwnerName.github.io

 

ssh -T git@github.com    //测试连接是否成功

//出现下列语句则表明已经连上

Hi wispyoureyes! You've successfully authenticated, but GitHub does not provide shell access.

 

//接下来

<span style=";font-family:'Times New Ro

【版权与免责声明】如发现内容存在版权问题,烦请提供相关信息发邮件至 kefu@2898.com ,我们将及时沟通与处理。 本站内容除了2898站长资源平台( www.2898.com )原创外,其它均为网友转载内容,涉及言论、版权与本站无关。