当前位置: 首页 > Web前端 > HTML

如何在服务器上搭建一个hexo博客

时间:2023-04-02 22:21:53 HTML

原文链接由于Vateral主题的开发接近尾声,在优化主题速度的时候,发现之前使用的githubpage存在很多问题:首先总之,因为国内的原因,访问速度本身就很慢慢,有一次加载一个16kb的图标需要26s!!?其次,在做资源CDN托管加速时,需要备案域名,显然githubpage也做不到;所以我果断放弃了这个,在我的阿里云服务器上搭建了hexo。还是比在github上搭建hexo复杂。期间遇到了很多坑,参考了很多资料。下面是具体步骤的详细总结。hexo的架构首先我们要了解hexo是如何通过服务端实现静态博客访问的。从上图我们可以看出,整个过程就是通过hexog将博客的静态文件渲染到本地,然后通过hexod将静态文件推送到服务器。自己创建的git仓库,服务器再通过git-hooks同步网站根目录,这样就可以访问搭建过程第一步:安装node.js和本地Hexo初始化第二步:搭建服务器环境,包括安装Git和Nginx配置、创建git用户第三步:使用Git自动部署发布博客在本地环境安装node.js$brewinstallnode初始化一个Hexo博客首先创建你的Hexo目录$mkdir"yourhexodirname"//创建一个自定义的hexo目录,比如我在用户根目录下创建了一个myhexo文件夹(macOS)$cd"yourhexodirname"//进入刚刚创建的目录,安装hexo-cli。安装hexo-cli需要root权限,运行sudosudonpminstall-ghexo-cli初始化文件夹hexoinit安装hexo扩展插件npminstall等。执行成功后,安装两个插件hexo-deployer-git和hexo-server。这两个插件的作用是使用Git自动部署,本地简单服务器。npminstallhexo-deployer-git--savenpminstallhero-server--save和一些其他插件(*不需要)npminstallhexo-admin--savenpminstallhexo-generator-archive--savenpminstallhexo-generator-feed--savenpminstallhexo-generator-search--savenpminstallhexo-generator-tag--savenpminstallhexo-generator-sitemap--save到这里hexo的本地搭建就基本结束了,快来新建一篇文章在本地启动吧让我们创建您的第一篇文章。使用hexonew创建一个新帖子。此命令将创建一个.md文件并将其放在sources/_posts文件夹中。(*在hexo目录下执行命令)hexonew"helloHexo"执行该命令后,会在hexo目录下的sources/_posts文件夹中生成刚才创建的helloHexo.mdmarkdown文件,然后就可以在本地使用或者online可以用markdown编辑器创建自己的博客~编辑好后用hexog将.md文件渲染成静态文件,然后启动hexo-serverhexoghexoserver打开http://localhost:4000如果看到初始hexo安装成功的页面证明。生成ssh公钥$cd~/.ssh$ssh-keygen它首先会让你确认公钥(.ssh/id_rsa)的保存位置,然后它会让你重复两次密码,如果你不想再次使用公钥输入密码时,可以留空;具体制作方法可以参考这里。此公钥将被复制到服务器的证书中。添加公钥后,可以防止每次推送都输入密码。至此,当地环境建设基本完成。搭建服务器环境并安装nginx因为我们使用nginx作为web服务器,所以需要安装部署nginx。如果没有安装,建议使用LNMP一键安装包。我们可以为hexo创建一个部署目录,比如我创建了/home/www/hexo文件夹,将nginx配置文件nginx.conf中的部署目录修改为/home/www/hexo,配置文件一般在/usr/本地/nginx/conf;你也可以使用默认目录,nginx默认目录是/var/www/html。如果使用LNMP一键安装包,默认部署目录为/home/wwwroot/default安装node.js$curl-sLhttps://deb.nodesource.com/setup_4。×|sudo-Ebash-$apt-getinstall-ynodejs遇到问题可以参考Node.js部署到阿里云服务器更详细的node.js安装步骤git$apt-getinstallgit创建git用户$sudoaddusergit虽然当前仓库只有我们自己使用,没有必要新建git用户,但是为了安全起见,还是建议使用单独的git用户来运行git服务,并添加证书来登录in.本地创建或已经拥有的公钥,即~/.ssh/id_rsa.pub文件中的内容添加到服务器的/home/git/.ssh/authorized_keys文件中。上面说了,加上公钥可以防止每次推送都输入密码。(*可以直接执行cat~/.ssh/id_rsa.pub|pbcopy进行复制)初始化Git仓库,将Git仓库放在自定义位置。我把它放在/var/repo/blog.git目录下的$sudomkdir/var/repo$cd/var/repo$sudogitinit--bareblog.git使用--bare参数,Git会创建一个裸仓,裸仓没有工作空间,我们不会对裸仓进行操作,裸仓只是为了分享而存在。要配置git钩子,我们在这里要使用的是post-receive钩子。这个钩子会在整个git操作过程完成后运行。有关钩子的详细信息,请参阅此处。在blog.git/hooks目录下新建一个post-receive文件$cd/var/repo/blog.git/hooks编辑这个文件$vimpost-receive在post-receive文件中写入以下内容#!/bin/shgit--work-tree=/home/www/hexo--git-dir=/var/repo/blog.gitcheckout-f注意,/home/www/hexo要换成你自己的部署目录,上面说了比如说,我的配置目录是/home/www/hexo。/var/repo/blog.git是git存储库的位置。上面的git命令可以在每次推送后将部署目录更新为博客的最新生成状态。这样就可以达到自动部署的目的。设置这个文件的可执行权限chmod+xpost-receive把blog.git目录的属主改成git用户$sudochown-Rgit:gitblog.git禁用git用户的shell登录权限git用户不能通过shell登录。你可以编辑/etc/passwd来实现vim/etc/passwdchangegit:x:1001:1001:,,,:/home/git:/bin/bashtogit:x:1001:1001:,,,:/home/git:/usr/bin/git-shell这样git用户可以通过ssh正常使用git,但是不能登录sehll。至此,服务器环境搭建基本完成。配置本地_config.yml文件完成自动部署现在配置hexo的部署。修改hexo目录下的_config.yml找到deploy,修改为:deploy:type:gitrepo:git@www.moumaobuchiyu.com:/var/repo/blog.gitbranch:masterrepo的地址是你自己的地址和gitwarehouse目录至此,我们的hexo自动部署就已经全部配置完毕,可以开始使用了。新建一篇文章:$hexonew"postname"生成&部署:$hexoclean&&hexog&&hexod参考在VPS上搭建Hexo博客并使用Gi??t部署阿里云在VPS上搭建自己的Hexo博客使用GitHook自动部署Hexo到个人VPS使用githooks自动部署Hexo博客最后欢迎使用我最近为Hexo开发的主题Vateral查看演示。喜欢的话就给个star支持吧~