最近尝试了Hexo+github来配置属于自己的博客,但是访问速度有些慢。在网上看到一些教程,基于网上教程总结了这一篇《win10+阿里云ECS服务器+hexo搭建个人博客》。
原文来自: 公众号:阿汤笔迹 (我只是个工具人) 向大佬学习。
为什么会选择他的教程呢?这是我自己动手做过之后,没出多少错的教程,所以推荐给大家,有兴趣的可以尝试一下。
目前,主流的博客主要分静态博客和动态博客两类:
所谓动态,就是指有前端有后端,可以登录到后台进行管理。
静态博客是纯前端的展示,没有后端。
直接在简书、CSDN、知乎、博客园等动态博客公共平台上写。
使用WordPress等成熟框架(上述主流框架)搭建动态博客+服务器部署
使用JavaPHP、Python等语言开发属于自己的动态博客+服务器部署
使用Hexo、Hugo、jekyll等主流博客框架搭建静态博客+托管在GitHub等公共平台上
使用Hexo、Hugo、jekyll等主流博客框架搭建静态博客+云端服务器部署
Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。
Hexo在本地安装,不需要部署到我们的服务器上。
我们只需要在本地通过markdown编写文章,然后让Hexo把我们生成静态的html页面,并通过Hexo将生成的html文件上传到我们的服务器。
在本地计算机搭建Hexo环境 Hexo通过generate命令将*.md文件渲染成静态的html页面 然后Hexo通过deploy命令触发git用户通过公钥免密登陆服务器 将静态页面推送到服务器的git仓库(repository)中 服务器再通过钩子(git-hooks) 将静态页面checkout到网站的根目录下,进而实现博客的自动部署。
官网链接:https://nodejs.org/en/download/
选择LTS(长期支持版 Long Term Support schedule)
默认安装就可以,官网有些慢,可以选择其他来源,注意别踩雷。
安装完成后打开win+R打开cmd,输入node -v 显示版本号则说明安装成功
C:\Users\ASUS>node -v
v12.14.1
Node.js中自带了npm包管理工具,在cmd中查看npm版本。
C:\Users\ASUS>npm -v
6.13.4
我们是借助npm来安装Hexo,但是国内镜像源的速度很慢,所以在使用前利用npm安装一个cnpm(淘宝的源)。
npm install -g cnpm --registry=http://registry.npm.taobao.org
它会自己安装,安装结束后 cnpm -v 来查看版本号
在D盘(或任意盘)新建一个blog文件夹用来存放个人博客,使用cmd命令进入该文件夹(不会进入,自行百度)
D:\blog>cnpm install -g hexo-cli
cmd输入hexo -v 有版本好说明安装成功
Hexo安装完成后,在blog文件夹下新建myblogs项目,并对其进行初始化。
D:\blog>hexo init myblogs
D:\blog>cd myblogs
D:\blog\myblogs>npm install
此时,会在blog文件夹下新建myblogs文件夹,并在其内部生成相应的项目文件。
在myblogs文件夹下启动hexo服务。
D:\blog\myblogs>hexo server
若初始化错误,提示没有server命令。输入以下命令,然后重新初始化
D:\blog\myblogs>npm install hexo-server --save
此时,通过 http://localhost:4000/ 便可访问基于Hexo的个人博客主页了。
git是一个版本控制工具,国外镜像下载巨慢,建议寻找淘宝源下载。
安装完成后右键菜单中出现Git Bash和Git GUI菜单表明安装成功,如下图所示。
阿里云域名注册官网上直接注册购买。
域名注册过程中,必须进行邮箱和身份证实名认证才可以继续购买,我们只需按提示进行操作即可。
阿里的云服务产品有很多种,如阿里云主机、ECS服务器等。我这里购买的是阿里云ECS服务器。所谓ECS,即弹性计算服务。
最近百度云高校大学生活动可以免费撸六个月的ECS服务器(2 vCPU 4 GiB(I/O优化) ),真香。
备案需要有服务器和域名。
国家法律规定,使用中国大陆境内服务器托管你的网站时,你必须对你的网站进行备案申请。当你使用阿里云中国大陆境内节点的服务器时,你可以直接在阿里云备案管理系统中提交ICP备案申请。
ICP备案申请审核通过后,管局(工信部)会给我们一个ICP备案号,我们需要将备案号在网站底部标明。网站在工信部备案成功后,还需要在网站开通之日起30日内登录全国公安机关互联网站安全管理服务平台提交公安联网备案申请。
点击阿里云首页的控制台按钮,登录到云服务器管理控制台,便可以查看自己购买的实例了。
新买的ECS服务器实例对root用户是没有设置初始密码的,ECS服务器的root密码需要重置才能用。
重置步骤如下:选中ECS服务器实例,点击下面的重置密码按钮即可重置root用户的密码,密码在实例重启后生效。(该密码必须是字母、数字和其它字符组成的8位以上字符串。)
远程连接服务器的方法都很多。我们既可以通过阿里云自带的VNC(Virtual Network Console,虚拟网络控制台)远程连接Linux实例,也可以通过远程连接软件(例如PuTTY、Xshell、SecureCRT等)连接Linux实例。
需要说明的是:使用阿里云自带的VNC远程连接Linux实例,登录VNC窗口时还要输入一个6位数的远程连接密码,用于连接ECS管理控制台的管理终端,注意不要与root密码混淆。如果使用VNC这个密码一定要记住。
具体连接步骤如下:
a. 在实例列表中选中当前实例,点击右侧按钮:远程连->VNC。
b. 输入远程连接密码。
c. 在控制台中输入用户名:root,及其root密码(实例密码)。回车即可进入阿里云ECS服务器的后台。
由于我们要通过80端口访问nginx服务,而阿里云默认是禁止80端口访问权限的,所以我们要为实例手动添加安全组,让阿里云给相应的端口和IP放行。该步骤非常重要,若不手动配置,我们将无法通过“公网IP+端口”的方式访问我们的ECS服务器。
具体操作步骤如下:
a. 打开阿里云服务管理控制台,点击左侧菜单中的“安全组”按钮,查看安全组列表。
b. 点击右上角的“创建安全组”按钮,创建一个新的安全组。
c. 立即为新建的安全组添加安全组规则,在入方向解除端口和IP限制,具体参数设置如下图所示。这里建议切换到旧版本进行操作.
添加完成后
该步骤是整个博客搭建过程中最重要的一步,实现过程中一定要注意是在服务端操作还是在本地计算机上操作。若在服务器上操作,还要注意是使用root用户进行操作还是使用git用户进行操作。
因为我们用nginx作Web服务器,所以我们需要先安装nginx服务。具体步骤如下:
使用root用户远程登录阿里云服务器,使用yum命令进行安装。
a. 安装nginx依赖环境,安装期间有提示一律选yes。
#yum install gcc-c++
#yum install -y pcre pcre-devel
#yum install -y zlib zlib-devel
#yum install -y openssl openssl-devel
b. 下载nginx安装包。(下面的链接可以换成官网的最新版本)
#wget -c http://nginx.org/download/nginx-1.18.0.tar.gz
c.将安装包解压到/usr/local目录下。
#tar -xvf nginx-1.18.1.tar.gz -C /usr/local
d. 进入/usr/local目录,确认nginx解压到该目录下。
#cd /usr/local
#ls
ls命令会显示该目录下所有文件,你可以在任意位置查看当前目录下所有的文件。
e. 进入nginx-1.18.1目录,会发现该目录下有一个configure文件,执行该配置文件。
#cd nginx-1.18.1/
#ls
#./configure
f. 编译并安装nginx。
#make
#make install
如果编译出现错误,自行百度。
g. 查找nginx安装目录。
#whereis nginx
h.进入安装目录。
#cd /usr/local/nginx
#ls
i. 由于nginx默认通过80端口访问,而Linux默认情况下不会开发该端口号,因此需要开放linux的80端口供外部访问。
#/sbin/iptables -I INPUT -p tcp –-dport 80 -j ACCEPT
j. 进入/usr/local/nginx/sbin目录,启动nginx。
#cd sbin
#./nginx
没有任何消息,代表启动成功。此时,便可以通过“公网IP+端口”的方式访问 http://xx.xx.xxx.xxx:80/ 进入nginx欢迎页面了。注:可以使用./nginx -s stop命令停止服务
a. 专门为hexo创建一个部署目录/home/www/hexo。
#mkdir -p /home/www/hexo
b. 进入/usr/local/nginx/conf目录,打开该文件夹下的nginx.conf配置文件。
#cd /usr/local/nginx/conf
#ls
#vim nginx.conf
进入后按i键由命令模式切换到编辑模式(左下角会显示INSERT)。
将其中的部署根目录(root)修改为/home/www/hexo;
将域名(servername)修改为你自己的域名(www.____.__),如果暂时没有域名就填阿里云实例的公网ip,以后有了再改回来;
查看监听端口(listen)的系统默认值是否为80(不用修改)。
完成以上修改后,先按 Esc 由编辑模式切换到命令模式,再输入 :wq 命令保存并退出编辑器。
a. 退回根目录,安装node.js。
#cd ~
#curl -sL https://rpm.nodesource.com/setup_10.x | bash -
#yum install -y nodejs
b. 查看安装结果,打印版本号即为安装成功。
#node -v
#npm -v
a. 使用yum命令安装Git,安装期间有提示一律选yes。
#yum install git
b. 安装成功后,查看版本号。
#git --version
为了实现博客的自动部署,我们后面要使用公钥免密登录服务器。为了安全起见,最好不要使用root用户免密登录。因此,我们要创建一个新的git用户,用于远程公钥免密登录服务器。
a. 创建git用户。
#adduser git
b. 修改git用户的权限。
#chmod 740 /etc/sudoers
c. 打开文件。
#vim /etc/sudoers
进入后按i键由命令模式切换到编辑模式。找到 root ALL=(ALL) ALL,在下面添加一行 git ALL=(ALL) ALL(注意和上面的命令对齐(TAB键))。修改完成后,先按 Esc 由编辑模式切换到命令模式,再输入 :wq 命令保存并退出编辑器。
d. 保存退出后改回权限。
#chmod 400 /etc/sudoers
e. 设置git用户的密码。
#sudo passwd git
设置密码:****,这样我们就可以使用git用户远程登录阿里云服务器了。
3.6 给git用户配置ssh免密公钥登录
使用git用户免密公钥登录阿里云服务器的原理是:在本地计算机生成一个公钥文件和一个秘钥文件(类似于一个钥匙配一把锁),然后使用FTP工具将公钥文件上传到阿里云服务器,并将公钥安装到authorized_keys列表中去(即:将公钥文件的内容拷贝到authorized_keys文件中去)。这样本地计算机便可以通过ssh方式免密连接我们的阿里云服务器了。
a. 在服务器端将登陆用户切换到git用户,然后在~目录(根目录)下创建.ssh文件夹,用来存放公钥。
#su git
$cd ~
$mkdir .ssh
b. 在本地计算机桌面右键打开GitBash,在本地生成公钥/私钥对。
$cd ~
$cd .ssh
$ssh-keygen
接下来,碰见系统询问就直接按回车键。此时便会在本地计算机的用户根目录(C:\Users\ASUS)下自动生成.ssh(隐藏)文件夹,并在其中创建两个文件,分别为:id_rsa(私钥)和id_rsa.pub(公钥)。
c. 在本地计算机上给私钥设置权限。
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_rsa
d. 下载并安装FTP工具,这里推荐阿里云官方提供的FileZilla
e. 打开FileZilla,使用git用户通过22端口远程连接到阿里云服务器,将客服端生成的公钥上传到服务器的~/.ssh目录下。
主机:你的服务器公网ip
用户名:git
密码:自己设定的
端口:22
f. 上传完成后切回服务器端,继续以git用户的身份进入服务器~/.ssh目录,新建一个authorized_keys文件,并将id_rsa.pub文件中公钥的内容拷贝到该文件中。(注:该步骤既可以用命令行操作,也可使用FTP工具操作。)
$cd ~/.ssh
$cp id_rsa.pub authorized_keys
$cat id_rsa.pub >> ~/.ssh/authorized_keys
g. 在服务器上设置文件权限:
$chmod 600 ~/.ssh/authorized_keys
$chmod 700 ~/.ssh
h. 确保设置了正确的SELinux上下文。
$ restorecon -Rv ~/.ssh
现在,当您使用ssh远程登录服务器时,将不会提示您输入密码(除非您在创建密钥对时输入了密码)。
i. 接下来在本地计算机上使用ssh方式连接我们的云服务器。
$ssh -v [email protected](阿里云公网IP)
或
$ssh [email protected](阿里云公网IP)
3.7 配置Git仓库
a. 在服务器上使用git用户创建一个Git仓库,并且在该仓库中新建一个post-receive钩子文件。
$cd ~
$git init --bare hexo.git
$vi ~/hexo.git/hooks/post-receive
b. 进入后按i键由命令模式切换到编辑模式。输入: git --work-tree=/home/www/hexo --git-dir=/home/git/hexo.git checkout -f
即:让钩子文件删除/home/www/hexo目录下原有的文件,然后从blog.git仓库 clone 新的博客静态文件到/home/www/hexo目录下。
完成以上修改后,先按 Esc 由编辑模式切换到命令模式,再输入 :wq 命令保存并退出编辑器。
c. 授予钩子文件可执行权限。
$chmod +x ~/hexo.git/hooks/post-receive
$cd ~
$sudo chmod -R 777 /home/www/hexo
d. 重启ECS服务器实例。
至此我们就完成了所有关于服务器端的配置。
4、其它配置
4.1 客服端hexo配置
a. 在本地计算机hexo的工程目录(myblogs)下,找到_config.yml,对deploy参数进行修改,如下图所示。马赛克是你的服务器公网ip。
b. 在本地计算机安装插件: hexo-deployer-git 和 hexo-server。在myblogs文件夹下右键打开GitBash,输入以下命令:
$npm install hexo-deployer-git --save
$npm install hexo-server
c. 在本地计算机配置Git全局变量。输入以下命令:
$ git config --global user.email "[email protected]"
$ git config --global user.name “qimu”
d. 使用Hexo生成、发布个人博客。
$ hexo clean
$ hexo generate
$ hexo deploy
此时,便可以通过浏览器访问http://xxx.xxx.xxx.xxx:80/ 进入hexo我的博客主页了。
4.2 域名绑定
待ECS服务器备案审核通过,在阿里云后台对域名解析进行设置,将域名的解析值修改为ECS实例的公网IP。进而完成域名与ECS服务器实例的公网IP进行绑定。
之后就可以通过域名进入自己的博客网站了。
我的服务器和域名还没有备案(www.qimubiji.club) 这种后缀的域名特别便宜,适合新手注册,.com的一年大概60+,服务器1g1核的就可以了,搭建博客够用了。