参考链接

我是参考了以下的博客对自己的网站进行的部署,你们可以参考下他们的方式。本文主要是为了简述自己建站中一些情形而已.只是为了提供给我自己看,回顾的而已

Win10下Hexo博客搭建教程,及阿里云服务器部署实战

哔哩哔哩:在家闲着没事干,来建立一个网站吧

前期准备工作

在我进行Github上的内容部署到阿里云的服务前,我已经做了如下工作;

第一步:购买了阿里云的一年 一核两G的轻量服务器,学生价为八十多。区域位于杭州的服务器

第二步:我安装了宝塔面版,对自己的服务器进行可视化的管理以及对一键安装了LAMP(Linux Apache MySQL PHP)环境。原本想用wordpress搭建博客的,但是过于笨重以及不太适应md文件,(主要是自己菜)

第三步:我购买了ldity.top的域名,并进行域名实名认证(半天),以及等待域名实名认证提交到公安系统。最终完成域名的备案(前后总计时间约为七天)

第四步:进行阿里云的出入开放端口设置(安全组里面的设置已经设置好了)

第五步:Liunx中关于80的端口,已经打开

修改服务器

利用宝塔安装面板添加一个站点

宝塔里面默认的网站打开目录就是/www/wwwroot目录,所以直接创建一个站点就可以了,里面的各项参数可以参考如下

具体设置站点

注意,这个时候的我将网站放入的/www/wwwroot/hexo文件夹下,这与之后的内容息息相关.尤其是配置git文件的内容是有很大关系的。因为我已经有了域名了,并且配置了域名解析,所以这个时候我已经算是可以通过blogs.ldity.top打开网站了。

安装Git

a. 使用yum命令安装Git,安装期间有提示一律选yes。

1
#yum install git

b. 安装成功后,查看版本号。

1
#git --version

创建git用户

为了实现博客的自动部署,我们后面要使用公钥免密登录服务器。为了安全起见,最好不要使用root用户免密登录。因此,我们要创建一个新的git用户,用于远程公钥免密登录服务器。

a. 创建git用户。

1
#adduser git

b. 修改git用户的权限。

1
#chmod 740 /etc/sudoers

c. 打开文件。

1
#vim /etc/sudoers

进入后按i键由命令模式切换到编辑模式。找到 root ALL=(ALL) ALL,在下面添加一行 git ALL=(ALL) ALL。修改完成后,先按Esc由编辑模式切换到命令模式,再输入:wq命令保存并退出编辑器。

d. 保存退出后改回权限。

1
#chmod 400 /etc/sudoers

e. 设置git用户的密码。

1
#sudo passwd git

设置密码:*\*******,这样我们就可以使用git用户远程登录阿里云服务器了。

给git用户配置ssh免密公钥登录

该步骤是基于Hexo搭建个人博客的核心步骤,也是坑我时间最长的地方。它既需要在本地计算机上操作,也需要在服务器上进行操作,新手一定要搞清原理才不会弄错。

使用git用户免密公钥登录阿里云服务器的原理是:在本地计算机生成一个公钥文件和一个秘钥文件(类似于一个钥匙配一把锁),然后使用FTP工具将公钥文件上传到阿里云服务器,并公钥安装到authorized_keys列表中去(即:将公钥文件的内容拷贝到authorized_keys文件中去)。这样本地计算机便可以通过ssh方式免密连接我们的阿里云服务器了。

具体操作步骤如下:

a. 在服务器端将登陆用户切换到git用户,然后在~目录(根目录)下创建.ssh文件夹,用来存放公钥。

1
2
3
#su git
$cd ~
$mkdir .ssh

b. 在本地计算机桌面右键打开GitBash,在本地生成公钥/私钥对。

1
2
3
$cd ~
$cd .ssh
$ssh-keygen

接下来,碰见系统询问就直接按回车键。此时便会在本地计算机的用户根目录(C:\Users\Ceasar)下自动生成.ssh(隐藏)文件夹,并在其中创建两个文件,分别为:id_rsa(私钥)和id_rsa.pub(公钥)。

c. 在本地计算机上给私钥设置权限。

1
2
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_rsa

d. 下载并安装FTP工具,我这里用的是XFTP 6

e. 打开Xftp 6,使用git用户通过22端口远程连接到阿里云服务器,将客服端生成的公钥上传到服务器的~/.ssh目录下。

已经传好的样子

f. 上传完成后切回服务器端,继续以git用户的身份进入服务器~/.ssh目录,新建一个authorized_keys文件,并将id_rsa.pub文件中公钥的内容拷贝到该文件中。 (注:该步骤既可以用命令行操作,也可使用FTP工具操作。)

1
2
3
$cd ~/.ssh
$cp id_rsa.pub authorized_keys
$cat id_ras.pub >> ~/.ssh/authorized_keys

g. 在服务器上设置文件权限:

1
2
$chmod 600 ~/.ssh/authorized_keys
$chmod 700 ~/.ssh

h. 确保设置了正确的SELinux上下文。

1
$ restorecon -Rv ~/.ssh

现在,当您使用ssh远程登录服务器时,将不会提示您输入密码(除非您在创建密钥对时输入了密码)。i. 接下来在本地计算机上使用ssh方式连接我们的云服务器。

1
$ssh -v git@xxx.xxx.xxx.xxx(阿里云公网IP)

1
$ssh git@xxx.xxx.xxx.xxx(阿里云公网IP)

使用git用户ssh免密公钥登录成功界面如下图所示。

登录成功界面

完成服务器Git的配置

a. 在服务器上使用git用户创建一个Git仓库,并且在该仓库中新建一个post-receive钩子文件。

1
2
3
$cd ~
$git init --bare hexo.git
$vim ~/hexo.git/hooks/post-receive

b. 进入后按i键由命令模式切换到编辑模式。输入: git –work-tree=/www/wwwroot/hexo –git-dir=/home/git/hexo.git checkout -f

即:让钩子文件删除/www/wwwroot/hexo目录下原有的文件,然后从blog.git仓库 clone 新的博客静态文件到/home/wwwroot/hexo目录下。

完成以上修改后,先按Esc由编辑模式切换到命令模式,再输入:wq命令保存并退出编辑器。

c. 授予钩子文件可执行权限。

1
2
3
$chmod +x ~/hexo.git/hooks/post-receive
$cd ~
$sudo chmod -R 777 /www/wwwroot/hexo

d. 重启ECS服务器实例。

至此我们就完成了所有关于服务器端的配置。

完成部署

客户端配置

a. 在本地计算机hexo的工程目录下,找到_config.yml,对deploy参数进行修改,如下图所示。我的配置

b. 在本地计算机安装插件: hexo-deployer-git 和 hexo-server。在myblogs文件夹下右键打开GitBash,输入以下命令:

1
2
$npm install hexo-deployer-git --save
$npm install hexo-server

这俩插件的作用分别是使用Git自动部署,和hexo本地简单的服务器。

c. 在本地计算机配置Git全局变量。输入以下命令(GitHub上自己的邮箱和用户名下面是我的):

1
2
$ git config --global user.email "17051920@hdu.edu.cn"
$ git config --global user.name “Ldity”

d. 使用Hexo生成、发布个人博客。

1
2
3
$ hexo clean
$ hexo generate
$ hexo deploy

此时,便可以通过浏览器访问 blog.ldity.top 进入hexo我的博客主页了。