hexo博客部署在阿里云服务器上(包括https配置)
说明
云服务器:阿里云
系统:Ubuntu 22.04 64位 UEFI版
终端:腾讯云 OrcaTerm
温馨提示
如果按步骤来,出现了问题,有可能是版本不够或不兼容等问题,这种情况下建议直接cv给ChatGPT。照理说我的步骤应该没大问题,如果还是不行,可以换个教程噢![送花花]
环境安装
更新软件包列表
1 | sudo apt update |
node.js安装
1 | sudo apt install nodejs |
确认 Node.js 是否已成功安装以及版本号
1 | node -v |
安装npm
1 | sudo apt install npm |
确认 npm 是否已成功安装以及版本号
1 | npm -v |
:::details 若想升级nodejs,请戳这里
如果你的阿里云服务器上已经安装了 nvm(Node Version Manager),你可以使用 nvm 来方便地管理 Node.js 的版本。如果没有安装 nvm,你可以按照以下步骤进行安装:
1 | curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.38.0/install.sh | bash |
确认 nvm 命令已经生效后,可以使用以下命令安装新版本的 Node.js(例如,安装 Node.js 14)
1 | nvm install 14 |
安装完成后,使用以下命令切换到新安装的 Node.js 版本:
1 | nvm use 14 |
使用以下命令验证 Node.js 是否成功升级到指定版本:
1 | node -v |
如果你有 Node.js 项目,可能需要重新安装项目的依赖包:
1 | npm install |
:::
git安装
1 | sudo apt install git |
确认 Git 是否已成功安装以及版本号
1 | git --version |
Nginx安装
1 | sudo apt install nginx |
启动 Nginx 服务
1 | sudo systemctl start nginx |
检查 Nginx 服务状态
1 | sudo systemctl status nginx |
hexo安装
1 | npm install hexo |
如果你只是想在当前项目中使用 Hexo,并且不需要在其他项目中使用 Hexo,那么只执行第一个命令即可。这样可以避免全局安装的复杂性和潜在的冲突问题。否则执行下一个命令
1 | sudo npm install -g hexo-cli |
验证
1 | hexo |
配置git环境
创建git用户
1 | adduser git |
切换到git用户
1 | su git |
ssh连接
创建.ssh目录
1 | mkdir ~/.ssh && chmod 700 ~/.ssh |
创建公钥保存文件
1 | touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys |
保存公钥
使用 Vim 编辑器打开 authorized_keys 文件
1 | vim ~/.ssh/authorized_keys |
将ssh连接的公钥复制到authorized_keys文件中就可以通过ssh 连接git用户了
:::details 若不会生成公钥的请看这里
在用户主目录下,查询是否存在“.ssh”文件
- 如果有,再看文件下有没有id_rsa和id_rsa.pub这两个文件,如果也有,可直接到下一步。
- 如果没有,创建.ssh文件即可
桌面右键打开git bash
输入以下命令引号内是github注册使用的邮箱(不知道其他邮箱有没有影响,我的公钥一开始是用在github上的)1
ssh-keygen -t rsa -C "youxiang@qq.com"
全部回车即可
再查看.ssh时,已经有“id_rsa”,“id_rsa.pub”文件。(id_rsa是私钥,不能泄露;id_rsa.pub是公钥,可以公开。)
:::
将id_rsa.pub里的复制到authorized_keys文件即可
vim基础操作在这里不多赘述
创建git仓库
创建一个名为blog的git仓库(名字可自取)
1 | mkdir /var/repo |
配置git-hooks
即配置git推送后执行的脚本
进入文件
1 | vim /var/repo/blog.git/hooks/post-receive |
添加
1 | #!/bin/sh |
设置权限
1 | chmod +x /var/repo/blog.git/hooks/post-receive |
改变 blog.git 目录的拥有者为 git 用户
1 | chown -R git:git blog.git |
创建静态文件目录
1 | mkdir /var/www/hexo |
命令说明
- 创建静态文件目录
- 链接git仓库
- 配置权限
这样git仓库更新便会自动同步到hexo目录下
限制git用户的shell
上面创建的git用户可以通过ssh连接,进行任何操作。为了安全性,我们需要将git用户的活动限制在与Git相关的范围
1 | sudo vim /etc/shells |
在最后一行添加
1 | /usr/bin/git-shell |
现在你可以使用 chsh 命令修改任一系统用户的shell权限了
1 | sudo chsh git |
然后在Login Shell [/bin/bash]: 后输入git-shell路径/usr/bin/git-shell
这样,git用户就只能使用ssh连接对Git仓库进行推送和拉取操作,而不能登录机器并取得普通shell命令
测试
1 | git clone git@服务器ip:/var/repo/blog.git |
成功即代表配置正确
hexo配置
1 | deploy: |
nginx配置
为了能让浏览器能直接访问静态页面,需要使用nginx将端口或域名指向hexo静态文件目录
温馨提示:不同版本的nginx或系统,nginx的配置文件不一定相同,根据具体情况来修改配置
1 | vim /etc/nginx/sites-available/default |
1 | server { |
重启服务
1 | service nginx restart |
部署
直接在你的blog文件中右键打开git bash
1 | hexo clean |
自己遇到的一些错误
遇到
1 | ! [remote rejected] HEAD -> master (unpacker error) |
在终端输入
1 | chown -R git:git /var/repo/blog.git |
遇到
我也没有很好的解决方法,应该权限之类的问题,有可能你之前命令输错或者漏步骤了。
实在不行可以重置服务器,换个教程,说不定就行了。
备案说明
你肯定不想让朋友或其他人通过长且复杂的ID来访问你的博客吧。那你就需要一个域名,并对其备案。
而这些都可以在阿里云上完成
具体步骤不详细说明,以下仅提供主要步骤
- 选择合适的域名,并购买
- 把域名解析到自己的服务器上
- nginx添加自己的域名
- 备案(记得暂停域名的解析)
配置https
配置https可以让你的博客更安全
阿里云,腾讯云的证书都可以,这里以阿里云为示例
放行端口
千万千万要放行443端口,不然你怎么配都没有用,除非你把证书配在了已放行的端口上
证书获取及上传
创建证书
->证书申请
然后默认即可,注意证书绑定域名
填自己的域名
下一步是DNS验证,如果域名在自己账号下,直接自动DNS验证
即可,否则选择手动DNS验证
,具体可查看申请阿里云域名SSL证书具体步骤(图文教程)-阿里云开发者社区
拿到证书后,点击下载
会有两个文件.pem
和.key
,将其上传到服务器/etc/nginx/
目录下,当然这是默认位置,你可自由选择上传位置。这里推荐使用Xftp
具体教程在这使用Xftp上传文件到Linux服务器_用xftp上传文件如何覆盖之前的文件-CSDN博客
配置Nginx
这里我们选择在nginx.conf中导入其他文件夹中的.conf配置文件,否则如果配置都写在nginx.conf中会显得十分拥挤
在nginx文件目录下的conf.d
文件夹中新建一个配置文件,可以叫hexo.conf
在配置中写入
1 | server { |
HTTP重定向到HTTPS
在/etc/nginx/sites-available/default
文件的server
中增加 return 301 https://$host$request_uri;
测试
1 | nginx -t |
重载Nginx
1 | nginx -s reload |
至此,你的博客已经支持HTTPS了