开始前的碎碎念
为了搭建这个小站,搜索了很多资料,踩了很多坑。这里努力写点有用的东西防止后人踩坑。希望阅读的读者遇到问题时思考自己是否是符合本样例的情况。
这是一篇旨在使用linux服务器+nginx+hexo+git实现搭建个人博客的教学性质文章。
requires
-
一台服务器,本例子是linux centos,阿里的云服务器
[root@host~]# lsb_release -aLSB Version: :core-4.1-amd64:core-4.1-noarchDistributor ID: CentOSDescription: CentOS Linux release 7.6.1810 (Core)Release: 7.6.1810Codename: Core -
本地电脑:window 10
-
nginx ; node.js ; hexo ; git ; npm
本地电脑
-
安装git
-
安装node.js (node.js自带npm)
-
安装hexo
使用node.js的npm安装hexo,这里windows可以先设置一下npm的默认安装目录,本强迫症表示你默认装在c盘我很难受。打开命令行,运行:
坑:原教程里写了路径末尾加了node_modules,事实证明并不需要,这个命令会在目标目录生成一个node_modules。我这里设置默认安装路径在node.js本体的安装路径,因为这个路径里本身就有一个用于安装npm本身的nnode_modules文件夹。当然即使这样做了,npm运行缓存还是会存在c盘,需要继续修改设置的请移步这里
Terminal window npm config set prefix "E:\node.js\"- 安装hexo
坑:-g意为global,全局安装就会安装到你设置的安装目录里,没有这个参数默认会安装在你npm当时命令行运行的目录里创建node_moudels并进行安装
Terminal window npm install -g hexo-cli
- 安装hexo
-
搭建博客
后续关于博客搭建的章节可以参照官方教程
- 创建一个文件夹用于做博客的目录
- 切换到这个文件夹所在目录,运行命令:
Terminal window hexo init <folder name> - 进入该文件夹:
Terminal window npm install
坑:以上两步必不可缺,否则会产生缺少依赖问题,例如不生成静态文件(如x.html)的问题
-
配置你的站点:
- 修改博客目录下的_congfig.yml文件官方教程
-
书写你的第一篇文章:
-
在你的博客文件夹内运行命令
Terminal window hexo new "Hallow world" -
会在source文件夹内的默认_posts文件夹下生成一个md文件,接下来就可以参照markdown语法愉快的敲代码了
-
-
生成你的网站:
-
在你的博客文件夹内运行命令
Terminal window hexo generate或者使用快捷缩写
Terminal window hexo g -
在本地预览你的博客网站
Terminal window hexo server或者使用快捷缩写
Terminal window hexo s
坑:如果generate出错请检查博客文件夹下_config.yml内的配置是否正确,每一个冒号后面必须跟一个空格!!!
坑:如果没能本地预览可能是因为缺少hexo-server,请运行npm install hexo-server —save
-
-
安装hexo-deployer-git
安装该模块方便使用hexo最牛逼的推送功能
Terminal window npm install hexo-deployer-git --save -
本地配置git生成私钥以及公钥
在git安装配置没有出错的情况下,环境变量完成配置,用户信息设置完全的情况下:
Terminal window ssh-keygen -t rsa -C "your_email@email.com"该命令会在c:\user(你的电脑用户名).ssh文件加下生成密钥对。id_rsa文件为私钥,id_rsa.pub为公钥。 在后续的服务器配置过程中,我们会把公钥设置在服务器上,这样git推送的时候就可以免去密码认证
服务器配置(linux)
-
安装nginx
Terminal window yum install nginx -y你也可以使用lnmp一类的一键脚本安装web环境,这里不举例。
-
配置nginx
-
基本配置
找到nginx的配置文件,默认在/etc/nginx/nginx.conf编辑内容
基本只需要简单的修改默认配置中的网站根目录以及域名的设置,找到如下字段
listen 80 default_server; # 默认端口listen [::]:80 default_server;server_name _; # 你的域名,没有的话根目录即可root /home/www/blog; # 网站根目录,教程后续创建 -
启动nginx:
Terminal window service nginx startservice nginx reload -
设置开机自启:
Terminal window chkconfig nginx on或者
Terminal window systemctl enable nginx.servcice
-
-
开放防火墙放行80端口
-
运行
Terminal window iptables -A INPUT -p tcp --dport 80 -j ACCEPT -
保存防火墙设置
Terminal window service iptables save坑:本人这条命令并没有执行成功,这个版本的linux似乎不支持这条命令,最后还是执行的service iptables reload
-
查看防火墙规则: 出现这条内容意味着防火墙设置完成:
[root@host ~]# iptables --list -nChain INPUT (policy ACCEPT)target prot opt source destinationACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
坑:云服务器供应商还会提供安全组一类的东西,请在那里面也放行对应端口
-
-
测试nginx是否配置成功
- 服务器本地访问又返回结果:
Terminal window curl 127.0.0.1 - 远程访问服务器网页端口,即在你的浏览器里输入服务器ip或者域名出现nginx默认页面即表示配置完成。
- 服务器本地访问又返回结果:
-
配置git
-
如果服务器没有git请参照上面安装git
-
新建git用户,并设置用户密码
Terminal window useradd gitpasswd git -
新建网站目录,并修改网站根目录的用户拥有者为git用户
Terminal window cd /homemkdir wwwcd wwwmkdir blogchown git:git blog -
切换为git用户,进入其家目录创建.ssh文件夹,并进入
Terminal window su gitcd ~mkdir .sshcd .ssh -
创建authorized_keys文件,讲你本地电脑上的公钥内的文件内容复制到该文件内。
这里怎么操作自我发挥吧,把公钥文件传上来该跟名字,或者你开心就好设置密钥文件只读,文件夹权限:
Terminal window chmod 600 authorized_keyschmod 700 /home/git/.ssh
- 配置ssh的配置文件/etc/ssh/sshd_config,修改如下词条
RSAAuthentication yes # 开启rsa密钥认证PubkeyAuthentication yes # 开启公钥认证AuthorizedKeysFile .ssh/authorized_keys # 设置存贮文件
-
在你的git用户家目录下新建你的博客仓库,并初始化为git裸仓库
Terminal window mkdir blog.gitgit init --bare blog.git -
配置裸仓库:进入仓库文件夹,在hooks文件夹内新建post_receive。文件写下一下内容
#!/bin/bashgit --work-tree=/home/www/blog --git-dir=/home/git/blog.git checkout -f这是一个linux shell规定了当接受到post请求之后的动作,把文件内容放到网站根目录里
在你的本地!!! 测试ssh 免密码连接
shell ssh -T git@your_host如果没有提示输入密码证明配置成功 -
回到本地电脑
-
编辑blog下的配置文件_config.yml
# Deployment## Docs: https://hexo.io/docs/deployment.htmldeploy:type: gitrepo: git@your_host:blog.gitbranch: master -
愉快的测试推送把!~
或者死于bug error hhhTerminal window hexo deploy或者
Terminal window hexo d
坑:不安装hexo-deployer-git是不可能推送的
坑:如果访问页面出现cantnot GET/ 请检查主题设置,网上很多教程的设置基于hexo next主题,涉及到主题文件的请看你的主题的作者自己的文档,而不是看某dn
分享文章
生成精美分享图或复制链接,与更多人分享本文。
继续阅读
换条路线
从其他文章中稳定抽取
最后更新于 ,距今已过 2826 天
部分内容可能已过时
评论