如何通过阿里云服务器部署hexo博客(超详细)

在这里插入图片描述

👏大家好!我是和风coding,希望我的文章能给你带来帮助!
🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
📝点击 我的主页 还可以看到和风的其他内容噢,更多内容等你来探索!
📕欢迎参观我的个人网站:Gentlewind

在这里插入图片描述


文章目录

    • 前置知识:
    • 步骤一:本地电脑部署
    • 步骤二:购买域名
    • 步骤三:服务器端配置
    • 步骤四:配置服务端Git
    • 步骤五:配置Hexo并部署发布


前置知识:

  • linux基础
  • git基础
  • nginx基础
  • money(需要购买阿里云服务器和域名)

引言

Hexo是一款基于Node.js的静态博客框架,依赖少易于安装使用,是搭建博客的首选框架。本篇教程记述了作者用阿里云轻量应用服务器部署Hexo的详细过程,步骤完整,操作性强,一起来看看吧~

步骤一:本地电脑部署

1、安装nodeJS

浏览器进入NodeJS 官网,安装 LTS(Long Term Support)版本。

image001.png

验证nodeJS是否安装成功:

按住win+R,输入cmd,进入 cmd 命令行工具,输入node -v查看 node 版本,若出现版本信息(如下图示),则说明 node 安装成功。

image003.png

2.、安装Hexo

i. 安装Hexo

在 cmd 命令行中输入npm install hexo-cli -g,安装 hexo。完成后输入hexo -v查看版本信息,确认安装成功。

image004.png

ii. 初始化根目录

创建文件夹Hexo-Blog,在 cmd 命令行中进入该目录,输入hexo init初始化根目录。

image005.png

iii. 本地查看

输入hexo g&&hexo s(生成静态文件,并开启本地服务器)

image007.png

根据提示,在浏览器中打开http://localhost:4000,即可看到初始的博客页面。

image009.png

iv. 美化博客

对自己的博客进行更改样式、美化、增删功能、发布文章等操作,就不展开介绍了。

步骤二:购买域名

本教程后续涉及域名处,以test.top为例进行演示;读者在自己学习部署时,应将此域名替换为自己网站的域名。

详细了解可以参考这篇博客:购买域名后如何使用 | Gentle Wind

1、购买域名

在阿里云上可以购买域名,.com/.cn/.top/.xyz/.store等域名一应俱全,部分域名只需要1块钱。

image012-域名购买.jpg

2、域名备案

域名绑定国内的服务器,必须要进行备案操作,否则将无法访问。从提交备案信息,到管局审核通过,大概15天左右(看运气)

image013.png

有不懂的可以看这篇博客:

https://zhuanlan.zhihu.com/p/422965705

3、域名解析

域名解析是把域名指向网站空间 IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP 地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替 IP 地址标识站点地址。

image017-打码.png

说明

◾ 主机记录中,www代表域名前加www.,如www.test.top,@就代表test.top,这样两个地址都能访问到服务器了

◾ 记录类型A是指,将域名指向一个IPV4地址

◾ 记录值就是服务器的公网 IP

步骤三:服务器端配置

1、购买服务器

为了让其他用户在自己的客户端访问到自己的博客,就需要将博客部署到服务器上,其他用户通过访问服务器的公网 IP 来访问到服务器上的资源。若绑定了域名,还可以通过域名访问。

通过阿里云开发者成长计划,购买了轻量应用服务器。在系统的选择上,作为服务器系统,CentOS 稳定、强大,所以系统镜像选择了 Linux 系统的 CentOS 7.3 版本,一般使用6.5以上即可。

image019.png

2、配置安全组

想要详细了解安全组的,可以参考我的这篇博客:部署hexo博客在阿里云服务器教程 | Gentle Wind

  • 在搜索框搜索ecs,来到云服务器ECS控制台,按照步骤点击创建安全组

image-20240207152601279

  • 选择网络(购买服务器后会有的),点击快速添加

