一. 背景
通过 Hexo 4.0 及 nexT 7.0 + 搭建个人博客后,当然不能就此停步,需要学习的东西还浩如烟海,本文将探索Hexo个人博客部署到个人服务器的过程。
本文章部署到个人云服务器的前提:
- 有一台服务器(硬件准备);
- hexo 博客已经做好搭建工作,可以部署到 GitHub Pages 或 Coding 等(技术准备);
本文不会详细介绍 hexo 的搭建和 npm 、hexo g 等命令的使用,如有需要请参照网络资源教程或等待本博客更新查找。
*二. 获取体验产品--服务器(选读节)
(一)说明
如果你是学生党或是想要尝尝鲜学习新东西而已,可以使用体验产品来折腾。
一来免费,二来体验时长也足够学习到该内容的知识点了。
华为给新用户提供了免费体验的专区,大家可以进行体验。如果自己已经有服务器的可以跳过该环节或是参见该内容区域(二)末尾有服务器优惠购买的活动,优惠力度还比较大,但有时间限制。
(二)购买体验产品
华为开发者免费体验专区:https://activity.huaweicloud.com/free_test/index.html
符合免费体验的条件:
个人选择购买该产品:
选择后进入支付界面,此时会有提示你:是否创建密码 or 开机后再创建。个人建议直接设定密码,因为开机再创建会额外进行不必要的操作,直接创建直接方便,登录的用户名为 root ,点击支付,提示购买成功:
启动服务器并登录:
登录成功:
(三)食髓知味再来一杯--持续支持与后续保障 --==2020年3月3日截止,没了==
体验产品过期后还想使用服务器怎么办?可以选择自购服务器。华为最近有开年采购季的活动,最基础的云服务器打0.6折,最高可以购买3年-->236.65 / (12*3) = 6.574 ¥每月!!这价格不香吗。
况且还可以通过个人邀请链接得到优惠券,不过活动日期不久了,如果需要还得赶紧上车。如果有需要可以点击我的个人推荐链接,你我都可以获得优惠券(新用户),当然你也可以推荐你的给别人也能获得新的优惠券,可以用来购买部分服务器或是直接续费。
【2核4G云服务器低至331元/年,限时抢购】华为云开年回馈用户,产品低至1折,您的专属链接:https://activity.huaweicloud.com/2020feb_promotion/invite.html?fromuser=080e2ff9d78026c30fb1c0026ef09de0&fromacct=d5de3644-9fc9-4193-a434-8726140022f3&needGalaxy=true
续费:
三. 开始配置
(一)云服务器登录连接方式
前提与说明:
- SSH方式登录要求该弹性云服务器已绑定弹性公网IP;
- ssh连接正常;
- ~/.ssh 目录下公钥加入。
开机后才能进行登录。
如果你的服务器为 Windows 操作系统,一般用户名为 administer ;如果为 Linux 操作系统,则为 root。
可登录服务器的方式有如下:
是否绑定EIP | 本地操作系统 | 连接方法 |
---|---|---|
是 | Windows | 使用 PuTTY、Xshell 等远程登录工具 |
是 | Linux | terminal直接使用命令连接 |
是/否 | Windows或者Linux | 使用管理控制台远程登录方式 |
(二)采用 XShell远程登录
XSHELL 是一款界面较好、功能也相对强大的远程登录管理工具,使用非常广泛,在业界比较受欢迎、也比较流行,支持多窗口切换以及常见shh ,Telnet,SFTP等协议。
本文将采用 XShell 进行说明与演示,其他软件操作方法可自行使用。XShell下载地址:https://www.netsarang.com/zh/xshell/,非商业使用可以获得免费许可证。
在确保云服务器已经开机的情况下,新建连接:
(三)在服务器建立 Git 仓库
以下操作建立在 root 权限之下,如权限不足请申请 root 权限或采用 sudo
关键字。
==下文用到的 ganahBlog.git
为我自己的仓库名,可自行设定换成你喜欢的文字; root 为我的远端主机用户名,在后续需要用得到,如果不为 root ,在进行到文章相应位置自行修改。==
首先安装 Git 和 Nginx 服务,如有请跳过:
apt-get update
apt-get install git nginx -y
建立文件路径:
mkdir /var/repo/
修改权限:
chown -R USER:USER /var/repo/
chmod -R 755 /var/repo/
创建远程 Git 仓库:
cd /var/repo
git init --bare {自定义仓库名name}.git
(四)配置 Nginx 托管文件目录
创建目录并修改目录所有权和权限:
mkdir -p /var/www/hexo
chown -R USER:USER /var/www/hexo
chmod -R 755 /var/www/hexo
修改 Nginx 的 default
文件使得 root 指向刚刚创建的 /var/www/hexo
目录:
vim /etc/nginx/sites-available/default
注意 vim 编辑方式:按照以上命令进入后为普通模式,具体介绍可以去找网上的内容,此处只说明如何进行下来的操作:
执行命令后编辑方式如下(下文有类似操作不再提及):
- 点击 i 进入编辑模式;
- 使用键盘上下键查到下图的
server
字段 中的root
; - 修改
root
的指向; - 按住
Esc
退出编辑模式; - 输入
:wq
保存并退出 vim 编辑器; - 如果有域名可以将server_name 字段后写入自己的域名。
- 最后重启 nginx 服务:
service nginx restart
此时已经搭建好自己的nginx服务器,输入自己的服务器公网IP地址即可访问如下界面:
由于服务器暂未搭建任何东西,故访问出现403 ForBidden,如果没有成功则会出现 404 Not Found 或是加载失败等提示。
当然,为了确认是否真的真的搭建成功,也可以在/var/www/hexo 目录下建立index.html 文件:
执行命令: vim index.html;
写入如下代码:
<html>
<body>
<p>This is my Blog.</p>
</body>
</html>
最后输入公网IP发现不再是 403 ForBidden,而是访问了 index.html :
(五) Git 钩子(hooks)
执行下面的命令,在自动生成的ganahBlog.git/hooks
目录下创建一个新的钩子文件:
vim /var/repo/ganahBlog.git/hooks/post-receive
打开文件后,加入下面的代码:
#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/var/repo/ganahBlog.git checkout -f
将文件保存(方法参加上文)后,赋予该文件可执行权限:
chmod +x /var/repo/ganahBlog.git/hooks/post-receive
四. 使用 Git 部署本地 Hexo 到远端服务器
将服务器地址添加到受信任的站点,在本地任意目录从服务器上把hexo_static
仓库克隆下来:
git clone root@{云服务器IP}:/var/repo/ganahBlog.git
- 注意:如果你在远端服务器创建了 Git 用户并设定为拥有者,请将 root 改成 git (git用户)。
编辑站点配置文件_config.yml
, 将 url 改成https://{云服务器IP}/
将 deploy 目标改为 {服务器用户名}@{服务IP}:/var/repo/ganahBlog.git
:
在个人博客站点目录下,打开 Git bash ,使用 hexo clean && hexo g -d
部署:
使用IP访问:
使用自己的域名访问:
效果参考本人个人博客地址:
五. 错误集锦与解决措施参考
(一)部署后访问无效
使用 https://{服务器IP}:80
来访问自己刚刚部署的服务器站点,没有出现博客:
-
请检查以上操作是否有误或命令部分写错。
-
查看服务器的错误日志文件:/var/log/nginx/error.log
此时可以发现是 /var/www/hexo 没有 index.html 文件,该文件存放在本地博客站点 public文件夹下
-
发现错误信息(不同的情况错误可能不同,本文仅代表个人遇到的情况,具体情况请具体分析,可以留言,或许我可以帮得上忙,或是自行搜索相关的文章。
(二)部署到远端服务器被拒绝
刚配置好的 git 仓库服务器,首次提交的时候会报上图的错误,git 默认拒绝了 push 操作,需要进行设置。
-
检查远端主机的 ~/.ssh 下文件的文件,公钥是否正确配置;
-
定位到仓库 ganahBlog.git 下,在 config 文件添加如下代码(可以使用:vim /var/repo/ganahBlog.git/config 进入文件):
[receive] denyCurrentBranch = ignore
最后在该路径下执行如下代码:
git config receive.denyCurrentBranch ignore
成功提交:
(三)拉取失败处理办法
缺少公钥,定位到服务器的 ~/.ssh/下,将自己的公钥粘贴到authorized_keys上去,如果没有公钥,自行查找 Git 公钥生成办法,本文不针对该内容;文件不存在则新建即可:
加入方法与上面编辑 default 文件一样,XShell提供了外部粘贴的办法:
也可以使用下面的指令实现:
ssh [远程主机用户名]@[远程主机IP] 'mkdir -p .ssh && cat >>.ssh/authorized_keys' < ~/.ssh/authorized_keys.pub
结果测试:
云仓库结构:
(四)无法查看 push 后的 git 中文件的原因与解决方法
在初始化远程仓库时使用 git --bare init 而不要使用:git init (不建议);
可以使用命令 git reset --hard 看到 push 后的内容。
两个初始化命令是有区别的,在此不做赘述。
(五)更新远端公钥后连接不上出现下面的问题
ECDSA host key for 125.36.25.875 has changed and you have requested strict checking.
Host key verification failed.
错误信息说明远端主机公钥信息已修改,需要更新:
ssh-keygen -R "远程服务器ip"
此时测试连接远端主机成功:
(六)建立 git 用户
以上第五条参考即在 git 用户下进行登录验证等操作。
为了安全,可以通过 git 用户管理仓库,而不是 root。
adduser git # 按照指引输入密码等
su git # 切换到git用户 git用户家目录 /home
将密钥添加到 git 用户下:
mkdir /home/git/.ssh
vim /home/git/.ssh/authorized_keys
写入公钥即可。
记得更新(第四条),测试连接:
ssh -v git@{服务器IP}
六. TIP
想要域名访问服务器的网站,请记得要备案,不然......
我 .....
Comments NOTHING