百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Hexo+VPS+Freenom+Cloudflare部署

nanshan 2024-11-23 20:09 14 浏览 0 评论

折腾 Hexo 博客也是有一段时间了,之前试过将博客托管到 GiteePages 和 CodingPages 自己感觉上来说都不是很完美。
所以索性决定自己打一个完全自己可控个人博客。
经过一番斟酌之后,决定使用 Hexo + VPS + Freenon + Cloudflare 来搭建。
在此也分享一下折腾的过程,希望对你有帮助。

在看这篇文章之前可以先看下之前的文章(手把手教你用Hexo+GiteePages搭个免费的个人博客

写在前面

Hexo 的具体使用这里就不展开再说,比较简单,官方的文档也是比较全,可以直接参考官方文档使用。

这里具体只是记录一下 VPS、Freenom、Cloudflare 的折腾过程。

大概分为一下几点:

  1. 花点小钱买个 VPS
  2. VPS 环境搭建
  3. 使用 Freenom 白嫖一个域名
  4. 使用 Cloudflare 解析域名到 VPS
  5. 开启强制 Https 访问
  6. 实现 Hexo 在 VPS 上的自动部署

花点小钱买个 VPS

VPS 即 Virtual Private Server 虚拟专用服务器技术,将一台服务器分割成多个虚拟专享服务器的优质服务。

至于为什么选择 VPS,看了下国内的各个云服务商,服务器费用都比较贵,而本人经济也有限,国内的服务器也是好多需要域名备案,比较麻烦,所以这里只好选择买个国外的 VPS 来用。

VPS 我选择的是 Vultr(https://www.vultr.com/?ref=8500786-6G

首先是价格不贵,使用的又是 SSD,并且有很多节点可选。支付方式也是支持支付宝和微信,最最主要的是之前注册新用户直接送100刀。

这里推荐下 Vultr 的一个优惠网站,上面不定期会有优惠信息分享,和一些教程分享。(https://www.vultryhw.cn/

注册一个 vultr 账号

点我注册一个 Vultr 账号

跳转到页面,在页面的这里输入邮箱和密码,点击 Create account 按钮创建一个账号(ps: 邮箱好像不支持 QQ 邮箱)。

创建成功之后,点击左边的 Products ,部署你的 VPS 服务。

如上图所示。

  • Choose Server 这个是选择服务类型,这里选择 Cloud Compute
  • Server Location 这个是 VPS 的节点,这里可以根据自己的喜好选择(我选择的是日本东京的)。
  • Server Type 这个是 VPS 的系统镜像类型,也是按照自己的喜好选择(我选的是 CentOS 8 X64)。
  • Server Size 这个是 VPS 的规格,按照每月多少钱计算,按照自己的喜好和经济选择(我当然选择的是最便宜的 $5 一个月的)。
  • Additional Features 是一些附加的属性,不作说明,根据喜好选择。
  • Startup Script 这个是添加 VPS 启动时执行的脚本文件,可按照个人需要添加。
  • SSH Keys 这个是添加 SSH 登录的密钥信息。
  • Server Hostname & Label 这个是设置 VPS 系统的 Hostname 的,可填可不填。

选择好所有的选项之后,点击 Deploy Now 按钮,然后就开始部署 VPS 服务了,此时只需要耐心等待服务部署完成。

部署完成之后,在 Products 可以看到你已经部署成功的 VPS 服务列表。

在列表进入 VPS 详情可以看到部署好的 VPS 的 IP 还有账号和登录密码(创建好了之后都是 root 账号),使用 IP 和 密码就可以远程登录到 VPS 进行操作了。

因为某些原因,部署之后的 VPS 分配的 IP 可能是访问不了的,这个时候可以重复上面的步骤重新部署 VPS 直到有可以访问的为止,因为 Vultr 是按量付费的,所以不用的 VPS 直接销毁了就不会收费,只有有在运行的 VPS 才会计算费用。

VPS 环境搭建

VPS 已经搭建好了,下一步就是需要搞一个能够运行 Hexo 生成的静态文件的环境,我选择使用 Nginx。

我的 VPS 系统镜像使用的是 CentOS,这里就使用 CentOS 和 Nginx 来举例。

执行命令时使用的都是 root 账户登录执行的,如果你不是使用的 root 账户登录,遇到有些安装时的权限问题,请在命令前加 sudo 来以 root 权限执行命令。

安装 Nginx

CentOS 装 Nginx 还是比较简单,一条命令就可以解决。

yum install nginx

安装完成之后,Nginx 配置文件目录为 /etc/nginx/ , 默认的配置文件是这个目录下的 nginx.conf 文件。之后我们配置都可以直接在这个文件修改,或者是 load 其他自己定义的配置文件,为了方便,我是直接修改的这个文件。

[可选操作] 安装完成之后,可以选择设置 Nginx 随系统启动。

systemctl enable nginx

使用 systemctl 来管理 Nginx 服务之后,以后我们启动,停止,查看状态都可以是用 systemctl 命令来执行。

启动 Nginx:

systemctl start nginx

重启 Nginx:

systemctl restart nginx

停止 Nginx:

systemctl stop nginx

查看 Nginx 运行状态:

systemctl status nginx

配置 Nginx

Nginx 安装完成之后,现在需要做一些简单的配置,打开 /etc/nginx 目录下的 nginx.conf 文件,找到 server 节点,默认的配置如下,我们需要进行一些更改。

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         你放在 VPS 中的 Hexo 静态文件的目录;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

修改 root 属性为我们放在 VPS 上的 Hexo 生成的静态文件的路径,比如说,我的 Hexo 生成的静态文件,存放在 VPS 上的 /usr/share/nginx/web 目录下,那么我们就修改 root 的值为 /usr/share/nginx/web

然后使用 systemctl restart nginx 命令重启一下 Nginx ,在浏览器输入 VPS 的 IP 访问一下可以访问到不。如果访问不了的话,一般都是 VPS 的 80 端口没有开放,可以执行命令开放 80 端口。

// 永久开放 80 端口
firewall-cmd --zone=public --add-port=80/tcp --permanent

// 刷新防火墙规则
firewall-cmd --reload

然后再访问应该就可以访问到了。

使用 Freenom 白嫖一个域名

一个个人博客肯定不能只能使用 IP 来访问,这样让人很难记住,下面就讲一讲如何白嫖一个一年的免费域名。

注册 Freenom 账号

进入到 Freenom 官网,找到 开发人员

点击 开发人员 进入到页面之后,找到页面底部的 今天就获得一个随机的域账户 按钮。

点击按钮即可进入到注册页面。

输入邮箱地址,点击 Verify My Email Address,之后跟着提示填写信息注册就行。需要说下的是,填写地址信息的时候,选择美国的,这样才能申请到免费域名。

申请一个免费域名

注册完成之后,回到首页。

输入你想要的域名,会列出可用的免费域名。

点击 现在获取 即可。

获取到的域名,可以在 services 菜单的 My Domains 中看到。

将域名解析到 VPS 服务器

域名申请好了之后,我们可以通过 Freenom 提供的 DNS 解析服务,将域名解析到 VPS 服务器。

进入域名列表,点击 Manage Domain 按钮,进入页面配置 DNS 解析。

选择 Manage Freenom DNS tab,配置 DNS 解析记录。

最简单的,我们配置一个不带 www 访问的域名,可以如下图配置

配置完了之后,需要到 VPS 的 Nginx 更新下配置,将之前修改的配置文件中的 server_name 改成你的域名。

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  你的域名(多个域名以空格分开);
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

重启 Nginx,不出意外已经可以使用域名来访问你的博客了。

使用 Cloudflare 解析域名到 VPS

由于 Freenom 自带的 DNS 是国外的,解析速度比较慢,而 Cloudflare 是一个免费提供 DNS 解析和全球 CDN 的服务商,所以将 DNS 解析放到 Cloudflare 上面来做可以提升一点站点的访问速度。

首先到 Cloudflare 官网 注册一个账号。

然后在首页,点击 添加站点 按钮,添加你在 Freenom 上面白嫖的域名。

然后会跳转到方案选择的页面,这里选择免费的方案。

之后,就是添加域名解析记录了,就像在 Freenom 中添加记录一样,将解析记录填上就行了。

填完之后,会提示你去修改 DNS 服务地址

这里给出了两个服务地址,我们需要到 Freenom 中修改,登录到 Freenom ,找到 Management Tools 下的 Nameservers

然后勾选 Use custom nameservers (enter below) ,将 Cloudflare 的那两个服务名填入到 Nameserver 1Nameserver 2,点击 Change Namesers 按钮就完成切换了。

等上一小会儿,你的 DNS 解析服务就切换到 Cloudflare 了。

开启强制 Https 访问

为什么要开启 Https 访问,就就不用多说了吧,为了安全,现在的浏览器访问非https协议的网站的时候都会提示安全问题,如果别人访问你的博客的时候,浏览器提示该网站存在风险,那就尴尬了是不。

Cloudflare 提供的证书有效期是 15 年,简直是良心。

在 Cloudflare 找到 SSL/TLS,将加密模式选择为严格。

然后 源服务器 tab

点击创建 创建证书 按钮,一路下一步,将最后的源证书和私钥的内容,分别复制下来,源证书的内容保存为 .pem 的文件,私钥内容保存为 .key 的文件,然后上传到你的 VPS (文件的保存路径可自己定义)。

上传到 VPS 之后,再去配置 Nginx,打开 Nginx 的配置文件,加入以下配置:

    server {
        listen       443 ssl http2 default_server;
        listen       [::]:443 ssl http2 default_server;
        server_name  你的域名,多个以空格隔开;
        root         你的博客静态资源路径;

        ssl_certificate "你上传的 .pem 源证书的路径";
        ssl_certificate_key "你上传的 .key 私钥文件路径";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers PROFILE=SYSTEM;
        ssl_prefer_server_ciphers on;

        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

配置完了之后,重启下 Nginx,使用 Https 协议访问以下,看下是不是能够访问了,如果不行的话,检查下 VPS 的 443 端口是否开放了,如果没有开放的话,执行命令开放下 443 端口:

// 永久开放 443 端口
firewall-cmd --zone=public --add-port=443/tcp --permanent

// 刷新防火墙规则
firewall-cmd --reload

不出意外的话,Https 的配置就算完成了。

这里还有个可选操作就是,强制限制,所有的访问都必须是来自 Cloudflare 代理之后的请求,避免客户端绕过 Cloudflare 来直接请求服务器。

开不开看个人,这里还是说下怎么配置的。

需要先打开一个开关,在 SSL/TLS 下的 源服务器 tab 页下,找到 经过身份验证的源服务器拉取 这个开关,将其打开。

然后下载证书,点我下载证书。

将下载的证书保存为 .crt 文件,然后上传到 VPS 服务器。

打开 Nginx 配置文件,在刚才配置的中加入两个配置。

    server {
        listen       443 ssl http2 default_server;
        listen       [::]:443 ssl http2 default_server;
        server_name  你的域名,多个以空格隔开;
        root         你的博客静态资源路径;

        ssl_certificate "你上传的 .pem 源证书的路径";
        ssl_certificate_key "你上传的 .key 私钥文件路径";
        ssl_client_certificate "你刚才上传的 .crt 文件路径";
        ssl_verify_client on;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers PROFILE=SYSTEM;
        ssl_prefer_server_ciphers on;

	    # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

然后重启 Nginx 就好了。

嗯。强制开启 Https 就算完成了。

实现 Hexo 在 VPS 上的自动部署

将 Hexo 生成的文件部署到 VPS 不比托管在 Coding ,每次提交了之后可以自动的更新。所以这里还需要做一个操作就是,我们每次有新的提交之后,在 VPS 上面的文件也要同步的更新。

这个提交文件自动更新就需要用到 Git Hook 来监听到我们的文件更新之后做一些操作。

登录到 VPS,自己定义一个目录,执行命令:

// 创建一个文件加,名字自己定
mkdir web.git
cd web.git
// git 初始化一个裸库
git init --bare

然后创建一个 Git Hook 文件。执行命令:

// 进入到仓库目录下的 hook 目录
cd web.git/hook
// 创建一个 hook 脚本,文件有更新的时候执行
vim post-receive

post-receive 文件中加入以下内容:

#!/bin/bash
git --work-tree=你的 Nginx 静态文件目录 --git-dir=你创建的 git 裸库的位置 checkout -f

配置完了这些之后,修改一下 Hexo 的配置文件,找到 Hexo 配置文件中的 deploy 属性,做以下配置。

deploy:
  type: git
  repo: VPS 用户名@VPS IP:你在 VPS 中创建的裸库的目录
  branch: master

emmm,至此,自动部署也配置完成了,以后只要使用 hexo d 的命令,就能自动部署更新了。

尾巴

至此,使用 Hexo + VPS + Freenom + Cloudflare 的部署就算是完成了,可能写得不是很好,有些细节不是很清楚,各位可以留言一起讨论一下。如果觉得有用的话,来个关注加点赞吧。

相关推荐

0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)

文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...

ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes

为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...

生产环境starrocks 3.1存算一体集群部署

集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...

在CentOS上添加swap虚拟内存并设置优先级

现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...

国产深度(deepin)操作系统优化指南

1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...

postgresql-15.4 多节点主从(读写分离)

1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...

Docker 容器 Java 服务内存与 GC 优化实施方案

一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...

虚拟内存设置、解决linux内存不够问题

虚拟内存设置(解决linux内存不够情况)背景介绍  Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...

Elasticsearch性能调优(5):服务器配置选择

在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...

Es如何落地

一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...

针对Linux内存管理知识学习总结

现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...

MySQL进阶之性能优化

概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...

Linux Cgroups(Control Groups)原理

LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...

linux 常用性能优化参数及理解

1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...

如何在 Linux 中使用 Sysctl 命令?

sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...

取消回复欢迎 发表评论: