参考链接
我是参考了以下的博客对自己的网站进行的部署,你们可以参考下他们的方式。本文主要是为了简述自己建站中一些情形而已.只是为了提供给我自己看,回顾的而已
前期准备工作
在我进行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 | #su git |
b. 在本地计算机桌面右键打开GitBash,在本地生成公钥/私钥对。
1 | $cd ~ |
接下来,碰见系统询问就直接按回车键。此时便会在本地计算机的用户根目录(C:\Users\Ceasar)下自动生成.ssh(隐藏)文件夹,并在其中创建两个文件,分别为:id_rsa(私钥)和id_rsa.pub(公钥)。
c. 在本地计算机上给私钥设置权限。
1 | $ chmod 700 ~/.ssh |
d. 下载并安装FTP工具,我这里用的是XFTP 6
e. 打开Xftp 6,使用git用户通过22端口远程连接到阿里云服务器,将客服端生成的公钥上传到服务器的~/.ssh目录下。
f. 上传完成后切回服务器端,继续以git用户的身份进入服务器~/.ssh目录,新建一个authorized_keys文件,并将id_rsa.pub文件中公钥的内容拷贝到该文件中。 (注:该步骤既可以用命令行操作,也可使用FTP工具操作。)
1 | $cd ~/.ssh |
g. 在服务器上设置文件权限:
1 | $chmod 600 ~/.ssh/authorized_keys |
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 | $cd ~ |
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 | $chmod +x ~/hexo.git/hooks/post-receive |
d. 重启ECS服务器实例。
至此我们就完成了所有关于服务器端的配置。
完成部署
客户端配置
a. 在本地计算机hexo的工程目录下,找到_config.yml,对deploy参数进行修改,如下图所示。
b. 在本地计算机安装插件: hexo-deployer-git 和 hexo-server。在myblogs文件夹下右键打开GitBash,输入以下命令:
1 | $npm install hexo-deployer-git --save |
这俩插件的作用分别是使用Git自动部署,和hexo本地简单的服务器。
c. 在本地计算机配置Git全局变量。输入以下命令(GitHub上自己的邮箱和用户名下面是我的):
1 | $ git config --global user.email "17051920@hdu.edu.cn" |
d. 使用Hexo生成、发布个人博客。
1 | $ hexo clean |
此时,便可以通过浏览器访问 blog.ldity.top 进入hexo我的博客主页了。