前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >将 Hexo 部署在云服务器

将 Hexo 部署在云服务器

作者头像
EmoryHuang
发布2022-10-31 16:15:17
5.2K0
发布2022-10-31 16:15:17
举报
文章被收录于专栏:EmoryHuang's Blog

将 Hexo 部署在云服务器

前言

众所周知,使用 GitHub Page 的访问速度令人发指,当然也有很多人选择部署到 Vercel,这便是我之前的选择,免费,同时还有着更快的速度。但说到底,云服务器往往是更好的选择,只要钱到位 😑。

使用宝塔面板可以比较方便快速的进行部署,不过我更想自己实际动手操作,也一边学习 Linux,就不使用了。

准备工作

本文假设你拥有 Hexo 建站相关的知识,相关的问题不再赘述,你也可以点击这里查看 Hexo 建站相关的知识。

在阅读本文之前,你需要做好以下准备:

  1. 一台云服务器
  2. 域名以及域名解析服务

云服务器

推荐腾讯云,作为云服务的大厂还是非常靠谱的,唯一制约我们操作的就是昂贵的价格了。日常价对于学生党来说真心太贵,推荐在打折、活动时购买,很多时候首年和首月往往还是便宜的,续费就搞不起了,所以还是尽可能优惠的时候买长点吧。对个人博客而言,最基础的 1 核 2G 就足够使用了,也能让你在部署博客以外实现许多想法。

域名

你可以在腾讯云等域名供应商中购买域名,总而言之域名还是挺便宜的,一年只需要几块钱。

云服务器中的操作

以下操作以 Ubuntu 20.04 为例,其他的系统类似。

SSH 连接到云服务器

打开任意一个终端,使用 SSH 连接到云服务器

代码语言:javascript
复制
ssh username@你的服务器公网ip

一般用户名是 root ,之后输入密码即可。

安装 Git

代码语言:javascript
复制
apt-get install git

创建 Git 裸仓库

选个位置创建仓库:

代码语言:javascript
复制
cd /home
mkdir git
cd git
git init --bare blog.git
mkdir blog

其中,blog.git 是 git 仓库,blog 用于存放内容。

创建 Git 钩子

Git 钩子(hooks)是在 Git 仓库中特定事件(certain points)触发后被调用的脚本。通过钩子可以自定义 Git 内部的相关(如 git push)行为,在开发周期中的关键点触发自定义的行为。

我们在本地的项目文件 push 到服务器时,只是提交到了创建的 Git 服务器创建的裸仓库中。还需要进入服务器的 web 运行目录,通过 git pull 命令拉取到 web 目录。为了实现过程的自动化,可以使用 Git 中的钩子来解决该问题。

服务端钩子就是你 push 之后的事情服务器要运行的脚步,有用推的步骤只有一个,所以钩子只有四个 pre-receive 接受之前 update 更新之前 post-update 更新之后 post-receive 接受之后

/home/git/blog.git/hooks 目录下新建 post-receive

代码语言:javascript
复制
vim /home/git/blog.git/hooks/post-receive

写入以下文本:

代码语言:javascript
复制
git --work-tree=/home/git/blog --git-dir=/home/git/blog.git checkout -f

赋予执行权限:

代码语言:javascript
复制
chmod +x /home/git/blog.git/hooks/post-receive

配置 Nginx

代码语言:javascript
复制
apt-get install nginx

Nginx 安装完成之后启动调试

代码语言:javascript
复制
service nginx start

访问云服务器的公网 ip,查看是否有 Nginx 搭建成功的字样。

然后修改 Nginx 的配置文件:

代码语言:javascript
复制
rm -rf /etc/nginx/sites-available/default
vim /etc/nginx/sites-available/emoryhuang.cn

删除默认配置文件,并在同个目录下新建 emoryhuang.cn 写入类似如下的内容:

代码语言:javascript
复制
server {
	listen 80;
	server_name emoryhuang.cn www.emoryhuang.cn; 	# 你的域名

	root /home/git/blog;	# 网站根目录

	index index.html index.htm;

	location / {
		try_files $uri $uri/ =404;
	}
	# 你也可以根据需要配置 ssl
	# listen 443 ssl;
	# ssl_certificate      /etc/nginx/conf/ssl/emoryhuang.cn.pem;
	# ssl_certificate_key  /etc/nginx/conf/ssl/emoryhuang.cn.key;
	# ssl_session_cache    shared:SSL:1m;
	# ssl_session_timeout  5m;
	# ssl_protocols TLSv1.2;
	# ssl_ciphers  HIGH:!aNULL:!MD5;
	# ssl_prefer_server_ciphers  on;
}

只有在 sites-enabled 目录下的配置文件才能够真正被访问,但是可以将文件放在 sites-available 目录下用来存档或生成链接:

代码语言:javascript
复制
ln -s /etc/nginx/sites-available/emoryhuang.cn /etc/nginx/sites-enabled/emoryhuang.cn

之后重新加载配置文件,启动 Nginx

代码语言:javascript
复制
nginx -t 	# debug
service nginx reload
service nginx restart

部署本地 hexo 到云服务器

配置 hexo 根目录的 _config.yml 文件的 deploy 选项

代码语言:javascript
复制
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
  - type: git
    repo:
      github: git@github.com:xxxxxxx/xxxxxxx.github.io.git
      coding: git@e.coding.net:xxxxxxx/xxxxxxx/xxxxxxx.git
      blog: 用户名@你的云服务器公网ip:/home/git/blog # add
    branch: master

然后三连

代码语言:javascript
复制
hexo clean
hexo g
hexo d

按照提示输入密码。

之后访问你的公网 ip,就会发现你的博客已经部署上去了

域名解析

在你的域名解析服务中添加记录:

主机记录

记录类型

解析路线

记录值

@

A

默认

你的云服务器公网 ip

之后你就可以输入你的域名范访问博客。

注意:这里用云服务器的 80 端口,使用 http 访问,如果需要 https 访问,还需要 SSL 证书

参考资料

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 将 Hexo 部署在云服务器
    • 前言
      • 准备工作
        • 云服务器
        • 域名
      • 云服务器中的操作
        • SSH 连接到云服务器
        • 安装 Git
        • 创建 Git 裸仓库
        • 创建 Git 钩子
      • 配置 Nginx
        • 部署本地 hexo 到云服务器
          • 域名解析
            • 参考资料
            相关产品与服务
            云服务器
            云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档