使用Linux+Nginx+Hexo+Vsftp搭建静态博客空间

按照多数人的习惯,空间的第一篇文章用来介绍该博客的搭建方法。首先普及一下基本概念: 1. 该博客是实用Linux、Nginx、Hexo、Vsftp搭建的静态博客系统,即最终看到的博文是经由
Hexo生成后的html文件(区别于依赖数据库的动态博客)。
2. 利用Hexo的部署部署插件ftpsync以及Linux下的vsftp,可以实现一键部署。

准备工具

  • Linux(这里使用的CentOS)
  • Nginx
  • Vsftp
  • Hexo

安装Nginx

下载最新版本的Nginx源码包,解压后使用configure脚本编译即可。 由于系统开发环境的差异,某些系统下编译过程会碰到缺少依赖库的问题。 根据错误提示找到缺少的库的名称,使用yum等工具安装对应的依赖库即可。

例如,我的系统在安装过程中碰到了下面两个问题: 1. httpurlrewrite模块缺少pcre库

yum install pcre.x86_64 pcre-devel.x86_64  
  1. ssl模块需要openssl库支持
yum install openssl.x86_64 openssl-devel.x86_64  

如果不知道你的系统是否是64位系统,或者不知道依赖库的全称,可以通过下面命令协助

cat /proc/version  
# 输出结果大致: Linux version 2.6.32-431.23.3.el6.x86_64 ...

yum search [软件关键字,如:pcre、ssl]  
# 可以找到安装文件的全称

再次configure继续安装你的Nginx。

安装Vsftp提供FTP服务

下载安装vsftp

安装vsftp本身与Linux下安装其他软件没什么区别。我这里还是使用yum进行,命令如下:

yum install vsftpd.x86_64 -y  

参数-y表示这次安装过程不需要确认。

配置vsftp

Vsftp有多种运行模式:匿名模式、本地用户登录模式、虚拟用户登录模式。
简单与安全起见,我们使用本地用户登录模式。这种模式允许Linux系统下的用户作为ftp服务的用户使用vsftp。

不知道软件安装目录的情况下,可以使用命令查找vsftp的安装与配置目录。

whereis vsftpd  

我的系统下,vsftp的配置目录为/etc/vsftpd

这里需要了解3个基本配置文件: * vsftpd.conf:总配置文件 * ftpusers:指定了一系列不可以登录的用户的名称 * userlist:是一个配置登录用户的列表。 它可以通过总配置文件中的userlistdeny这个标志为NO或YES来表示这个列表中的用户是否允许登录。 需要注意:当为YES时,它连密码都不检查了;当为NO时,它还会检查ftpusers是否禁止了该用户。

首先,我们要做的是创建一个Linux用户作为Hexo使用FTP的账号。参考这里

# 创建用户 -g指定了用户组,这里为ftp
useradd -d <用户根目录> -gftp -s /sbin/nologin <用户名>  
# 修改密码
passwd <用户名>  
# 修改用户根目录权限,否则nginx无法正常访问
chmod 755 <用户根目录>  
...

然后,配置vsftpd.conf文件,主要修改两个地方。

设置anonymous_enable=NO,禁止匿名用户访问
设置local_enable=true,使用本地账号登录FTP
设置chroot_local_user=yes,限制用户只能访问自己的目录

注:未知主配置文件中chrootlocaluser下面两个命令的具体意义,有时间补充了解。 我若是打开了chrootlistenable=YES的注释,则无法正常登陆。 猜测需要正确配置chrootlistfile对应的文件,我尚未弄明白。

安装Hexo

我是在Windows下写博客的,Windows下安装Hexo依赖于Git和Node.js,因此需要先安装这两者。略过。

问题列表:troubleshooting

交流与反馈:GitHub

安装Hexo

进入Git Bash,使用node.js的插件安装工具npm安装hexo,命令如下:

$ npm install hexo-cli -g

使用Hexo

主要命令如下:

$ hexo init <floder>        # 创建博客项目(进入floder后再npm install安装Hexo需要的插件)
$ hexo new "My New Post"    # 新建博文
$ hexo server            # 开启一个本地服务器,用于调试效果
$ hexo generate            # 生成静态文件
$ hexo deploy            # 部署

Hexo参考文档:documentation

配置Hexo

  • 配置一键部署,我使用ftpsync方式,因此需要配置[floder]/_config.yml文件的deploy部分。 参考这里即可。

    需要注意:如果在这里配置了remote变量,需要在ftp服务器上创建remote对应的目录并赋予足够的权限。否则可能出现550 Create directory operation failed的错误。

  • 配置留言插件:不同主题的留言方式都不尽相同,请参考各自使用的主题。

ChardLau

继续阅读此作者的更多文章