我主要参考了两篇文章:html
我采用的方案是云服务器+域名的方式node
首先是要搞懂一些概念nginx
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。在这里的主要做用就是挂载相关目录到对应端口(或者说让其余计算机访问服务器的某个端口时,直接访问对应目录)。该教程中只须要装在服务器。
Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,能够有效、高速地处理从很小到很是大的项目版本管理。简单来讲就是代码库及版本管理工具。在这里的做用就是:在服务器中建立仓库(钩子),而后在本地的git工具中拉取项目和提交项目。其中hexo里面集成了提交打包好的文件的命令,即hexo d。该教程需安装在服务器和客户端。
Linux是一套无偿使用和自由传播的类Unix操做系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操做系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操做系统。通常用于服务器的操做系统,多用户这个概念很重要,不一样的用户对文件的操做权限都会不一样。在这里的做用只要是用root管理员权限安装一些软件和开启一些服务、建立git操做用户和分配权限。git用户只能对git仓库所在文件夹进行操做。
注意:在这里使用的是centos版本。其中yum是centos自带的包管理工具。文中编辑文本信息都用的是vim编辑器。
Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言分庭抗礼的脚本语言。也就是说node.js是一个后台语言。这个是hexo的依赖环境,同时咱们还须要用到node.js里面包含的包管理工具npm。通常来讲这个只须要安装在本地便可,也就是说你要对博客进行操做或者开发的时候,就必定要有node.js的环境。
结合上面涉及的知识点,我先大概列一下服务器端和客户端所须要作的事情。
服务器端:git
客户端:web
客户端方面的配置比起服务器端就简单不少,由于客户端的工做只要负责编辑文章、修改项目文件、推送文章等操做。
本人使用的操做系统是windows,下面的配置项也只提供windows的操做方法。npm
直接在 Git官网 找到该位置下载,而后安装便可json
安装了以后配置一下我的信息,输入如下命令。vim
git config --global user.name "yourname" git config --global user.email "youremail"
(第一次安装git的跳过这一步)而后检查该电脑有没有建立ssh密匙对,“id_rsa”(私匙)和“id_rsa.pub(公匙)”这两个。找到图中的目录(Administrator这个是个人用户名,视我的状况而定。)。segmentfault
(已经有密匙对的话跳过这一步)在git bash中输入如下命令建立密匙对(注意修改本身的邮箱):windows
ssh-keygen -t rsa -C "本身的邮箱"
到这里就应该已经完成了密匙对的建立了,注意一下这个 id_rsa.pub ,待会服务器配置会用得上。
很简单,直接到 官网 下载、安装便可。
安装了Node.js以后里面包含了npm包管理工具。
这一步就须要用到刚刚下载Node.js里面的npm命令了。
首先经过npm全局安装hexo,打开cmd命令行输入:
npm install -g hexo-cli
等到安装完成后,就要开始建立、初始化项目了。先把刚刚的命令窗口关掉吧。而后进入你要建立项目的目录,好比在 D:/projects/ 建立以后就是 D:/projects/blog,而后在当前目录打开命令行,输入:
hexo init blog
等到安装结束后进入项目目录。找到"package.json",编辑文件,在"dependencies"中追加如下一行:
在当前项目目录下执行如下命令:
npm install
到这里客户端的项目就已经能够启动了,输入如下验证下:
hexo s
若是看到这条信息,说明项目启动成功,打开浏览器访问 localhost:4000 就能够看到网站了。
客户端的就差很少了,其中还有个服务器仓库配置在“服务器端配置”章中底部会说明。
文章末还会有一些经常使用命令的小补充。
登陆服务器的root用户,运行如下代码安装nginx:
yum -y update yum install -y nginx
配置nginx
接下来要修改配置,设置网站映射的根目录和访问域名。使用vim编辑如下文件:
vi /etc/nginx/conf.d/default.conf
找到对应配置,修改中文的地方:
server { listen 80; #这里填端口号,80即默认端口,访问时不需带端口号。 server_name 这里填写域名 root 这里填写网站根目录地址; }
启动nginx:
service nginx start
安装git:
yum install -y git
建立git用户以及设置密码(建立git用户是为了安全起见,防止权限太大进行其余操做):
adduser git passwd git
给git用户分配更高级的权限
输入如下代码 sudo vi /etc/sudoers
,打开sudoers文件,输入 :/root
进行搜索,搜索到代码行 root ALL=(ALL) ALL
,而后在这一行下添加如下代码 git ALL=(ALL) ALL
。输入完毕以后,命令模式下输入 wq!
强制保存退出vi。
效果以下图:
图片来自网站:https://segmentfault.com/a/11...
切换到git用户登陆,在用户home目录中添加密匙文件。做用是识别客户端的主机身份,可免登陆操做git仓库
su git mkdir ~/.ssh vi ~/.ssh/authorized_keys
编辑 authorized_keys 文件时将(上文提过)客户端建立的公匙 “id_rsa.pub” 内容复制到文件中。
接下来就要分配权限
chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
如今就验证下以前的配置是否生效,在客户端的git bash中输入(记得改服务器ip):
ssh -v git@服务器ip
在git的home目录中建立 初始化一个裸库,以管理代码。
cd ~ git init --bare blog.git
建立一个钩子,做用是当仓库文件有新的推送时,把文件拷贝到站点根目录下。使用vim建立并编辑post-receive文件:
vi ~/blog.git/hooks/post-receive
添加如下内容进去(其中/var/www这个是网站根目录,记得修改为本身的。):
#!/bin/sh git --work-tree=/var/www --git-dir=/home/git/blog.git checkout -f
保存以后,修改文件权限
chmod +x ~/blog.git/hooks/post-receive
最后一步,开放服务器中的80端口。
先输入如下命令确认防火墙有无开发80端口:
iptables -L -n # 注意 Chain OUTPUT里面有无如下这行,没有的话就是没有开发 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
若没有开放则须要修改配置:
vi /etc/sysconfig/iptables #打开后在配置项找到对应的位置插入如下这行。 -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
而后重启防火墙以更新配置
service iptables restart
到这里服务器端的就配置完啦
接下来就是上文说到的仓库地址配置
在客户端的项目目录下找到_config.yml,修改下面的对应信息:
deploy: type: git repo: git@SERVER:/home/git/blog.git #此处的SERVER需改成你本身服务器的ip branch: master
hexo还有不少用户制做的主题供你们选择,能够在 官网主题 上找,进去对应的主题中会有教程的了。
hexo经常使用指令有以下(均可以只写第一个字母,如 hexo n):
hexo clean # 清空缓存文件和已生成的静态文件 hexo new [名字] # 新建一篇文章 hexo generate # 生成静态文件,即html文件 hexo deploy # 部署网站,即提交到服务器的仓库(以前的git钩子已设置成仓库文件一旦更新,会自动更新到站点目录)。
更多指令可在 官方文档 中查询。
第一次写一篇这么长的文章,口水话不少,也有不少不清晰的地方。不过相信会越写越好的。祝你们学习愉快,工做顺利!