哈喽,大家好呀!这里是码农后端。之前我给大家介绍了如何快速注册一个自己的域名,并创建一台自己的阿里云ECS云服务器。本篇将介绍如何将个人博客部署到云服务器,并进行域名备案与解析。
1、域名备案
注册了域名并购买了云服务器之后,就可以申请备案了。
备案地址:
根据国家法律规定,如果服务器在中国内地(大陆),必须完成ICP备案才可对外提供服务;如果服务器在中国香港、中国澳门、中国台湾及其他国家和地区,则不需要进行工信部ICP备案,仅需要完成公安联网备案。
当使用阿里云中国大陆境内节点的服务器时,可以直接在阿里云备案管理系统中提交ICP备案申请。
备案流程如下:
ICP备案申请审核通过后,管局(工信部)会给我们一个ICP备案号,我们需要将备案号在网站底部标明。网站在工信部备案成功后,还需要在网站开通之日起30日内登录全国公安机关互联网站安全管理服务平台提交公安联网备案申请。
按照《非经营性互联网信息服务备案管理办法》(原信息产业部令第33号令),互联网信息服务提供者应当在网站开通时,在网站首页底部中间位置放置备案号,并按要求链接至信息产业部备案管理系统网址,供公众查询核对。
2、配置安全组(重点)
这步针对的是在创建和购买ECS服务器时,安全组设置那里没有勾选开通IPv4的80端口的情况,如果勾选了,这一步可以忽略。
原因:由于要通过80端口访问nginx服务,而阿里云默认是禁止80端口访问权限的,所以我们要为实例手动添加安全组,让阿里云给相应的端口和IP放行。
注:nginx服务的默认端口为80,若不进行手动配置,将无法通过“公网IP+端口”的方式访问我们的ECS服务器。
配置步骤如下:
1)点击阿里云首页右上方头像旁边的控制台,进入概览页面,点击云服务器ECS,进入云服务器ECS的控制台。
2)点击左侧菜单中的“安全组”可查看安全组列表,点击“创建安全组”按钮,创建一个新的安全组。
3) 为新建的安全组添加安全组规则,在入方向解除端口和IP限制,添加好后点击安全组进行查看,如下。
4)最后再为我们的实例添加该安全组即可,至此,安全组配置完成。
3、博客上云
博客上云,即将个人博客部署到阿里云服务器上。
3.1 安装nginx
这里我们直接选择官方提供的远程连接工具,来操作我们的云服务器,完成相关的部署工作。
使用密码认证的方式登录
登录进去后,在终端执行如下步骤命令:
1)安装nginx依赖环境,安装期间如有提示,一律选yes。
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
注意是一行一行执行,直接无脑复制黏贴敲回车就ok了。
2)下载nginx安装包。
wget -c https://nginx.org/download/nginx-1.10.1.tar.gz
3)将安装包解压到/usr/local目录下。
tar -xvf nginx-1.10.1.tar.gz -C /usr/local
4)进入/usr/local目录,确认nginx解压到该目录下。
cd /usr/local
ls
5)进入nginx-1.10.1目录,会发现该目录下有一个configure文件,执行该配置文件。
cd nginx-1.10.1/
ls
./configure
6)编译并安装nginx。
make
make install
7)查找nginx安装目录。
whereis nginx
nginx: /usr/local/nginx
8)进入安装目录。
cd /usr/local/nginx
ls
9)进入/usr/local/nginx/sbin目录,启动nginx。
cd sbin
./nginx
没有任何报错消息就说明启动成功。通过“公网IP+端口”的方式进行访问,成功访问到如下的nginx欢迎页面。
注:可以使用./nginx -s stop命令停止服务
3.2 配置nginx服务器路由
1)首先为hexo创建一个部署目录 /home/www/hexo。
mkdir -p /home/www/hexo
2)进入/usr/local/nginx/conf目录,打开该文件夹下的nginx.conf配置文件。
cd /usr/local/nginx/conf
ls
vim nginx.conf
进入后按 i键由命令模式切换到编辑模式,使用上下光标移动定位。将其中的部署根目录(root)修改为 /home/www/hexo;将域名(server_name)修改为 zhengyquan.cn,并查看监听端口(listen)的系统默认值是否为80(不用修改)。
如果暂时没有域名,就先填阿里云实例的公网ip,后面有域名再改回来;
上述修改完成后,按Esc由编辑模式切换到命令模式,再输入:wq命令保存并退出编辑器。
3.3 安装node.js
1)返回家目录,安装node.js。
cd ~
curl -sL https://rpm.nodesource.com/setup_10.x | bash -
yum install -y nodejs
2)查看安装结果,打印版本号即为安装成功。
node -v
npm -v
3.4 安装Git
1)使用yum命令安装Git,安装过程中如出现提示一律选yes。
yum install git
2)安装成功后,查看版本号。
git --version
3.5 创建git用户
为了实现博客的自动部署,我们后面要使用公钥免密登录服务器。为了安全起见,最好不要使用root用户免密登录。因此,我们要创建一个新的git用户,用于远程公钥免密登录服务器。
1)创建git用户。
adduser git
2)修改git用户的权限。
chmod 740 /etc/sudoers
3)打开文件。
vim /etc/sudoers
进入后按 i键由命令模式切换到编辑模式。找到 root ALL=(ALL) ALL,在下面添加一行 git ALL=(ALL) ALL。修改完成后,先按Esc,由编辑模式切换到命令模式,再输入:wq命令保存并退出编辑器。
4)保存退出后改回权限。
chmod 400 /etc/sudoers
5)设置git用户的密码。
sudo passwd git
设置密码,需要输两次,第二次是确认;为了安全,密码输入过程中不会显示。设置好后就可以使用git用户远程登录阿里云服务器了。
3.6 配置ssh免密公钥登录
使用git用户免密公钥登录阿里云服务器的原理:
在本地计算机生成一个公钥文件和一个秘钥文件(类似于一个钥匙配一把锁),然后使用FTP工具将公钥文件上传到阿里云服务器,并公钥安装到authorized_keys列表中去(即:将公钥文件的内容拷贝到authorized_keys文件中去)。这样本地计算机便可以通过ssh方式免密连接我们的阿里云服务器了。
具体操作步骤如下:
1)在服务器端将当前登录用户切换到git用户,然后在~目录(根目录)下创建.ssh文件夹,用来存放公钥。
#su git
$ cd ~
$ mkdir .ssh
注:# 表示 root 用户(超级管理员),$ 表示非 root 用户。
2)在本地计算机桌面右键打开GitBash,在本地生成公钥/私钥对。出现提示就按回车键,完成后会在C:\Users\ASUS\.ssh创建两个文件,分别为:id_rsa(私钥)和id_rsa.pub(公钥)。
$ cd ~
$ cd .ssh
$ ssh-keygen
3)在本地计算机上给私钥设置权限。
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_rsa
4)下载并安装FTP工具,可以用的是阿里云官方提供的FileZilla。安装过程非常简单,直接无脑安装即可。官方文档:
FileZilla是一款方便高效的FTP客户端工具。通过FileZilla连接云虚拟主机后,可以对云虚拟主机上的网站文件进行上传、下载、新建和删除等操作。
5)打开FileZilla,使用git用户通过22端口远程连接到阿里云服务器,将客服端生成的公钥上传到服务器的~/.ssh目录下,如下图
6)上传完成后返回服务器端,继续以git用户的身份进入服务器~/.ssh目录,新建一个authorized_keys文件,并将id_rsa.pub文件中公钥的内容拷贝到该文件中。使用命令行操作命令如下
注:该步骤既可以用命令行操作,也可使用FTP工具操作。
$ cd ~/.ssh
$ cp id_rsa.pub authorized_keys
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
7)在服务器上设置文件权限:
$ chmod 600 ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh
现在,当使用ssh远程登录服务器时,将不会提示您输入密码(除非您在创建密钥对时输入了密码)。
8)在本地计算机上使用ssh方式连接我们的云服务器。
$ ssh -v git@xxx.xxx.xxx.xxx(阿里云公网IP)
或
$ ssh git@xxx.xxx.xxx.xxx(阿里云公网IP)
连接成功如下
3.7 配置Git仓库
1)在服务器上使用git用户创建一个Git仓库,并在该仓库中新建一个post-receive钩子文件。
$ cd ~
$ git init --bare hexo.git
$ vi ~/hexo.git/hooks/post-receive
2)进入后按 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命令保存并退出编辑器。
3)授予钩子文件可执行权限。
$ chmod +x ~/hexo.git/hooks/post-receive
$ cd ~
$ sudo chmod -R 777 /home/www/hexo
4)前往阿里云云服务器ECS控制台,重启ECS服务器实例,至此完成了所有关于服务器端的配置。
4、其他配置4.1 客服端hexo配置
1)在个人本地的博客目录下,找到_config.yml配置文件,对deploy参数进行修改,如下图。
2) 在本地计算机配置Git全局变量。输入以下命令:
$ git config --global user.email "2750932784@qq.com"
$ git config --global user.name "zhengyquan"
3)使用git将上述修改推送到我们的云服务器上,一键三连,命令如下
hexo clean
hexo hexo generate
hexo deploy
如下即代表推送成功。
之后,便可以使用公网IP+端口访问博客主页了,如下图。
4.2 域名绑定
等备案通过后,将域名与ECS服务器实例的公网IP进行绑定。进入阿里云控制台首页,在资源概览页面点击域名,进入域名控制台,点击左侧域名列表,选择域名进行解析,配置域名解析如下。
注:如果使用www不行,就试试@。我自己就是使用www前缀解析后访问域名出现问题,后面改为@就OK了。
域名解析后,需要耐心等待一段时间。
域名解析后并不会立即生效,需要一定的解析时间,一般来说生效时间为24小时。具体还要看各地区的服务器运营时间和工作效率,一般都在6-24小时以内。可以通过ping域名来检测域名是否已经生效。如果域名超过24小时还未生效,就说明解析出问题了。