【3】详细记录大学生自学搭建个人网站全过程,从0开始到小有成果

76c7c6e3-ea5c-43e8-bdb6-fed28db9a261

  接上文,云服务器基础配置完成后,我们要把Hexo部署在云服务器上,并且能通过本地git用户操作云服务器。

5 云服务器Hexo的部署

5.1 安装Nginx

  服务器端采用Nginx作为web服务器,我们在VNC中用root用户登录服务器,使用yum来安装。

  先安装Nginx依赖环境,包括:gcc、pcre、zlib、openssl,下表是简要介绍。

组件 简介 安装语句
gcc gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,最早只支持C语言,后来扩展能够支持更多编程语言,包括 C++、Fortran 和 Java 等,其执行效率比一般编译器高20%。 yum install gcc-c++
pcre pcre是一个用C语言编写的正则表达式函数,Nginx的http模块需要用到pcre来解析正则表达式。 yum install -y pcre pcre-devel
zlib zlib库提供了很多种压缩和解压缩的方式,zlib库里面有很多压缩和解压的方式。 yum install -y zlib zlib-devel
openssl openssl提供了这个强大的安全套接字密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议。 yum install -y openssl openssl-devel
# yum install -y gcc zlib zlib-devel pcre-devel openssl openssl-devel

  直接输入上面这行代码,看到下面这个提示即可。

20428ab810c042c1046c727b2accaab

  下载Nginx安装包,此处我直接参考阿汤的带上了版本,也可参考其他帖子。

# wget -c https://nginx.org/download/nginx-1.10.1.tar.gz

  博主在弄的时候忘记给试验机用弹性ip了,所以一直访问不到,这里请大家注意。

0510ad00f925c1bb77b254fcd654dbf

  之后将安装包解压到/usr/local路径下,并进入文件夹浏览。

# tar -xvf nginx-1.10.1.tar.gz -C /usr/local
# cd /usr/local
# ls
93fdbeaded871365c894f35ea5155fc

  进入nginx-1.10.1目录,会发现该目录下有一个configure文件,执行该配置文件。

# cd nginx-1.10.1/
# ls
# ./configure
9e58e6eba7a9ce4134ae1ddf31e3d39

  编译并安装Nginx。

# make
# make install
f965e5173e4807f55d5c3b8d00d50e3

  查找并进入nginx的安装目录。

# whereis nginx
# cd /usr/local/nginx
# ls
576a8b52c65c7730a326ea7333a33ca

  Nginx是默认通过tcp80端口访问,而Linux默认不打开此端口,所以我们开放linux的80端口提供给外部访问,这一步是在此前我们设置的ECS安全组基础上继续打开Linux的iptables。

# /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT

  然后进入/usr/local/nginx/sbin目录,启动Nginx,这一步没有任何提示。

# cd sbin
# ./nginx
b21f2f50142f615ed732828e9df753c

  此时,便可以通过“公网IP+端口”的方式访问 http://xx.xx.xxx.xxx:80/ 进入Nginx欢迎页面了。

a574ce031f59554d0f88bd679b1d9bb

  tips

​   (1)使用./nginx -s stop来停止服务;

​   (2)后面如果访问不到hexo欢迎页面,很可能是这里nginx服务没有打开,进入到文件目录/usr/local/nginx/sbin重启一下nginx。

5.2 配置Nginx服务器路由

  为hexo创建一个专用的部署目录/home/www/hexo

#mkdir -p /home/www/hexo

  进入/usr/local/nginx/conf目录,用vim打开该文件夹下的nginx.conf配置文件。

#cd /usr/local/nginx/conf
#ls
#vim nginx.conf
844b14999d9b2ae594105ec67057ecd

  按i键切换到编辑模式:

​   找到root,修改为/home/www/hexo

​   找到server_name,修改为自己的域名,或者是阿里云实例的公网ip。

d33a96a3c0b4410ab370cce5d217160

  然后按ESC从编辑模式退回到命令模式,输入:wq保存并退出vim。

5.3 云服务器安装node.js

  退回到根目录,安装node.js。

#cd ~
#curl -sL https://rpm.nodesource.com/setup_10.x | bash -
#yum install -y nodejs

  三段执行完,输入版本号查看安装成功。

#node -v
#npm -v
1ebced25ec96a745e6ea3c66dd6e55f

5.4 云服务器安装Git

  使用yum来安装Git,期间所有提示一律输入yes,一般这一步就可以安装完成。

#yum install git

  如果出现像博主一样的问题:

d40a2e47f9151ab784d07e5706ded78

  可以换源来解决,博主从阿里源换到了网易源解决了问题。

#wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
#yum clean all
#yum makecache
b135ba777673e7c3b7ade21b5348797

  安装完成后,查看版本号。

#git --version
793846c18e6a4428afa8ff1aa25c9e1