image-20240207152719429

  • 勾选以下几项,点击确定

image-20240207153105719

  • 使用 HTTP 协议或HTTPS端口访问服务器,需要监听80或443端口
  • 服务器端配置 Git 时需要使用 SSH 协议进行本地与服务器的连接,需要服务器监听 22 端口
  • mysql和redis也可以勾上,没坏处

3、服务器环境搭建

此步骤需要在轻量应用****服务器上完成。具体方法可以使用远程连接(如下图示),也可以使用 Xshell 客户端进行连接。

image025-打码.png

i. 安装 nginx

①切换到 root 帐号,输入命令:

sudo su root

image027.png

②需要使用 nginx 作为 Web 服务器,所以我们首先要安装 nginx。可以使用 yum 命令直接进行安装:

yum install -y nginx

image028.png

③安装完成后启动 nginx 服务器,命令如下:

systemctl start nginx
systemctl enable nginx

image030.png

ii. 建立博客根目录

我们将博客的页面文件放在/home/www/website/路径下,需要先创建这些文件。

cd /home
mkdir www
cd www
mkdir website

查看创建的文件:

image032.png

iii. 配置 nginx 路由

建立了博客的根目录后,需要将 nginx 服务器指向这个根目录地址,才能访问到博客页面,所以需要修改 nginx 的配置文件。

可以通过nginx -t查看配置文件所在的位置

image-20240130181155003

而阿里云默认的库下载的是基于 fedora 的 nginx,默认配置文件位于etc/nginx/下的nginx.conf。

查看 nginx 的默认配置文件:

cd ~
cd /etc/nginx
ls

image034.png

文件中的nginx.conf就是默认配置文件。

但是我们不采用直接修改 nginx 配置文件的方式,而是新建一个文件夹,将自己的配置写在新建的文件夹中。再利用include,在配置文件nginx.conf中将文件夹引入进来即可。这样若有新的需求时,只需在文件夹中添加新需求的配置文件即可,不会再次修改配置文件nginx.conf,提高效率。

切换/etc/nginx/目录,在此目录下创建一个文件夹vhost:

cd /etc/nginx
mkdir vhost
cd vhost

image036.png

输入vim blog.conf新建blog.conf文件,并编辑内容:

server{        listen    80;root /home/www/website;server_name test.top;location /{        }
}

image037-打码.png

其中,listen代表监听 80 端口。root是博客的根目录,页面存放的地址。server_name是服务器名称,填域名test.top,将域名和博客的页面根目录绑定。

为了让http://www.test.top/也能访问到博客页面,再新建一个配置文件wwwblog.conf,将server_name设置为www.test.top:

image038-打码.png

这样,/etc/nginx/vhost目录下就有两个配置文件,blog.conf和wwwblog.conf:

image039.png

  • 进入到/etc/nginx/,打开/etc/nginx/目录下的nginx.conf文件,添加下面一行代码,将刚才新建的配置文件引入进来。*.conf的意思是将vhost文件夹下的所有.conf后缀的文件都引入了进来。注意:要写在http{}的里面。

image-20240130182518450

