前言喜欢分享是程序员的天性,所以大部分程序员都会有自己的博客,里面可以包含一些工作中遇到的问题和解决方案,或者是新技术的总结最近学到的东西,也可以是对生活的一种反思和感悟。建立个人博客的方法也有很多。可以直接在第三方博客平台上写,比如掘金、博客园、CSDN等,也可以使用hexo搭建博客,部署到githubpages。当然,如果你有私有云服务器,也可以在上面使用wordpress博客系统搭建博客。本文是关于使用hexo搭建博客,但是部署到私有云服务器上。准备工作本文重点介绍将博客部署到私有云服务器上,所以默认已经做了一些准备工作。具体包括以下几点:已安装Nginx的私有云服务器,推荐使用君阁的LNMP一键安装包安装Nginx博客域名:如果服务器是在国外购买的,域名不需要工信部备案,如果服务器是在阿里云/腾讯云等平台购买的,域名需要在工信部备案。并将域名解析到私有云服务器。Node.js、hexo博客环境、git部署步骤已经本地安装好搭建git仓库新建git用户并设置密码addusergitpasswdgit修改权限chmod740/etc/sudoersvim/etc/sudoersfindrootALL=(ALL)ALL在其下添加gitALL=(ALL)ALL保存后改回sudoer权限:chmod400/etc/sudoers创建免密码登录证书在服务器中开启RSA认证vim/etc/ssh/sshd_config找到以下内容三项并启用它们,如果没有找到则添加RSAAuthenticationyesPubkeyAuthenticationyesAuthorizedKeysFile.ssh/authorized_keys切换到git用户并开始配置sshsugitcd~mkdir.ssh&&chmod700.ssh接下来,将开发者公钥添加到git中的.ssh用户向git仓库推送数据无需保密。在本机通过C盘用户目录/.ssh/id_rsa.pub找到ssh公钥,在服务器.ssh新建authorized_keys文件复制进去。注意:公钥是authorized_keys文件中的一行。如果之前没有上传文件到github,添加一个touch/home/git/.ssh/authorized_keyssudochmod600/home/git/.ssh/authorized_keysvim/home/git/.ssh/authorized_keys等仓库的经验,如果本地客户端没有sshkey,需要先生成。修改git用户权限,为git用户设置权限,限制其只能使用git-shell向git仓库推送或拉取,但不能登录本机获取普通的shell命令来控制系统。使用whichgit-shell判断是否安装了git-shell。如果没有安装,yuminstallgit判断shells文件路径是否存在:cat/etc/shells,如果shells文件不存在或者文件中没有/usr/bin/git-shell,sudovim/etc/shells在底部添加/usr/bin/git-shell创建仓库在/var/repo中创建一个空仓库(切换到root用户)mkdir/var/repocd/var/repogitinit--bareblog.git配置githooks这样当更新仓库时,同步更新nginx配置文件中root指向的目录(这里root指向/home/wwwroot/www.blogdomain.com/)vim/var/repo/blog.git/hooks/post-receive添加#!/bin/shgit--work-tree=/home/wwwroot/www.blogdomain.com/--git-dir=/var/repo/blog.gitcheckout-f/home/wwwroot/www.blogdomain.com/chmod-R777*保存退出并设置权限chmod+x/var/repo/blog.git/hooks/post-receive更改blog.git所有者sudochown-Rgit:gitblog.git使用chsh命令修改任意系统用户的shell权限sudochshgit之后进入LoginShell[/bin/bash]:/usr/bin/git-shell修改后验证cat/etc/passwd是否以git-shell结尾,例如:git:x:1003:1003:,,,之后:/home/git:/usr/bin/git-shell修改,在本地客户端使用sshgit@serverip登录会被拒绝(第一次登录这个网址会提示继续连接,输入yes):$sshgit@gitserverfatal:Interactivegitshellisnotenabled.提示:~/git-shell-commands应该存在并且已经阅读了d执行access.Connectiontogitserverclosed.gittest完成以上步骤后通过测试判断git服务器是否部署成功,在本地客户端执行gitclonegit@serverip:/var/repo/blog.git如果远程服务器禁用了22端口登录,可以使用如下语句:gitclonessh://git@serverip:port/var/repo/blog.git输入密码后(如果秘钥配置成功,你不需要输入密码)如果blog.git中没有内容会提示:···git@serverip`spassword:warning:YouappeartohavecloneanemptyrepositoryNginxconfiguration本文假定你使用lnmp一键安装包,可以使用如下命令将博客域名添加到虚拟主机中:lnmpvhostadd具体选项可以根据需要选择:最后按回车即可完成虚拟主机的添加hexo本地配置修改t中的_config.yml文件本地hexo博客根目录#Deployment##Docs:https://hexo.io/docs/deployment.htmldeploy:type:gitrepo:vps:git@serverip:/var/repo/blog.gitbranch:master将博客部署到私有云服务器在hexo博客根目录下执行如下命令:hexocleanhexoghexodto这样就完成了hexo博客的配置和部署。在浏览器中输入域名(文中示例中使用www.blogdomain.com)即可访问博客。
