没有比这个更详细的了!!!,大家部署中的一些问题都可以在这里找到!!!

我本次搭建的流程就是:

购买服务器->购买域名->服务器git仓库搭建->服务器与主机ssh连接->hexo博客推送->域名dns解析->域名备案

参考了这些文章

域名购买看这个阿里云域名购买以及证书申请流程

服务器购买看这个阿里云服务器购买教程

购买域名后的解析

阿里云个人网站搭建

使用宝塔面板将hexo部署到云服务器


将 Hexo 部署到云服务器

hexo是一个个人博客框架,现在我们要做的是把自己部署在github_pages上的博客托管到自己的服务器中

思路是:

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

一、环境准备

1. 安装宝塔面板

# 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

显示如下即成功:

外网面板地址: 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

yum install -y nginx git

3. Nginx 服务器配置

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

二、Git 仓库搭建

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

1. 添加一个用户 git

在服务器端:

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 密钥

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

在主机端打开 PowerShell,cdC:\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 仓库

mkdir /home/git/repos    # 新建目录,这是 git 仓库的位置
cd /home/git/repos
git init --bare shix.git # 初始化一个名叫 shix 的仓库(这里的仓库名可以填自己的名字)

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

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

#!/bin/sh
git --work-tree=/www/wwwroot/shixlin.cc --git-dir=/home/git/repos/taiblog.git checkout -f

然后给权限:

cd taiblog.git/hooks/
chmod +x post-update  # 赋予其可执行权限
chown -R git:git /home/git/repos/ # 仓库所有者改为 git
chown -R git:git /www/wwwroot/shixlin.cn/ # 站点文件夹所有者改为 git

5. 测试 Git 仓库是否可用

在主机端,如果能将仓库拉下来,说明 Git 仓库搭建成功:

git clone git@server_ip:/home/git/repos/shix.git

三、本地配置和测试

1. 本地配置

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

deploy:
  type: git
  repo: git@server:/home/git/repos/shix.git
  branch: master

2. 测试

hexo clean  # 清除缓存
hexo generate # 生成静态页面
hexo delopy  # 将本地静态页面目录部署到云服务器

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

"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 配置文件中添加以下内容:

function ssh-copy-id([string]$userAtMachine){   
    $publicKey = "$ENV:USERPROFILE\.ssh\id_rsa.pub"
    if (!(Test-Path "$publicKey")){
        Write-Error "ERROR: failed to open ID file '$publicKey': No such file"            
    }
    else {
        & cat "$publicKey" | ssh $userAtMachine "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1"      
    }
}

关于 PowerShell 配置文件的使用:

  1. 首先检查配置文件是否已经存在:

    Test-Path $profile
    
  2. 如果返回 false,则在 C:\Users\admin\Documents\ 下创建一个 WindowsPowerShell 文件夹,然后执行:

    New-Item -path $profile -type file
    

    就创建了一个 Microsoft.PowerShell_profile.ps1 文件。

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

解决方法:使用管理员权限运行 PowerShell,然后执行:

Set-Service -Name ssh-agent -StartupType automatic

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

3. 连接 ssh 时出现 Permission denied

解决方法:编辑 /etc/ssh/sshd_config 文件:

vi /etc/ssh/sshd_config

修改为 PubkeyAuthentication yes(如果前面有 #,就去掉 #)。


如果是刚注册的域名,配置好hexo之后还要对域名进行备案

备案流程步骤

  1. 登录阿里云后台,点击右上角的“备案”项。
  2. 点击“我的备案”,进入备案页面。
  3. 首次备案,输入主办者的基础信息和负责人信息,注意必填项要认真填写。
  4. 填写网站的基础信息,选择已购买的服务器,个人网站名称建议使用非商业相关的名称。
  5. 确认信息无误后,点击下一步。
  6. 在手机上安装阿里云 APP,完成证件拍摄和实人验证。
  7. 阿里云初审,如有错误,工作人员会电话提醒修改。
  8. 提交管局后,收到核验信息,输入核验内容并提交,等待管局审核。
  9. 备案成功后,收到信息通知,表示可以开始开办网站。

注意事项

• 各种信息认真填写,多问备案专属客服。
• 备案完成后,部分地区要求 1 个月内不能进行第二个备案。
• 部分地区需要进行公安备案,网警会联系协助。
• 备案通过后,主域名对应网站要符合描述用途,变更需用二级域名。


详细步骤

  1. 登录阿里云后台,点击右上角的“备案”项。
  2. 点击“我的备案”,进入备案页面。
  3. 首次备案,需要输入主办者的基础信息,以及负责人信息:
    • 注意:基本都是必填项,一定要认真、仔细填写,阿里云备案人员很负责,不规范的打回 10 次 8 次也正常。
  4. 填写网站的基础信息,选择已经买好的服务器:
    • 注意:个人网站名称建议,xx 的个人笔记xx 的心情日志xx 的随心感想 等等,不要出现博客、商城等任何商业相关的,会被打回。
    • 个人网站,网站内容必选“其他”。备注中也要描述清楚,这个网站就是个个人网站,其他的啥也不干。不然一准备打回重写。
    • 服务器选择这里,ECS 类型的服务器可以备案 5 个网站,轻量服务器只能备案两个,实际看你的服务器类型。
  5. 确认信息填写无误后,点击下一步。
  6. 接下来的一步,需要在手机上安装阿里云的 APP,在 APP 中完成操作:
    • 在 APP 中,按照指示拍证件的正反面,然后本人在白墙前面做实人验证。
    • 通过后点击下一步。
  7. 接下来就进入阿里云的初审,如果上面的步骤有错误,阿里云的工作人员会电话提醒,需要修改重新提交即可。
  8. 提交管局后,会收到核验信息,内容如下:
    • 点击其中的网址,进入备案核验页面。
  9. 输入核验的内容,点击提交后,完成核验,等待管局审核:
    • 管局审核顺利的话,3~5 个工作日,出现问题的话会驳回修改。
  10. 备案成功后,会收到信息通知,内容大致为“您的备案信息已被变更”,表示备案通过,可以开始开办网站。
    ◦ 至此,搭建网站中最难,最耗时的工作已经完成。

其他备案的注意事项

各种信息一定认真填写,各个省份的要求不尽相同,可以多问备案专属客服;
备案完成后,部分地区要求 1 个月内不能进行第二个备案;
部分地区需要进行公安备案,通常本地的网警会联系你,协助进行备案。
备案通过后,主域名对应的网站,要符合网站描述的用途,不要随意变更,需要学习其他类型网站时,可以用二级域名。


Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