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

将Hexo部署到云服务器(使用宝塔面板)

原创
作者头像
Taitres
修改2024-04-23 18:28:45
13.2K4
修改2024-04-23 18:28:45
举报
文章被收录于专栏:Taitres' blogTaitres' blog

将Hexo部署到云服务器

本来Hexo是部署在GitHub上的(可以看我之前文章Hexo搭建静态博客 - Taitres' Blog包括了Hexo的基本使用),但是访问太慢了,并且想折腾一下,还想整个个人云盘,就买了个腾讯云的轻量应用服务器,把Hexo搬过来了,看了很多文章,记录下最终的解决方案。

思路是:

  • 在服务器上搭建Git环境,创建Git仓库
  • 在主机生成Hexo静态文件,通过与服务器连接,推到服务器上的Git仓库
  • 通过git-hooks实现自动部署到网站资源目录
  • Nginx做静态文件服务器,实现外界对网站资源目录的访问

一、环境准备

1. 安装宝塔面板

代码语言:javascript
复制
#centos
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
#Ubuntu
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec

显示如下即成功

代码语言:javascript
复制
外网面板地址: http://xx.xxx.xxx.xxx:8888 #用来访问面板
内网面板地址: http://10.0.8.13:8888
*以下仅为初始默认账户密码,若无法登录请执行bt命令重置账户/密码登录
username: ehmpmg7m #记住用户名和密码
password: dsjfhasd #忘记可使用sudo /etc/init.d/bt default查看
If you cannot access the panel,
release the following panel port [8888] in the security group
若无法访问面板,请检查防火墙/安全组是否有放行面板[8888]端口 #安全组注意放行,轻量级服务器为防火墙

然后在宝塔面板网站->添加站点,找到放置网站资源目录 www/wwwroot/taitres.cc

2.安装nginx和git

代码语言:javascript
复制
yum install -y nginx git

3.Nginx服务器配置

通过宝塔面板可以方便地修改Nginx的配置文件,在taitres.cc的设置中找到配置文件,应该是自动配好了的,没有就自己设置下,也可以使用其他端口

二、Git仓库搭建

之前推hexo的静态文件都是推到GitHub的仓库,现在服务器也是一样,需要仓库来保存

1.添加一个用户git

在服务器端

代码语言:javascript
复制
adduser git   #添加git用户
chmod 740 /etc/sudoers  #改变sudoers文件的权限为文件所有者可写
vim /etc/sudoers
#在root ALL=(ALL) ALL 下方添加一行 
git ALL=(ALL) ALL
chmod 400 /etc/sudoers  #将其权限修改为文件所有者可读

2.给git用户添加ssh密钥

这一步是为了建立主机与服务器连接,使其不需要密码也能登陆

代码语言:javascript
复制
#在主机端打开powershell,cd到C:\Users\admin\.ssh生成密匙,如已有密匙可跳过这一步
ssh-keygen -t rsa -C "taitres.cc"
# -t 指定密钥类型,默认是 rsa ,可以省略
# -C 用于识别这个密钥的注释,可以输入任何内容
# -f 指定密钥文件存储文件名,默认id_rsa
​
#在服务器端
su git  #切换到git用户
mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys #创建authorized_keys文件
chmod 600 ~/.ssh/authorized_keys  #为authorized_keys文件赋予文件所有者可读可写的权限
chmod 700 ~/.ssh  #为.ssh文件夹赋予文件夹所有者可读可写可执行的权限
​

复制公匙id_rsa.pub内容到服务器/home/git/.ssh/authorized_keys,关闭终端,使用ssh git@server重新登录服务器,测试是否能不要密码登录到git用户,如出现Permission denied的问题可尝试文章末尾的解决办法

3.创建Git仓库

代码语言:javascript
复制
mkdir /home/git/repos    #新建目录,这是git仓库的位置
cd /home/git/repos
git init --bare taiblog.git #初始化一个名叫taiblog的仓库

4.配置钩子实现自动部署

找到 /home/git/repos/taiblog.git/hooks/post-update.sample 改名post-update,内容改为

代码语言:javascript
复制
#!/bin/sh
git --work-tree=/www/wwwroot/taitres.cc --git-dir=/home/git/repos/taiblog.git checkout -f

然后给权限

代码语言:javascript
复制
cd taiblog.git/hooks/
chmod +x post-update  #赋予其可执行权限
chown -R git:git /home/git/repos/ #仓库所有者改为git
chown -R git:git /www/wwwroot/taitres.cc/ #站点文件夹所有者改为git

5.测试Git仓库是否可用

代码语言:javascript
复制
#在主机端,如果能将仓库拉下来,说明Git仓库搭建成功git clone git@server_ip:/home/git/repos/taiblog.git

三、本地配置和测试

1.本地配置

修改本地Hexo博客文件夹中的_config.yml文件

代码语言:javascript
复制
deploy:
  type: git
  repo: git@server:/home/git/repos/taiblog.git
  branch: master

2.测试

代码语言:javascript
复制
hexo clean  #清除缓存
hexo generate #生成静态页面
hexo delopy  #将本地静态页面目录部署到云服务器

也可以在package.json 中添加 npm 脚本,这样就可以直接npm run dd一下执行

代码语言:javascript
复制
"scripts": {
    "build": "hexo generate",
    "clean": "hexo clean",
    "deploy": "hexo deploy",
    "dd": "hexo clean && hexo g -d",
    "server": "hexo server",
    "ss": "hexo clean && hexo g && hexo s"
  },

然后访问自己的IP看看是否成功

遇到的一些问题

  1. 在ssh-copy-id 时报错,ssh-copy-id : 无法将“ssh-copy-id”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

解决办法:需要在powershell配置文件中添加以下内容:

代码语言:javascript
复制
function ssh-copy-id([string]$userAtMachine){   
    $publicKey = "$ENV:USERPROcos.ap-chongqing" + "/.ssh/id_rsa.pub"
    if (!(Test-Path "$publicKey")){
        Write-Error "ERROR: failed to open ID cos.ap-chongqing '$publicKey': No such cos.ap-chongqing"            
    }
    else {
        & cat "$publicKey" | ssh $userAtMachine "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1"      
    }
}
  • 关于powershell配置文件的使用: 1.首先检查配置文件是否已经存在 2.打开powershell输入 Test-Path $procos.ap-chongqing如果返回false,则在C:\Users\admin\Documents\下创建一个WindowsPowerShell文件夹,然后执行
代码语言:javascript
复制
New-Item -path $procos.ap-chongqing -type cos.ap-chongqing

就创建了一个Microsoft.PowerShell_procos.ap-chongqing.ps1文件

  1. 使用ssh-add时出现 unable to start ssh-agent service, error :1058

解决方法:使用管理员权限运行 Power Shell,然后执行Set-Service -Name ssh-agent -StartupType automatic.

把 ssh-agent 的启动类型设置为自动方式,在任务管理器中查看,ssh-agent是否开启

  1. 连接ssh时出现 Permission denied

解决方法:vi /etc/ssh/sshd_config 修改为PubkeyAuthentication yes(如果前面有#,就去掉#)

参考文章

普通用户ssh免密登陆完美解决(Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password))_昆兰.沃斯 的博客-CSDN博客

了解ssh代理:ssh-agent-朱双印博客 (zsythink.net)

Git 【基于SSH协议clone GitHub远端仓库到本地】_CoderZYWang-CSDN博客

window配置 远程 ssh linux 常见问题aaaak的博客-CSDN博客

通过Git将Hexo博客部署到服务器 - 知乎 (zhihu.com)

带你跳过各种坑,一次性把 Hexo 博客部署到自己的服务器jeffery5461的博客-CSDN博客hexo 部署

将Hexo部署到自己的服务器上 - StaryJie - 博客园 (cnblogs.com)

腾讯云使用宝塔面板部署Hexo | LeaflagのBlog

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 将Hexo部署到云服务器
    • 一、环境准备
      • 1. 安装宝塔面板
      • 2.安装nginx和git
      • 3.Nginx服务器配置
    • 二、Git仓库搭建
      • 1.添加一个用户git
      • 2.给git用户添加ssh密钥
      • 3.创建Git仓库
      • 4.配置钩子实现自动部署
      • 5.测试Git仓库是否可用
    • 三、本地配置和测试
      • 1.本地配置
      • 2.测试
    • 遇到的一些问题
      • 参考文章
      相关产品与服务
      云服务器
      云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档