本文主要介绍Hexo博客的搭建。在搭建过程中,参考了官方文档和网上很多搭建教程,但其中还是有很多细节教程中没有仔细提,好在一一解决后搭成功了。这里会尽可能把整个过程和一些细节记录下,供以后回顾,也留个纪念。
环境说明
Hexo是一款纯静态的轻量级博客框架,功能全面,易上手搭建。Hexo基于node.js环境制作,其功能简单描述就是将markdown格式的文件转化成静态资源页面,然后将这些资源打包上传到服务端仓库。Hexo框架在本地安装,服务器端需要安装Hexo的运行环境node.js和Git。
一篇博文产生的具体流程是,作者先用markdown编辑器编写.md文件,将其复制到Hexo根目录的source文件夹下的_post文件夹,或者直接在Hexo根目录下启动git bash,使用hexo new post
生成新文件,再去前面说的目录下修改内容。内容编辑完成后在git bash中使用hexo g
命令生成页面,生成后使用命令hexo s
可启动本地服务,通过访问localhost:4000可查看页面。查看无误后,使用hexo d
命令即可发布到服务器,通过外网访问。
Node.js安装很方便,去官网下载安装就行,这里给出的是中文官网的链接,速度比较快。Windows系统建议选择.msi安装文件,一路next下去即可。Node.js默认全局安装,安装完成后cmd中验证版本,有版本号表示安装成功。
C:\Users\Musezen>node -v
v12.16.2
Node.js中自带了npm,无需额外安装,同样可以去cmd中验证。
C:\Users\Musezen>npm -v
6.14.4
Git安装同样去官网即可,按照流程一步步安装。如果速度不够快,可以去淘宝的镜像下载安装。安装好后,鼠标右键点击出现的菜单中有Git Bash和Git Gui则表示安装成功。
在选定的安装目录下(如D:\MyHexoBlog)右键点击打开Git Bash,输入
$ npm install -g hexo-cli
即可安装。详细过程可参考官方文档。安装完后执行
$ hexo init <指定文件夹>
$ cd <指定文件夹>
$ npm install
这个命令会在你指定的文件夹下初始化Hexo,生成相应文件。目录结构为
.
├── _config.yml
├── package.json
├── scaffolds
├── source
| ├── _drafts
| └── _posts
└── themes
在上述指定文件夹中,右键Git Bash,输入
$ hexo s
即可通过localhost:4000访问本地Hexo服务。
到这里,本地环境配置完成。
打开shell软件(如Xshell等),远程连接服务器,使用yum命令安装。
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
wget -c https://nginx.org/download/nginx-1.16.1.tar.gz
tar -xvf nginx-1.16.1.tar.gz -C /usr/local
cd nginx-1.16.1/
ls
./configure
make
make install
Nginx默认通过80端口访问,所以要确保服务器80端口开启。进入/usr/local/nginx/sbin目录,启动Nginx。
cd /usr/local/nginx/sbin
./nginx
启动后没有消息提示,使用公网IP:80访问,如果出现提示页,说明安装成功。
Nginx安装后需要修改其默认配置文件,配置路由。先创建一个文件夹,用来放Hexo部署过来的内容。
mkdir -p /home/www/hexo
创建完成后,进入Nginx的conf文件,对配置部署根目录和服务器地址。
cd /usr/local/nginx/conf
vim nginx.conf
按i进入编辑模式,修改server中的root和server_name。root修改为上面创建的文件夹地址/home/www/hexo,server_name修改为域名(没有域名就用ip地址)。然后Esc退出,:wq保存退出。
Nginx安装配置完后,退回更目录安装Node.js。使用yum方式。
cd ~
curl -sL https://rpm.nodesource.com/setup_10.x | bash -
yum install -y nodejs
通过查看版本号,检测安装是否能成功。
node -v
npm -v
同样使用yum方式安装。
yum install git
通过查看版本号,检测安装是否成功。
git --version
这里也可以使用root账户免密登录,但是推荐新建一个用户git。
创建git用户
adduser git
修改git用户权限
chmod 740 /etc/sudoers
vim /etc/sudoers
找到root ALL = (ALL) ALL这一行,在这行下面添加git ALL = (ALL) ALL添加好后,保存退出。
把/etc/sudoers文件权限改回来
chmod 400 /etc/sudoers
设置git用户密码
sudo passwd git
可以使用su命令切换用户
su git
用户创建完成后,为git用户设置免密登录。
su git
cd ~
mkdir .ssh
$ cd ~
$ cd .ssh
$ ssh-keygen
执行完后会在本地用户根目录下生成.ssh的隐藏文件,在这个文件夹中会有id_rsa(私钥)和id_rsa.pub(公钥)两个文件。
在本地为这两个文件设置权限。
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_rsa
本地生成好后,回到服务器端,在服务器的.ssh文件夹下新建一个authorized_keys文件,然后将本地生成的id_rsa.pub中的内容复制到该文件中去,并赋予权限。
cd ~/.ssh
vim authorized_keys
#然后将本地计算机id_rsa.pub中的内容复制进来
#赋予权限。(如果后续博客部署的时候出现权限问题,可以回到这个步骤切到root用户赋予权限)
chmod 600 /home/git/.ssh/authorzied_keys
chmod 700 /home/git/.ssh
完成上面的步骤后返回本地Git Bash使用ssh命令远程登录阿里云。
#SERVER是服务器域名或公网IP
ssh git@SERVER
出现下面的提示说明登录成功。
Welcome to Alibaba Cloud Elastic Compute Service !
在服务器端使用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
然后Esc,:wq保存退出。授予钩子文件权限
chmod +x ~/hexo.git/hooks/post-receive
退回根目录授予前面创建的/home/www/hexo文件权限。
cd ~
#这里切换到root用户
su root
sudo chmod -R 777 /home/www/hexo
配置完成后重启下服务器(参考的文档里说要重启,如果不重启功能也实现了,就可以不重启。)
先在本地设置一下git的全局变量,如果已经设置过的就不用设置。
$ git config --global user.email "your email"
$ git config --global user.name "your name"
找到Hexo的安装根目录,找到_config.yml文件,添加deploy。
deploy:
type: git
repo: git@(域名或公网IP):/home/git/hexo.git
branch: master
同样在Hexo根目录下右键打开Git Bash,安装hexo-deployer-git 和 hexo-server。
$ npm install hexo-deployer-git --save
$ npm install hexo-server
使用hexo的命令创建和发布博客
$ hexo clean
$ hexo generate
$ hexo deploy
没有报错的话,这步过后就可以通过公网IP访问到Hexo的主页了。
另外想要配置主题的话可以去Hexo官网选择,根据各主题的文档进行配置。