5.5 创建git用户从本地git远程登录云服务器

  为了实现博客的自动部署,我们后面要使用公匙绵密登录,所以我们创建一个名为git的用户来用于本地git免密登录服务器。

#adduser git

  修改git用户权限。

#chmod 740 /etc/sudoers

  vim打开文件。

#vim /etc/sudoers

  按i键由命令模式切换到编辑模式。找到root ALL=(ALL) ALL,在下面添加一行**git ALL=(ALL) ALL**。

abb59c4a5c7388c247e35604847d1df

  按ESC由编辑模式切换到命令模式,再输入:wq命令保存并退出编辑器。

  修改文件权限。

#chmod 400 /etc/sudoers

  设置git用户的密码,请记得存下这个密码。

#sudo passwd git

  这样我们就可以通过git用户远程登录阿里云服务器了。

5.6 给git用户配置ssh免密登录

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

  首先,在云服务器端,将用户切换到git用户,然后在根目录下创建.ssh文件夹,用来存放公钥。

#su git
$cd ~
$mkdir .ssh
0264dbbe4dd99ab303c26e276d9d855

  然后,在本地桌面右键打开Git Bash,在本地生成公钥/私钥对。

$cd ~
$cd .ssh
$ssh-keygen

  之后碰见系统询问就按回车,此时便会在本地计算机的根目录下自动生成.ssh文件夹(隐藏),并在其中自动创建名为id_rsa(私钥)和id_rsa.pub(公钥)的文件。

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

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

  下载一个FTP工具,这里参考阿汤用阿里云官方提供规定FileZillaFileZilla中文网 - 免费开源的FTP解决方案

  打开FileZilla,使用git用户通过22端口远程连接阿里云服务器,注意密码是云服务器root用户的密码,然后将本地生成的公钥id_rsa.pub文件拖动到服务器的~/.ssh目录下。

8d9d76f56e431896c8d74f57a5ce0d5

  拖动完成后,回到云服务器,用git身份进入服务器的~/.ssh目录,新建一个authorized_keys文件,并将id_rsa.pub文件中公钥的内容拷贝到该文件中。

  tips:此时服务器端的代码头应该是美元符号,这一段代码博主没有重做留图。

$cd ~/.ssh
$cp id_rsa.pub authorized_keys
$cat id_rsa.pub >> ~/.ssh/authorized_keys

  在服务器上继续设置文件权限,并确保设置了正确的SELinux上下文。

$chmod 600 ~/.ssh/authorized_keys
$chmod 700 ~/.ssh
$restorecon -Rv ~/.ssh

  现在当使用ssh从本地连接服务器时,将不用再输入密码。

  接下来回到本地计算机刚才的Git Bash中,用ssh方式连接云服务器。

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

5.7 配置Git仓库,创建钩子文件

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

$cd ~
$git init --bare hexo.git
$vi ~/hexo.git/hooks/post-receive

  进入后按i键由命令模式切换到编辑模式。输入以下代码:

git --work-tree=/home/www/hexo --git-dir=/home/git/hexo.git checkout -f

  即让钩子文件删除/home/www/hexo目录下原有的文件,然后从blog.git仓库克隆新的博客静态文件到/home/www/hexo目录下,这一步就完成了博客的更新。

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

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

$chmod +x ~/hexo.git/hooks/post-receive
$cd ~
$sudo chmod -R 777 /home/www/hexo

  然后重启ECS服务器实例。

  tips:博主已经做过了,为了不对现有良好运行的体系形成干扰,所以此处博主就没有重做留图了。

  到这里我们就完成了所有关于服务器的配置工作!

6 客户端hexo配置

  现在我们已经完成了服务器和客户端通信的配置,然后就是让本地的hexo能够git到服务器,这样我们以后修改本地的hexo配置,服务器也可以跟着修改。

  在本地计算机hexo的工程目录(前文是在D:\MyHexoBlogs\myblogs),找到_config.yml,对deploy参数进行修改。

deploy:
type: git
repo: git@XXX.XXX.XXX.XXX:/home/git/hexo.git
branch: master
8beadd694681126b3b94c1831ba513a

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

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

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

  之后在本地计算机配置Git全局变量,这样你的每次Git提交都会使用这个标识,填自己的信息就好。

$ git config --global user.email "xxxxxxxxxx@163.com"
$ git config --global user.name “xxx”

  然后我们就可以使用Hexo在本地生成、发布个人博客了!

$ hexo clean
$ hexo generate
$ hexo deploy

  这三行代码在日后我们修改博客的过程中会频繁用到。

  此时,在浏览器输入XXX.XXX.XXX.XXX:80即可访问到hexo欢迎主页了!(博主的是已经修改过啦,大家看到的应该是hello world的欢迎页)

b9999fb7ac5fcfa1522fae30c79f98f b446337e-ae7b-4473-b3b6-bb9f9b2c84ec