搭建博客(Hexo)到云服务器
本文最后更新于:2025年6月25日 晚上
搭建Hexo博客
安装Hexo
安装 Hexo 相当简单,只需要先安装下列应用程序即可:
如果您的电脑中已经安装上述必备程序,那么恭喜您!你可以直接前往 安装 Hexo 步骤。
如果您的电脑中尚未安装所需要的程序,请根据以下安装指示完成安装。
安装 Git
- Windows:下载并安装 git。
- Mac:使用 Homebrew, MacPorts 或者下载 安装程序。
- Linux (Ubuntu, Debian):
sudo apt-get install git-core
- Linux (Fedora, Red Hat, CentOS):
sudo yum install git-core
Mac 用户
如果在编译时可能会遇到问题,请先到 App Store 安装 Xcode,Xcode 完成后,启动并进入 Preferences -> Download -> Command Line Tools -> Install 安装命令行工具。
Windows 用户
对于中国大陆地区用户,可以前往 淘宝 Git for Windows 镜像 下载 git 安装包。
安装 Node.js
Node.js 为大多数平台提供了官方的 安装程序。对于中国大陆地区用户,可以前往 淘宝 Node.js 镜像 下载。
其它的安装方法:
- Windows:通过 nvs(推荐)或者 nvm 安装。
- Mac:使用 Homebrew 或 MacPorts 安装。
- Linux(DEB/RPM-based):从 NodeSource 安装。
- 其它:使用相应的软件包管理器进行安装,可以参考由 Node.js 提供的 指导。
对于 Mac 和 Linux 同样建议使用 nvs 或者 nvm,以避免可能会出现的权限问题。
Windows 用户
使用 Node.js 官方安装程序时,请确保勾选 Add to PATH 选项(默认已勾选)
For Mac / Linux 用户
如果在尝试安装 Hexo 的过程中出现
EACCES
权限错误,请遵循 由 npmjs 发布的指导 修复该问题。强烈建议 不要 使用 root、sudo 等方法覆盖权限
Linux
如果您使用 Snap 来安装 Node.js,在 初始化 博客时您可能需要手动在目标文件夹中执行
npm install
。
安装 Hexo
所有必备的应用程序安装完成后,即可使用 npm 安装 Hexo。
$ npm install -g hexo-cli
进阶安装和使用
对于熟悉 npm 的进阶用户,可以仅局部安装 hexo
包。
$ npm install hexo
安装以后,可以使用以下两种方式执行 Hexo:
npx hexo <command>
- Linux 用户可以将 Hexo 所在的目录下的
node_modules
添加到环境变量之中即可直接使用hexo <command>
:
echo 'PATH="$PATH:./node_modules/.bin"' >> ~/.profile
Node.js 版本限制
如果你坚持使用旧的 Node.js,你可以考虑安装 Hexo 的过去版本。
请注意,我们不提供对过去版本 Hexo 的错误修复。
我们强烈建议永远安装 最新版本 的 Hexo,以及 推荐的 Node.js 版本。
Hexo 版本 | 最低版本 (Node.js 版本) | 最高版本 (Node.js 版本) |
---|---|---|
6.2+ | 12.13.0 | latest |
6.0+ | 12.13.0 | 18.5.0 |
5.0+ | 10.13.0 | 12.0.0 |
4.1 - 4.2 | 8.10 | 10.0.0 |
4.0 | 8.6 | 8.10.0 |
3.3 - 3.9 | 6.9 | 8.0.0 |
3.2 - 3.3 | 0.12 | 未知 |
3.0 - 3.1 | 0.10 或 iojs | 未知 |
0.0.1 - 2.8 | 0.10 | 未知 |
上次更新:2023-10-25
使用Fluid主题
搭建 Hexo 博客
如果你还没有 Hexo 博客,请按照 Hexo 官方文档 (opens new window)进行安装、建站。
获取最新版本
方式一
Hexo 5.0.0 版本以上,推荐通过 npm 直接安装,进入博客目录执行命令:
npm install --save hexo-theme-fluid
然后在博客目录下创建 _config.fluid.yml
,将主题的 _config.yml (opens new window)内容复制过去。
方式二
下载 最新 release 版本 (opens new window)解压到 themes 目录,并将解压出的文件夹重命名为 fluid
。
指定主题
如下修改 Hexo 博客目录中的 _config.yml
:
theme: fluid # 指定主题
language: zh-CN # 指定语言,会影响主题显示的语言,按需修改
创建「关于页」
首次使用主题的「关于页」需要手动创建:
hexo new page about
创建成功后修改 /source/about/index.md
,添加 layout
属性。
修改后的文件示例如下:
---
title: 标题
layout: about
---
这里写关于页的正文,支持 Markdown, HTML
WARNING
layout: about
必须存在,并且不能修改成其他值,否则不会显示头像等样式。
更新主题
方式一
适用于通过 Npm 安装主题。
在博客目录下执行命令:
npm update --save hexo-theme-fluid
方式二
适用于通过 Release 压缩包安装主题,且没有自行修改任何代码的情况。
- 先将原文件夹重命名为别的名称,例如
fluid-bkp
,用于升级失败进行回退; - 按照安装步骤,重新下载 release (opens new window)并解压重命名为
fluid
; - 如果某些配置发生了变化(改名或弃用),release 的说明里会特别提示,同步修改原配置文件即可。
方式三
适用于自定义了一些代码,或想体验其他分支的情况,以 dev 分支为例。
- 确定自己的 fluid 目录已经开启 git,并且所有改动都已 commit;
- 把 fluid 仓库的 develop 分支拉取到自己当前的分支上(也可新建一个分支再拉取):
git pull https://github.com/fluid-dev/hexo-theme-fluid.git develop
- 解决代码冲突,保留自己修改的部分(如何解决冲突可自行搜索)。
部署博客到云服务器
部署环境
本地环境:Windows 10 LTSC 1809
服务器环境:CentOS Linux release 7.9.2009 (Core)
Git环境安装
本地生成 Git 密钥
Git使用Https协议,每次pull,push都要输入密码,使用相当不便利,使用git协议,然后使用ssh密钥,就可以省去每次都输入密码
ssh-keygen -C "your@mail.com"
一路回车之后,在本地的 C:\Users\hhu\.ssh
下会有 两个文件 公钥:id_rsa.pub
和 私钥:id_rsa
,一会要把公钥里的内容复制到服务器上配置
服务器上的的配置git环境
1、安装Git
切换到 root 用户
安装包的依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel yum install gcc perl-ExtUtils-MakeMaker
进入
/usr/local/src
目录,下载Git(这里用2.34.1),并解压cd /usr/local/src wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.34.1.tar.gz tar -zxvf git-2.34.1.tar.gz
进入解压目录,编译,安装(prefix是前缀,安装在指定目录)
cd git-2.34.1 make prefix=/usr/local/git all make prefix=/usr/local/git install
配置环境变量
vim /etc/profile # 编辑环境配置文件
# 配置GIT export GIT_HOME=/usr/local/git/bin export PATH=$GIT_HOME/bin:$PATH
source /etc/profile # 刷新环境配置文件,使配置的信息生效
git –version 测试
git --version
显示下列信息就标识成功了:
git version 2.34.1
2、配置git用户
创建git用户并设置密码
useradd git # 添加git用户 passwd git # 给git用户设置密码
将 git 用户添加到 sudoers 文件中
centos系统中的用户可以分为两类:
- 超级用户– root
- 普通用户–其他
su和sudo的区别如下:
- su命令主要作用:让你可以切换用户身份,来执行某种操作的命令,在已经登录的会话中(不登出当前用户的情况下)切换到另外一个用户。
- sudo命令作用:容许当前用户以特定用户去执行特定命令
chmod 740 /etc/sudoers # 临时更改文件的权限,进行编辑 vim /etc/sudoers # 编辑sudoers
## Allow root to run any commands anywhere root ALL=(ALL) ALL # 添加下面这行 git ALL=(ALL) ALL
chmod 400 /etc/sudoers # 把权限改回去
配置公钥
vim /home/git/.ssh/authorrized_keys # 在git用户下的.ssh目录下创建 authorrized_keys 文件 # 复制本机环境(C:\Users\hhu\.ssh) 的 id_rsa.pub 中的内容到 authorrized_keys 中
测试
在本机环境下的git_bash中(不要用CMD),输入下列命令进行验证:
ssh -v git@服务器ip
如果最后一行显示的是:
Host key verification faild
,把Windows中.ssh/known_hosts这个文件的第二行删掉即可。注意:如果服务器ssh端口不是默认的
22
的,需要在本机环境下,用 git_bash 在 C:\Users\hhu.ssh 下创建 config 文件(没有后缀),内容如下:# 如果是域名 访问 Host xxx HostName xxx.com Port 3333 # 如果是 IP 访问 Host "211.111.xx.xxx" Port 3333
3、创建博客网站的目录
使用
root
用户在/home/www/
目录下创建TheBlogOfHH
(名称随意)权限给 git 用户,不然后续自动推送可能会出现权限问题
chown -R git:git /home/www/TheBlogOfHH
4、自动推送
在git用户家目录创建一个git仓库,把前面本地搭建好的博客文件传到这儿来进行管理
cd /home/git # 进入家目录 git init --bare TheBlogOfHH.git # 初始化仓库
创建钩子文件,用以自动推送
vim TheBlogOfHH.git/hooks/post-receive # 创建钩子文件
添加以下内容:
#!/bin/sh git --work-tree=/home/www/TheBlogOfHH --git-dir=/home/git/TheBlofOfHH.git checkout -f
注意:上述第一个
work-tree
是存放博客文件的目录,后面git-dir
是 刚刚初始化好的仓库的目录最后,赋予这个文件可执行权限
chmod +x /home/git/TheBlofOfHH.git/hooks/post-receive
本地博客 _config.yml 配置
**编辑本地博客的 _config.yml **文件,最后的位置更改如下:
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: git
repo: git@IP地址:/home/git/TheBlogOfHH.git
branch: master
Nginx环境安装
接下来的操作都是在服务器端
1、安装组件
安装gcc
gcc是linux下的编译器在此不多做解释,感兴趣的小伙伴可以去查一下相关资料,它可以编译 C,C++,Ada,Object C和Java等语言
yum -y install gcc # 安装gcc gcc -v # 查看版本
pcre、pcre-devel安装
pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库。
yum install -y pcre pcre-devel
zlib安装
zlib库提供了很多种压缩和解压缩方式nginx使用zlib对http包的内容进行gzip,所以需要安装
yum install -y zlib zlib-devel
安装openssl
openssl是web安全通信的基石,没有openssl,可以说我们的信息都是在裸奔。。。。。。
yum install -y openssl openssl-devel
2、安装Nginx
切换
root
用户,进入/usr/local/src
目录下载nginx安装包,解压
wget http://nginx.org/download/nginx-1.9.9.tar.gz
tar -xvf nginx-1.9.9.tar.gz
编译、安装
cd nginx-1.9.9 ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module # 设置安装目录为 /usr/local/nginx make && make install # 编译并且安装
启动
cd /usr/local/nginx/sbin # 进入安装目录的 sbin 目录 ./nginx # 启动Nginx
验证
浏览器输入服务器IP进行访问
设置Nginx开机自启动
vim /lib/systemd/system/nginx.service # 创建 nginx.service 文件
nginx.service文件内容如下:
[Unit] #描述服务 Description=nginx #描述服务类别 After=network.target #服务运行参数的设置,注意【Service】的启动、重启、停止命令都要用绝对路径 [Service] #后台运行的形式 Type=forking #服务具体运行的命令 ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf #重启命令 ExecReload=/usr/local/nginx/sbin/nginx -s reload #停止命令 ExecStop=/usr/local/nginx/sbin/nginx -s quit #表示给服务分配独立的临时空间 PrivateTmp=true #运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3 [Install] WantedBy=multi-user.target
加入开机启动:
systemctl enable nginx.service
取消加入开机启动:
systemctl disable nginx.service
配置nginx
- 进入 /usr/local/nginx/conf
- 编辑 nginx.conf
# 注意配置这个 user,默认的是 nobody,可能会造成权限问题
user root;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include 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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name codeofhh.cn;
# 重定向到 https链接
rewrite ^(.*)$ https://$server_name$1 permanent;
}
server {
listen 443 ssl;
server_name codeofhh.cn;
# 安全证书位置,没有的需要取下载nginx配置的证书
ssl_certificate /usr/local/nginx/cert/server.crt;
ssl_certificate_key /usr/local/nginx/cert/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
location / {
# 博客网站目录
root /home/www/TheBlogOfHH;
index index.html index.htm;
}
error_page 404 /404.html;
location /404.html {
root /home/www/TheBlogOfHH/404.html;
}
error_page 500 502 503 504 /50x.html;
location /50x.html {
root /usr/local/nginx/html;
}
}
}
重启nginx
systemctl restart nginx.service
注意:上述文件中配置了ssl证书,如果没有证书记得删除那段配置,如果有,需要下载下来放到/usr/local/nginx/cert目录,并改名字
Nginx常见报错:
INFO Validating config ERROR Deployer not found: git
解决方法:
原因:少了hexo针对git的deploy组件
解决方法:npm install –save hexo-deployer-git
上传证书没权限
使用root权限将上传文件夹权限修改为可读可写
chmod -R 777 xxx
nginx: [emerg] unknown directive "ssl_certificate1" in /usr/local/nginx/conf/nginx.conf:107
原因:这是因为没有安装
SSL
模块方法:
在Nginx安装文件解压目录执行
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module make # 注意,不是 make install,否则会覆盖安装的Nginx
网页报错:NGINX - ERR_SSL_PROTOCOL_ERROR
在Nginx配置中设置 https server中 的监听,除了有
443
之外,还要加一个ssl
在本机推送博客文件到服务器
hexo g
生成静态html文件- 执行
hexo d
推送到服务器