我是靠谱客的博主 故意乌龟,最近开发中收集的这篇文章主要介绍使用hexo搭建个人博客遇到的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、如何在linux上部署hexo

准备环境

  1. 服务器安装NodeJS作为hexo运行环境,命令:yum install nodejs
  2. 国内直接使用npm可能会慢,使用淘宝npm镜像替代。使用方式是安装cnpm,以后用cnpm代替npm命令,安装命令:npm install -g cnpm --registry=https://registry.npmmirror.com
  3. hexo需要NodeJs是12以上,需要手动升级一下,命令:
    1. cnpm install -g n
    2. n stable

部署hexo

  1. 安装hexo,命令:cnpm install -g hexo-cli
  2. 新建文件夹例如blog,进入blog目录,初始化hexo,命令:hexo init
  3. 安装hexo-server,命令:cnpm install hexo-server --save

运行

  1. 启动项目
    1. 前台启动:hexo server
    2. 后台启动:nohup hexo server &
  2. 这样使用服务器地址加4000端口就可以访问个人博客了

二、网站备案

想要通过域名访问服务器需要进行备案,下面是我备案过程中遇到的问题。

  1. 一定要备案么?

    答:是的,不进行网站备案,按照法律规定网站无法通过域名对外提供访问。

  2. 在阿里云网站备案,是不是一定要使用阿里云的服务器?

    答:如果备案的服务器是阿里云服务器,需要登录拥有该服务器的账号进行备案,因为备案的时候是会选择账号下的服务器。

  3. 如果阿里云账号主体和网站主体不是一个人可以备案成功么?

    答:应该可以的,阿里云初审通过了。

  4. 网站备案解析的服务器,可以更换么?

    答:这个应该可以的,备案通过后看看。

三、部署nginx(docker)

想要通过免费方式http升级为https的话,先不要采用这种方式部署nginx,请越过这一小节

我现在已经将域名解析到我服务器的IP了,但是通过域名访问的话,默认访问的是80端口,为了自由一点,我决定先部署一个nginx,nginx将80端口流量转发到hexo。

使用docker部署服务有一个非常棒的地方,不用担心该服务依赖的环境,这个环境docker容器已经提供。

有一次我需要去客户现场内网部署nginx,最开始的时候我尝试看怎么直接部署nginx。但是我发现想要部署nginx,就要先在服务器上安装好nginx需要的包,这些包层层依赖,而且多,很绝望。如果是在外网的话,使用yum install也很方便,但是内网,就非常非常艰难了。后来我同事给我说为什么不用docker,我发现,docker真香!

实现步骤如下:

  1. 在服务器上安装docker,命令:yum install docker -y

  2. 下载一个最新的nginx镜像,命令:docker pull nginx,随便选一个就行

  3. 启动nginx容器,命令:docker run -p 80:80 -d nginx,映射容器内80端口到服务器80端口

  4. 修改配置文件nginx.conf

    1. 查看nginx容器id,命令:docker ps | grep nginx,第一列,形如cc3f504ae31f

    2. 进入容器,命令:docker exec -it cc3f504ae31f bash

    3. 进入nginx.conf所在目录,命令:cd /etc/nginx

    4. 备份nginx.conf,命令: cp nginx.conf nginx.conf.bak

    5. nginx.conf配置参考如下:

      user
      nginx;
      worker_processes
      auto;
      error_log
      /var/log/nginx/error.log notice;
      pid
      /var/run/nginx.pid;
      events {
      worker_connections
      1024;
      }
      http {
      include
      /etc/nginx/mime.types;
      default_type
      application/octet-stream;
      log_format
      main
      '$remote_addr - $remote_user [$time_local] "$request" '
      '$status $body_bytes_sent "$http_referer" '
      '"$http_user_agent" "$http_x_forwarded_for"';
      access_log
      /var/log/nginx/access.log
      main;
      sendfile
      on;
      #tcp_nopush
      on;
      keepalive_timeout
      65;
      #gzip
      on;
      include /etc/nginx/conf.d/*.conf;
      server {
      listen 80;
      server_name 你的IP地址;
      location / {
      proxy_pass http://你的IP地址:4000;
      proxy_set_header Host $proxy_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      add_header Access-Control-Allow-Origin *;
      }
      }
      }
      

四、部署nginx(直接部署)

        因为我想要免费将http升级到https访问,所以改换成直接部署nginx,这样在使用certbot工具获取并自动更新证书的时候简单一点,关于nginx的部署和证书升级我这里不再写一遍了,请参考以下两个链接:

  1. Centos 8 nginx安装步骤
  2. HTTPS 升级指南

五、github

        我这里没有选择用官方提供的方式,将新文件推到github。而是自己在github上建一个仓库,然后全部文件push到这个仓库,以后提交新文件之后,再手动push。这样倒是还有个好处,我可以在windows上编辑文件,push到github,再从服务器上pull下来,windows编辑markdown还是更方便的。

        这里我遇到一个问题,一开始我是用https方式clone下来的仓库,再提交时遇到了问题提交补上。然后我就改用ssh了。但是使用ssh的话,需要先在服务器上生成公钥,再通过github的Settings中SSH and GPG keys添加上,才能正常clone、pull和push。

        服务器上生成公钥命令:ssh-keygen -t ed25519 -C “your_email@example.com”

最后

以上就是故意乌龟为你收集整理的使用hexo搭建个人博客遇到的问题的全部内容,希望文章能够帮你解决使用hexo搭建个人博客遇到的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部