include /etc/nginx/vhost/*.conf;

image040.png

至此,完成了 nginx 路由的配置,将域名和云服务器指定路径进行了绑定。

4、安装nodeJS

  1. 通过yum命令安装

输入输入命令:

curl -sL https://rpm.nodesource.com/setup_18.x - | bash -
yum install -y nodejs

image042.pngimage044.pngimage046.pngimage048.png

安装完成后执行 node -v 和 npm -v ,如果打印版本号则安装成功。

image049.png

  1. 下载安装包安装

centos7系统参考这篇博客:

CentOS7 安装NodeJS详细教程(附带安装步骤)_centos7安装node-CSDN博客

步骤四:配置服务端Git

这一部分主要目的是本地电脑可以通过ssh方式连接到云服务器,然后就可以通过命令行方式将博客传到云服务器上。

1、安装Git

输入命令:

yum install git

image050.pngimage052.png

2、配置Git用户

输入以下命令添加 Git 用户:

adduser git

image055.png

修改用户权限命令:

chmod 740 /etc/sudoers

打开/etc/sudoers命令:

vi /etc/sudoers

在这个位置添加语句:

git ALL=(ALL) ALL

image056.png

保存退出后,将sudoers文件权限改回原样:

chmod 400 /etc/sudoers

设置 Git 用户的密码:

sudo passwd git

image058.png

要注意在linux中输入密码是不可见的,但是不意味着你没有输入成功,所以放心输入然后按enter即可

切换到 git 用户,然后在~目录下创建.ssh文件夹,命令:

su git
cd ~
mkdir .ssh
cd .ssh

image060.png

3、配置Git密钥

生成服务器的公钥密钥文件命令,输入后都按回车即可!!!

ssh-keygen

image-20240206113656771

在第3行和第7行可以看到,此时在root下的.ssh目录下就会有两个文件,分别是id_rsa和id_rsa.pub,其中id_rsa.pub就是公钥文件,复制一份:

cd .ssh
cp id_rsa.pub authorized_keys

image062.jpg

这样目录下就会有一个authorized_keys文件,修改它的权限:

chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

image063.png

  • 在本地客户端生成密钥

在本地电脑的CMD命令行工具中输入ssh-keygen -t rsa,都按回车即可!会在本地电脑的用户文件夹下生成密钥:

image065.png

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接着将本地电脑的id_rsa.pub文件的内容全部复制到云服务器的authorized_keys文件的末尾。可采用的方法有:

  1. 打开文件,直接复制内容并粘贴
vi ~/.ssh/authorized_keys

image-20240206122103926

~: 表示当前用户的主目录,即家目录。

  1. 通过Xftp文件传输工具,先将本地电脑的id_rsa.pub文件传输到云服务器某位置,再在云服务器上该位置执行cat id_rsa.pub >> ~/.ssh/authorized_keys即可
  • 然后我们在本地电脑上,打开 cmd,使用ssh方式连接云服务器,输入:

ssh -v git@云服务器的公网IP

image067-打码.pngimage068-打码.png

最后提示Welcome to Alibaba Cloud Elastic Compute Service !,说明不用输入密码也登录成功了,即配置 Git 密钥成功,以后更新博客部署的时候不用输入 Git 密码了!

4、创建Git仓库

接着在服务器中创建一个 Git 仓库,并且新建一个post-receive

cd ~
git init --bare blog.git
chown -R git:git blog.git
vi ~/blog.git/hooks/post-receive

image-20240206124401541

输入以下内容:

git --work-tree=/home/www/website --git-dir=/home/git/blog.git checkout -f
image-20240206124313229

要注意!复制的前面几个字母会被删除,需要自己补充一下

保存退出并授予该文件可执行权限,命令:

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

到此服务器端配置完成。

步骤五:配置Hexo并部署发布

1、安装插件

本地电脑和服务器端配置都完成后,在本地电脑的 Hexo 根目录下,输入以下命令安装插件:

npm install hexo-deployer-git --savenpm install hexo-server

可以在vscode中输入:

image-20240206124803070

2、修改参数

打开_config.yml文件,修改deploy项目如下:

 type: gitrepo: root@云服务器公网IP:/home/git/blog.gitbranch: master

image-20240206125137700

其中,type项表示部署类型为git,仓库repo地址为git@云服务器公网IP:/home/git/blog.git,分支branch为master主分支。

3、远程部署

对博客进行的美化、功能添加、文章拟写等完毕后,命令行输入hexo clean清除本地缓存,输入hexo g -d生成静态文件,并部署到远程仓库。

hexo clean
hexo g -d

此时本地的博客页面已经部署到了服务器的/home/www/website目录下:

image076.png

注意

部署完成后,若打开页面没变化,可以在云服务器输入以下重启nginx即可:

nginx -s reload

到此,通过 hexo 搭建博客并部署到阿里云轻量应用服务器总算完成啦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/389599.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试20个基础面试题及答案

什么是软件测试? 答案:软件测试是指在预定的环境中运行程序,为了发现软件存在的错误、缺陷以及其他不符合要求的行为的过程。 软件测试的目的是什么? 答案:软件测试的主要目的是保证软件的质量,并尽可能…

【C++】类和对象两个必看题

这两个题只有一句代码的差别。 看题目之前我先说一下怎么看汇编指令。 第一题&#xff1a;下面程序运行结果是&#xff1f; A.编译报错 B.运行崩溃 C.正常运行 #include <iostream> using namespace std; class A { public:void Print(){cout << "A::Pri…

【数据结构初阶】二叉树与堆(一)

文章目录 一、树的基础概念1、节点与度数2、树的度与高度3、引入&#xff1a;数组下标为何从0开始4、祖先节点5、树是递归定义的6、树与非树的区别7、代码表示 二、二叉树2.1、满二叉树2.2、完全二叉树2.3、完全二叉树的存储 三、堆 一、树的基础概念 1、节点与度数 节点分为…

多语言海外AEON抢单可连单加额外单源码,java版多语言抢单系统

多语言海外AEON抢单可连单加额外单源码&#xff0c;java版多语言抢单系统。此套是全新开发的java版多语言抢单系统。 后端java&#xff0c;用的若依框架&#xff0c;这套代码前后端是编译后的&#xff0c;测试可以正常使用&#xff0c;语言繁体&#xff0c;英文&#xff0c;日…

Charles怎么修改参数

Charles怎么修改参数 1、再【Structure】下&#xff0c;找到需要抓取的包&#xff0c;鼠标右键&#xff0c;点中断点。 2、在【Proxy】-点击【Breakpoint Settings…】 3、双击设置断点的接口 4、勾选后&#xff0c;点击【OK】。 5、再次刷新&#xff0c;重新发请求&#…

Nginx解析漏洞

一、nginx_parsing 这个解析漏洞其实是PHP CGI的漏洞&#xff0c;在PHP的配置文件中有一个关键的选项cgi.fix_pathinfo默认是开启的&#xff0c;当URL中有不存在的文件&#xff0c;PHP就会向前递归解析。在一个文件/xx.jpg后面加上/php会将/xx.jpg/xx.php解析为php文件。 1、…

第三方库认识- Mysql 数据库 API 认识

文章目录 一、msyql数据库API接口1.初始化mysql_init()——mysql_init2.链接数据库mysql_real_connect——mysql_real_connect3.设置当前客户端的字符集——mysql_set_character_set4.选择操作的数据库——mysql_select_db5.执行sql语句——mysql_query6.保存查询结果到本地——…

修改mac的音量能像windows系统那样给出音量反馈吗?

一、背景 windows有一些非常好的设计&#xff0c;比如拖动音量条的时候会有对应的音量大小的反馈。有时还能用来确定是视频没声音还是电脑坏了 在mac里怎么设置&#xff1f; 二、方法 首先点击菜单栏音量按钮->声音偏好设置…->勾选 “当更改音量时播放反馈”。 mac…

运放失调电流,偏置电流产生原因 ,对运放电路有什么影响,减小偏置电流带来的影响,TINA仿真。

偏置电流&#xff0c;失调电流定义 运放除了输入失调电压外&#xff0c;正常工作的时候&#xff0c;始终存在不为零的静态流进电流&#xff0c;如图所示&#xff1a; 对于BJT组成输入级的运放&#xff0c;这个电流就是差动输入级晶体管的基极电流IBQ&#xff0c;没有它&#xf…

Spring Boot+MyBatis+MySQL如何实现读写分离

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 背景 读写分离是数据库架构中的一种优化策略&#xff0c;它将读操作&#xff08;查询&#xff09;和写操作&#xff08;更新、插入、删除&#xff09;分开处理&#xff0c;通常通过将读请求和写请求分别发送…

正点原子imx6ull-mini-Linux驱动之异步通知实验(13)

在前面使用阻塞或者非阻塞的方式来读取驱动中按键值都是应用程序主动读取的&#xff0c;对于非 阻塞方式来说还需要应用程序通过 poll 函数不断的轮询。最好的方式就是驱动程序能主动向应 用程序发出通知&#xff0c;报告自己可以访问&#xff0c;然后应用程序在从驱动程序中读…

传统CS网络的新生——基于2G网络的远程灌溉实现

概述&#xff1a;iphone 实现远程电话触发&#xff0c;实现灌溉绿植的一般方法 方法一&#xff1a; 远程电话触发&#xff0c;音频线左右声道会产生一个信号&#xff0c;可以在后端利用SR锁存器暂存信号&#xff0c;后级可以接相应的控制电路实现灌溉。 方法二&#xff1a; 同…

【JavaScript】详解默认导出和命名导出的区别

文章目录 一、默认导出二、命名导出三、默认导出和命名导出的区别四、实际应用案例五、总结 在JavaScript模块化开发中&#xff0c;导入和导出模块是核心操作。ES6引入的模块化语法提供了两种主要的导出方式&#xff1a;默认导出&#xff08;default export&#xff09;和命名导…

【数学建模】——【A题 信用风险识别问题】全面解析

目录 1.题目 2.解答分析 问题1&#xff1a;指标筛选 1.1 问题背景 1.2 数据预处理 1.3 特征选择方法 1.4 多重共线性检测 1.5 实现步骤 问题2&#xff1a;信用评分模型 2.1 问题背景 2.2 数据分割 2.3 处理不平衡数据 2.4 模型选择与理由 问题3&#xff1a;模型对…

notes for datawhale summer camp chemistry task3

Transformer transformer的诞生 循环神经网络&#xff1a;由于所有的前文信息都蕴含在一个隐向量里面&#xff0c;这会导致随着序列长度的增加&#xff0c;编码在隐藏状态中的序列早期的上下文信息被逐渐遗忘。 卷积神经网络&#xff1a;受限的上下文窗口在建模长文本方面天…

Taming Lookup Tables for Efficient Image Retouching

Abstract 高清屏幕在终端用户相机、智能手机和电视等边缘设备中的广泛使用&#xff0c;刺激了对图像增强的巨大需求。现有的增强模型通常针对高性能进行优化&#xff0c;但不能减少硬件推断时间和功耗&#xff0c;尤其是在计算和存储资源受限的边缘设备上。为此&#xff0c;我…

信息学奥赛初赛天天练-53-CSP-J2019阅读程序2-模拟算法在数组中典型应用

PDF文档公众号回复关键字:20240802 2019 CSP-J 阅读程序2 1阅读程序(程序输入不超过数组或字符串定义的范围&#xff1b;判断题正确填 √&#xff0c;错误填 。除特殊说明外&#xff0c;判断题 1.5 分&#xff0c;选择题 3 分&#xff0c;共计 40 分) 假设输入的n和m都是正整…

前端Web-JavaScript(上)

要想让网页具备一定的交互效果&#xff0c;具有一定的动作行为&#xff0c;还得通过JavaScript来实现, 这门语言会让我们的页面能够和用户进行交互。 什么是JavaScript JavaScript&#xff08;简称&#xff1a;JS&#xff09; 是一门跨平台、面向对象的脚本语言&#xff0c;是…

【C++11】:右值引用移动语义完美转发

目录 前言一&#xff0c;左值引用和右值引用二&#xff0c;左值引用与右值引用比较三&#xff0c;探索引用的底层四&#xff0c;右值引用使用场景和意义4.1 解决返回值问题4.2 STL容器插入接口的改变 五&#xff0c;移动语义六&#xff0c;完美转发6.1 模板中的&& 万能…