Hexo博客部署到云服务器
2015年开始使用Hexo写博客,并将博客托管在GitHub上,同时在阿里云买了域名做了备案。但是由于GFW的原因在国内访问极慢,于是后来托管到CODING上,终于平稳运行了一段时间。在2021年年底收到来自CODING的一封邮件,意思就是CODING不再提供网站托管功能,已托管的网站后续需在腾讯云Serverless控制台进行域名配置、部署等操作.
不过这个影响不大,只不过管理入口发生了变化。可是就在2022年2月份,我又收到一封来自阿里云的邮件,说我的备案信息存在2个问题,问题1是备案接入信息与实际接入信息不符;问题2是网站下方备案编号未指向工信部网站。
后者好解决,可前者因为当时备案的阿里云服务器早就已经到期回收了,而且现在博客托管在腾讯云,哪怕申请了阿里云服务器也还是无法解决问题。于是我上腾讯云官网查看下了有关ICP备案的相关内容,发现我这种情况只需在腾讯云做“接入备案”即可,终于发现了一丝曙光
可就在我暗中窃喜的时候,我又看了如下信息……通过腾讯云Serverless服务进行备案,需要购买Serverless服务资源包,并且需满足腾讯云账号实名认证类型为“企业”和备案主体类型为“非个人”。犹如晴天霹雳。
既然这样,那就只剩下最后一条路了,买台阿里云服务器,然后将Hexo博客部署到云服务器,这样就可以完美解决啦!
有人会说先申请一台阿里云服务器,等阿里云备案信息核查通过后再退库后就可以,只是这样只能应付一时,长期来看并不是最优解决方案。而且近年来备案的要求和审查力度越来越严格了,建议还是不要投机取巧。
服务器配置要求
CPU | 内存 | 操作系统 | Git版本 | WEB软件 |
---|---|---|---|---|
>= 1核 | >= 2G | 推荐CentOS7.x | Git2.x | 推荐使用宝塔Linux面板安装LNMP套件,操作管理方便 |
说明
WEB软件也可自行安装Nginx或Apache,推荐使用宝塔Linux面板是因为其不仅可以方便的添加网站和开启HTTPS,还支持对服务器进行资源监控,端口管理等功能,是一款能够有效提升运维效率的服务器管理软件。
Git安装及配置
说明
因为CentOS自带的系统yum源中的Git版本较低,此处采用源码编译的方式进行安装
安装依赖库和编译工具
1 | yum install gcc openssl-devel curl-devel expat-devel -y |
说明
如果自带的系统yum源无法访问,可参考以下方法配置阿里云yum源
1 | cd /etc/yum.repos.d/ |
下载Git源码包并解压编译安装
到Git官方下载页面根据所用操作系统选择对应的安装方法,由于RedHat/Oracle Linux/CentOS通常会发布旧版本的Git,可到此页面下载更新版本的tar包并从源代码构建。
卸载旧版本的Git(如果有的话)
1 | yum remove git -y |
解压Git源码包
1 | tar zxf git-2.31.0.tar.gz |
执行编译
1 | make prefix=/usr/local/git all |
安装Git到/usr/local/git
目录下
1 | make prefix=/usr/local/git install |
配置Git环境变量
修改/etc/profile
配置文件并使其生效
1 | echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/profile |
验证安装完成
1 | git --version |
创建Git用户并配置sudo权限
创建Git用户
1 | useradd git |
配置sudo权限
1 | visudo |
按向下键(或J
键)找到root ALL=(ALL) ALL
,在其后面添加以下内容并保存退出
1 | git ALL=(ALL) ALL |
配置密钥
在本地机器执行以下命令创建密钥,如果本地机器是Windows则在Git Bash中执行
说明
如果本地机器已有密钥,可跳过此步,无需重复创建
1 | ssh-keygen -t rsa |
复制~/.ssh/id_rsa.pub
里面的公钥内容,在服务器执行以下命令,切换到git
用户创建~/.ssh
目录,并将刚才复制的公钥内容保存到authorized_keys
文件中,修改文件权限,最后切换回root
用户
1 | # 切换至git用户 |
测试从本地机器是否可以通过git用户免密登录服务器
1 | ssh git@<yourIp> |
创建网站根目录
1 | mkdir -p /data/web/blog |
说明
此网站根目录对应WEB软件的网站发布目录,可自定义。
初始化Git裸仓库并配置自动化部署
1 | mkdir -p /data/git |
此时在Git仓库目录(/data/git/blog.git
)下,有一个自动生成的hooks
目录,在hooks
目录下创建一个新的钩子post-receive
,用于自动化部署
1 | vim /data/git/blog.git/hooks/post-receive |
在文件中添加以下内容,根据实际情况修改工作树目录和Git目录
1 |
|
修改文件权限
1 | chown git:git /data/git/blog.git/hooks/post-receive |
安装并配置宝塔Linux面板
安装宝塔Linux面板
宝塔Linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能。
说明
宝塔Linux面板安装教程可在官网查看,本文安装的是7.8.0正式版
1 | cd ~ |
中间会让确认是否默认安装到/www
目录下,输入y
回车即可
1 | Do you want to install Bt-Panel to the /www directory now?(y/n):y |
网络状况良好的情况下大概3分钟即可安装完成,安装成功会输出如下内容,其中包括面板的外网、内网访问地址和默认的用户名密码,这些信息也可之后再通过/etc/init.d/bt default
命令查看
说明
如果是在阿里云或其他云商的服务器上部署,记得参考官网安装教程开启相关安全组端口,否则将无法正常使用面板
1 | ================================================================== |
配置宝塔Linux面板
浏览器访问面板地址,使用默认用户名密码登录
下拉滚动条并阅读《用户协议》,勾选‘我已阅读并同意“《用户协议》”
’,单击“进入面板
”
因为宝塔面板许多功能都依赖于官网,第一次登录后需要绑定宝塔账号,如果还没有宝塔账号可以单击“登录
”按钮下方的“未有账号,免费注册
”跳转到注册,如果已有宝塔账号则直接输入账号信息单击“登录
”进行绑定
在“推荐安装套件
”窗口选择安装“LNMP(推荐)
”,仅勾选安装“Nginx
”,安装方式选择“极速安装
”或“编译安装
”均可,最后单击“一键安装
”,等待安装完成。
说明
Hexo是一个快速,简单和强大的博客框架,Hexo会将你写的博客快速生成静态文件并附带一个美观的主题,因此只需要安装Nginx即可满足发布博客的要求,其余组件可视自身情况勾选安装。
添加网站并按需配置SSL证书
单击“网站
”>“添加站点
”
填写网站相关信息后,单击“提交
”
- 域名:设置网站域名,如需填写多个域名,请换行填写,每行一个域名,默认为80端口
- 根目录:此处设置的根目录就是之前创建的网站根目录
/data/web/blog
,如果不是根据教程创建的,选择相应的目录即可
到域名注册商根据服务器类型(此处为Nginx)下载对应域名的SSL证书(以阿里云为例),其中.key
后缀的是密钥,.pem
后缀的是证书。
单击刚创建的网站SSL证书下的“未部署
”字样
选择“其他证书
”,用文本编辑器完整复制粘贴密钥(KEY)和证书(PEM或CRT格式)的内容到对应的文本框中,单击“保存
”
证书添加成功后在右上角打开“强制HTTPS
”
配置本地Hexo
在博客根目录_config.yml
中添加以下内容
1 | deploy: |
执行部署
1 | hexo clean all && hexo g && hexo d |
访问博客域名,看是否成功
说明
访问前需要在域名注册商配置域名解析,将域名解析到云服务器IP地址,如果是本地服务器也可通过配置hosts解析进行测试。