hexo博客上传阿里云服务器(绝对详细!)
没有比这个更详细的了!!!,大家部署中的一些问题都可以在这里找到!!!
我本次搭建的流程就是:
购买服务器->购买域名->服务器git仓库搭建->服务器与主机ssh连接->hexo博客推送->域名dns解析->域名备案
参考了这些文章
域名购买看这个阿里云域名购买以及证书申请流程
服务器购买看这个阿里云服务器购买教程
将 Hexo 部署到云服务器
hexo是一个个人博客框架,现在我们要做的是把自己部署在github_pages上的博客托管到自己的服务器中
思路是:
- 在服务器上搭建 Git 环境,创建 Git 仓库
- 在主机生成 Hexo 静态文件,通过与服务器连接,推到服务器上的 Git 仓库
- 通过 git-hooks 实现自动部署到网站资源目录
- 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,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 仓库
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 配置文件的使用:
-
首先检查配置文件是否已经存在:
Test-Path $profile -
如果返回
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之后还要对域名进行备案
备案流程步骤
- 登录阿里云后台,点击右上角的“备案”项。
- 点击“我的备案”,进入备案页面。
- 首次备案,输入主办者的基础信息和负责人信息,注意必填项要认真填写。
- 填写网站的基础信息,选择已购买的服务器,个人网站名称建议使用非商业相关的名称。
- 确认信息无误后,点击下一步。
- 在手机上安装阿里云 APP,完成证件拍摄和实人验证。
- 阿里云初审,如有错误,工作人员会电话提醒修改。
- 提交管局后,收到核验信息,输入核验内容并提交,等待管局审核。
- 备案成功后,收到信息通知,表示可以开始开办网站。
注意事项
• 各种信息认真填写,多问备案专属客服。
• 备案完成后,部分地区要求 1 个月内不能进行第二个备案。
• 部分地区需要进行公安备案,网警会联系协助。
• 备案通过后,主域名对应网站要符合描述用途,变更需用二级域名。
详细步骤
- 登录阿里云后台,点击右上角的“备案”项。
- 点击“我的备案”,进入备案页面。
- 首次备案,需要输入主办者的基础信息,以及负责人信息:
• 注意:基本都是必填项,一定要认真、仔细填写,阿里云备案人员很负责,不规范的打回 10 次 8 次也正常。 - 填写网站的基础信息,选择已经买好的服务器:
• 注意:个人网站名称建议,xx 的个人笔记,xx 的心情日志,xx 的随心感想等等,不要出现博客、商城等任何商业相关的,会被打回。
• 个人网站,网站内容必选“其他”。备注中也要描述清楚,这个网站就是个个人网站,其他的啥也不干。不然一准备打回重写。
• 服务器选择这里,ECS 类型的服务器可以备案 5 个网站,轻量服务器只能备案两个,实际看你的服务器类型。 - 确认信息填写无误后,点击下一步。
- 接下来的一步,需要在手机上安装阿里云的 APP,在 APP 中完成操作:
• 在 APP 中,按照指示拍证件的正反面,然后本人在白墙前面做实人验证。
• 通过后点击下一步。 - 接下来就进入阿里云的初审,如果上面的步骤有错误,阿里云的工作人员会电话提醒,需要修改重新提交即可。
- 提交管局后,会收到核验信息,内容如下:
• 点击其中的网址,进入备案核验页面。 - 输入核验的内容,点击提交后,完成核验,等待管局审核:
• 管局审核顺利的话,3~5 个工作日,出现问题的话会驳回修改。 - 备案成功后,会收到信息通知,内容大致为“您的备案信息已被变更”,表示备案通过,可以开始开办网站。
◦ 至此,搭建网站中最难,最耗时的工作已经完成。
其他备案的注意事项
• 各种信息一定认真填写,各个省份的要求不尽相同,可以多问备案专属客服;
• 备案完成后,部分地区要求 1 个月内不能进行第二个备案;
• 部分地区需要进行公安备案,通常本地的网警会联系你,协助进行备案。
• 备案通过后,主域名对应的网站,要符合网站描述的用途,不要随意变更,需要学习其他类型网站时,可以用二级域名。
更多推荐
所有评论(0)