知识点准备我主要参考了两篇文章:【持续更新】最全的Hexo博客搭建+主题优化+插件配置+常用操作+错误分析基于CentOS搭建Hexoblog我采用的云解决方案服务器+域名的方式是先了解一些概念。NginxNginx(enginex)是一个高性能的HTTP和反向代理web服务器,同时也提供IMAP/POP3/SMTP服务。这里的主要作用是将相关目录挂载到相应的端口(或者让其他电脑访问服务器的某个端口,直接访问相应的目录)。本教程只需要安装在服务器上即可。GitGit(读作/g?t/.)是一个开源的分布式版本控制系统,可以有效快速地处理从小到大的项目版本管理。简单的说,它是一个代码库和版本管理工具。这里的作用是:在服务器中创建一个仓库(hook),然后在本地的git工具中拉取并提交项目。其中hexo集成了提交打包文件的命令,即hexod。本教程需要在服务器端和客户端都安装。LinuxLinux是一套免费使用和自由传播的类Unix操作系统。它是一个基于POSIX和UNIX的多用户、多任务、多线程和多CPU操作系统。它可以运行主要的UNIX实用软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为中心的设计思想,是一个性能稳定的多用户网络操作系统。一般用在服务器的操作系统中,多用户的概念很重要,不同的用户对文件的操作权限不同。这里的作用是安装一些软件和以root管理员权限启动一些服务,创建git操作用户并分配权限。git用户只能对git仓库所在的文件夹进行操作。注意:这里使用的是centos版本。其中yum是centos自带的包管理工具。本文文字信息使用vim编辑器编辑。Node.jsNode是一个允许JavaScript在服务器端运行的开发平台。它使JavaScript成为与PHP、Python、Perl和Ruby等服务器端语言并驾齐驱的脚本语言。换句话说,node.js是一种后台语言。这是hexo的依赖环境,我们还需要用到node.js自带的包管理工具npm。一般来说,这个只需要在本地安装即可,也就是说,当你要运营或开发你的博客时,你必须要有node.js环境。结合上面涉及到的知识点,我简单罗列下服务端和客户端需要做的事情。服务器端:安装Git,创建仓库,配置自动部署创建git用户,分配文件夹权限安装Nginx,配置好客户端:安装Git安装node.js安装hexo框架客户端配置客户端配置相对于服务器终端多了更简单,因为客户端的工作只负责编辑文章,修改项目文件,推送文章。我使用的操作系统是windows,下面的配置项只提供windows的操作方法。直接在Git官网安装Git找到下载的位置,然后安装即可。安装完成后,配置你的个人信息,输入以下命令。gitconfig--globaluser.name"yourname"gitconfig--globaluser.email"youremail"(第一次安装git可以跳过这一步)然后查看电脑是否创建了ssh密钥对,"id_rsa"(私钥)和“id_rsa.pub(公钥)”。找到图中的目录(administrator是我的用户名,看个人情况。)。(已经有密钥对的可以跳过这一步)在gitbash中输入以下命令创建密钥对(注意修改自己的邮箱):ssh-keygen-trsa-C"你自己的邮箱"应该填完到这里密钥对就创建好了,注意这个id_rsa.pub,后面配置server的时候会有用。安装Node.js非常简单,去官网下载安装即可。安装Node.js后,它包含了npm包管理工具。安装hexo需要在刚刚下载的Node.js中使用npm命令。首先通过npm全局安装hexo,打开cmd命令行输入:npminstall-ghexo-cli安装完成后开始创建和初始化项目。关闭刚才的命令窗口即可。然后进入你要创建项目的目录,比如创建完D:/projects/后就是D:/projects/blog,然后在当前目录下打开命令行,输入:hexoinitblogand安装完成后进入项目目录。找到“package.json”,编辑文件,在“dependencies”中添加如下一行:在当前项目目录下执行如下命令:npminstall到这里,客户端项目就可以启动了,输入如下验证:hexos如果你看到当你看到这条信息时,说明项目启动成功。打开浏览器访问localhost:4000就可以看到网站了。client端几乎一样,还有一个server仓库配置,在“ServerConfiguration”章节最下面会讲解。文末会对常用命令做一些小的补充。服务器端配置安装Nginx并配置登录服务器的root用户,运行以下代码安装nginx:yum-yupdateyuminstall-ynginx配置nginx接下来修改配置,设置网站映射根目录和访问域名。使用vim编辑以下文件:vi/etc/nginx/conf.d/default.conf找到对应的配置,修改中文:server{listen80;#这里填写端口号,80是默认端口,访问Number时不需要带端口。server_name这里填写域名root这里填写网站的根目录地址;}启动nginx:servicenginxstart安装git并创建hook安装git:yuminstall-ygit创建git用户并设置密码(thegit用户是出于安全原因创建的,防止权限过高做其他操作):addusergitpasswdgit给git用户分配更高级的权限,输入以下代码sudovi/etc/sudoers,打开sudoers文件,输入:/root进行搜索,搜索代码行rootALL=(ALL)ALL,然后在该行下添加以下代码gitALL=(ALL)ALL。输入完成后输入wq!在命令模式下强制保存并退出vi。效果如下:图片来自网站:https://segmentfault.com/a/11...切换到git用户登录,在用户家目录添加key文件。作用是识别客户端的主机身份,可以避免git仓库的登录操作sugitmkdir~/.sshvi~/.ssh/authorized_keyspub"由客户端(如上所述)创建到文件中。接下来就是分配权限chmod600~/.ssh/authorized_keyschmod700~/.ssh现在验证之前的配置是否生效,在客户端的gitbash中输入(记得修改服务器ip):ssh-vgit@serverip在git主目录下创建并初始化一个裸库,用来管理代码。cd~gitinit--bareblog.git创建一个hook,就是当仓库文件有新的push时,将文件复制到站点根目录。使用vim创建并编辑post-receive文件:vi~/blog.git/hooks/post-receive添加如下内容(其中/var/www为网站根目录,记得修改成你的自己的。):#!/bin/shgit--work-tree=/var/www--git-dir=/home/git/blog.gitcheckout-f保存后修改文件权限chmod+x~/blog.git/hooks/post-receive的最后一步是在服务器中打开80端口。首先输入如下命令,确认防火墙是否开发了80端口:iptables-L-n#注意ChainOUTPUT中是否有如下一行,如果没有,说明ACCEPTtcp没有开发--0.0.0.0/00.0.0.0/0stateNEWtcp如果dpt:80没有打开,需要修改配置:vi/etc/sysconfig/iptables#打开后,在配置项中找到对应位置,插入下面一行。-AINPUT-ptcp-mstate--stateNEW-mtcp--dport80-jACCEPT然后重启防火墙更新配置serviceiptablesrestart服务器端配置完成。接下来就是上面提到的仓库地址Configuration在客户端的项目目录下找到_config.yml,修改下面对应的信息:deploy:type:gitrepo:git@SERVER:/home/git/blog.git#这里的SERVER需要改成你自己的服务器ipbranch:master补充说hexo也有很多用户自制的主题供你选择。你可以在官网主题上找到,对应的主题里面会有教程。hexo常用指令如下(可以只写首字母,比如hexon):hexoclean#清除缓存文件和生成的静态文件hexonew[name]#新建文章hexogenerate#生成静态文件,即html文件hexodeploy#部署网站,即提交到服务器的仓库(之前设置了githook,一旦更新仓库文件,会自动更新到站点目录)。可以在官方文档中找到更多说明。第一次写这么长的文章,有很多口水,也有很多不清楚的地方。但我相信它会越来越好。祝大家学习愉快,工作顺利!
