当前位置: 首页 > Linux

使用云服务器搭建Hexo个人博客

时间:2023-04-06 03:02:30 Linux

【全面了解如何使用Hexo+GitHubPages搭建个人博客】讲解如何使用Hexo+GitHubPages搭建自己的个人博客。使用一段时间后,发现访问速度慢,而且前段时间腾讯云做活动的时候也购买了云服务器,所以把个人博客迁移到了腾讯云。其实不一定是腾讯云。希望通过这篇文章,你可以将原本部署在GitHubPages上的博客部署到任意的云服务器上。还是为了吃透目的,也参考了很多文章,大部分都是按照文章中的说明一行行配置部署命令,期间也用过宝塔面板。后来因为原来的服务器过期了,又得重新部署。由于没看透,一直没能找到《玩转腾讯云》Hexo博客这篇部署腾讯云按照教程一遍又一遍的配置。但是这次配置完之后,我得出的结论是,其实在明确了步骤和每一步的目的之后,将Hexo部署到服务器上并没有那么复杂,第一次配置的很多步骤都是不需要的。阅读指南环境CentOS7.664位配置步骤服务器配置安装Git仓库托管安装git编译所需依赖包安装git创建git用户配置rsa公钥GitHubPages作为web服务器->安装配置Nginx云服务器Web服务Cloudservice其中,创建站点目录,安装配置Nginx云服务器,安装Nginx,配置Nginx,重启Nginx服务,配置git仓库,修改权限。同步网站根目录(配置githook),修改权限。域名解析Hexo配置推送到github仓库->Hexo配置推送到云服务器git仓库修改Hexo配置测试首先我会一步步讲解所有的链接,文末我会整合这些命令步骤让你看得懂按照配置指南进行配置。希望通过这组拆解整合的动作,让大家充分了解如何将Hexo部署到云服务器上。前期准备首先需要一台云服务器。腾讯云、阿里云、京东云,无所谓哪个云便宜,哪个云便宜。对于学生来说,各大平台都有优惠。如果买不到打折的云产品,可以私聊我(不是广告,因为我当时没买,因为太贵了,个人用户可吓死千百倍。我后来发现有通道)那么你参考我之前的文章【完全理解如何使用Hexo+GitHubPages搭建个人博客】已经搭建了一个基于Hexo+GitHubPages的博客了,接下来就要开始我们的迁移工作了。迁移工作的总体思路是原来使用GitHubPages作为博客的web服务器,现在换成了自己的云服务器,所以只需要在上面实现原来GitHubPages提供的相关功能即可云服务器。回想一下,原来github是用来存放博客相关的资源和文件的,所以服务器需要有git的功能;如果使用GitHubPages作为web服务器,那么云服务需要有web相关的服务;原来的GitHubPages解析域名,通过域名配置跳转到GitHubPages的地址,现在搬到了云服务器。云服务器有自己的IP地址,需要修改原有的域名解析,在服务器上做域名相关配置;最后,在原来的Hexo中配置了Hexo,推送地址是GitHub上的仓库,这里必须修改推送地址,并且在本地做Hexo相关的工作,将md文件转成HTML,先关闭文件,这样就有了安装HTML之前无需关闭工作。所以综上所述,一目了然,需要做以下工作:github代码托管服务->服务器安装git配置git仓库托管相关服务GitHubPages作为web服务器->安装配置Nginx云服务器web服务域名解析到GitHubPages->域名解析将IPHexo配置推送到云服务器到github仓库->将Hexo配置推送到云服务器git仓库服务器配置并安装Git仓库托管我们以前使用GitHubPages来上传和管理我们的Hexo-相关的文件,现在我们当然需要在云平台上有一个工具来实现类似代码托管的功能来托管我们的博客文件,这里我们需要先安装Git。如果原来的服务器上有git工具,这一步其实可以省略。如果git版本太低,也最好安装最新版本。安装git编译需要的依赖包yuminstallcurl-develexpat-develgettext-developenssl-develzlib-develyuminstallgccperl-ExtUtils-MakeMaker这两个命令有点迷惑,到底是什么,反正我是启动了键盘是飞梭,配置完成后,回来拆解理解。其实就是Git需要调用的一堆库。下面是各个依赖包的功能。可以先开始后面的操作,回过头来看看。curl-develcURL是一个使用任何支持的协议从FTP、HTTP、Gopher、Telnet和Dict服务器获取文件的工具。curl-develpackage包含开发可以在内部使用cURL功能的应用程序所需的文件。大致的翻译是:cURLPackage是一种工具,可以使用所有支持的协议从FTP/HTTP/Gopher/Telent/Dic服务器获取文件。curl-devel包集成了用于使用cURL包开发应用程序的所有文件。如果未安装此依赖项,则在未安装(lib)curl-devel的情况下编译git可能会导致在gitclone期间出现“无法找到'https'的远程帮助程序”问题。expat-devela以C编写的面向流的XML解析器库。Expat擅长处理太大而无法容纳RAM的文件,并且性能和灵活性至关重要。一个用C编写的面向流的XML解析器库。Expat擅长处理太大而无法放入内存的文件,其中性能和灵活性至关重要。gettext-devel具体来说,GNUgettext实用程序是一组工具,它提供了一个框架来帮助其他GNU包生成多语言消息。这些工具包括一组关于应该如何编写程序以支持消息目录的约定、消息目录本身的目录和文件命名组织、支持翻译消息检索的运行时库,以及一些独立的程序来按摩可翻译字符串集或已翻译字符串的各种方式。具体来说,GNUgettext实用程序是一组工具,它提供了一个框架来帮助其他GNU包生成多语言消息。这些工具包括一组关于应如何编写程序以支持消息目录的约定、消息目录本身的目录和文件命名组织、支持翻译信息检索的运行时库,以及一些独立的程序以各种方式翻译的字符串。的集合,或已翻译的字符串。openssl-devel字面意思是openssl相关库zlib-develzlib-devel包中包含开发使用zlib压缩和解压库的程序所需的头文件和库。gccgcc相关包perl-ExtUtils-MakeMakerExtUtils::MakeMaker模块,该模块用于创建Makefile模块。很明显,后面两个是因为如果你的云服务器没有安装gcc相关的工具,它是用来安装C语言编译相关的工具,因为git是用C写的,安装git安装好git编译需要的依赖后,开始安装Git。如果安装了低版本的git,首先需要卸载原来的gityumremovegit才能查看最新的git版本,我们登录git官网查看最新的版本号,这里可以看到2.31.0进入git安装目录,这里选择/usr/local/srccd/usr/local/src//选择文件保存位置下载gitwgethttps://mirrors.edge.kernel.org/pub/software/scm/git/git-2.31.0.tar.gz//下载链接注意这里,版本号替换成你要下载的版本号unziptar-zxvfgit-2.18.4.tar.gz//这里解压,一直解压tar命令的参数含义忘记了,复习一下-z或--gzip或--ungzip通过gzip指令处理备份文件。-xor--extractor--get从备份文件中恢复文件-vor--verbose显示命令执行过程-for--file=指定备份文件。安装编译cdgit-2.19.0//进入文件夹makeprefix=/usr/local/gitall//编译源码makeprefix=/usr/local/gitinstall//先安装到/usr/local/git路径是汇编。第二条命令中的所有内容都是在makefile中指定的编译目标。如果make不加all,那么默认执行makefile中的第一个编译目标。这就是两者的区别。但是,在大多数makefile中,all将用作第一个编译目标。如果是这样,加不加都是一样的。因此,实际的执行结果取决于makefile的编写方式。编译目标。编辑配置git的路径到环境配置文件vim/etc/profile//在文件末尾添加如下内容PATH=$PATH:/usr/local/git/bin//git所在目录exportPATH//保存后刷新环境变量source/etc/profile创建一个git用户。一般不会使用root用户对云服务器进行所有操作,所以在使用Hexo上传文件到云服务器时,需要为该操作创建一个git用户,并修改权限。新建git用户addusergit//给服务器添加一个名为git的用户passwdgit//设置密码为git其中git替换为要设置的密码将新建的git用户添加到sudo组chmod740/etc/sudoersvim/etc/sudoerschmod是对文件权限的修改,每个740代表所有者、组、其他组的权限。这里是所有者的权限为7,当前用户组的权限为4、而其他组的权限为0,那么7、4、0分别代表什么?一个文件有read、write、execute表示r、w、x,对应的权限为4、2、1(二进制),所以读权限为4,写权限为2,执行权限为1。一个用户或组的权限是这三个操作的总和:-如果你想设置rwx(可读,可读和运行)权限,设置权限位为4+2+1=7-如果要同时设置rw-(可读,可读,不可执行)权限,setthepermissionbitto4+2=6-要同时设置r-x(可读,可执行,不可写)权限,设置权限位为4+1=5这里chmod740/etc/sudoers是为了为文件设置可读写和运行权限,为用户组设置可写权限,为其他组设置不可读、可写、不可运行权限。简单的理解就是把当前用户提前,因为下一步就是修改这个文件。/etc/sudoers文件管理着sudo组的用户,在这里编辑这个文件,将git用户加入到这个用户组中。以后就不用再用sudo命令输入密码了~在下面的内容后面加上:##允许root在任何地方运行任何命令rootALL=(ALL)ALL#这里加上gitALL=(ALL)ALL第一个ALL表示允许从任何终端和机器访问sudo第二个(ALL)表示允许以任何用户身份执行sudo命令第三个ALL表示所有命令都可以以root身份执行以修改权限,也就是把当前用户的权限降低到该文件只能读,其他用户不能读、写、修改这个文件。chmod400/etc/sudoers配置rsa公钥在本地创建rsa秘钥,注意这是本地操作,不是远程服务器ssh-keygen-trsa如果你已经创建了rsa公钥,就用之前的就是以前在github上配置的rsa公钥rsa公钥的默认存放地址是~/.ssh复制id_rsa.pub文件的内容到远程服务器的authorized_keys文件sugitmkdir~/.sshvim~/.ssh/authorized_keys注意这里的路径~是当前用户的用户文件夹,因为只有git用户可以修改rsa公钥的权限cd~chmod600.ssh/authorized_keyschmod700.ssh在这里,各位读者要求想想每次跳转命令后当前文件的权限会发生什么变化?欢迎留言~本地测试git服务至此我们的git服务已经配置成功,下面我们来测试一下git服务是否可以运行成功?在本地运行:ssh-vgit@SERVER//@是你自己的服务器公网IP,如果没有出现failed字样,说明GitHubPages作为web服务器成功->安装配置的web服务云服务Nginx云服务器并创建网站目录suroot//使用root用户mkdir/home/hexo//创建网站根目录为/home/hexochowngit:git-R/home/hexochowngit:git-R/home/hexo用于设置文件关联组的文件所有者和命令。将/home/hexo目录及其子目录下所有文件的属主设置为git,组users设置为git组。-R:处理指定目录及其子目录下的所有文件安装配置Nginx云服务器安装Nginxyuminstall-ynginx//安装systemctlstartnginx.service//启动服务这里yuminstall-y遇到这样就OK了[y/d/N]会在提示配置Nginx时自动选择y查看nginx.conf配置文件的位置nginx-t//查看位置,一般为/etc/nginx/nginx.conf。修改配置文件vim/etc/nginx/nginx.conf//修改配置文件//在root后面添加/home/hexo其中root是你的web根目录,这里设置为我们博客站点的根目录重启Nginx服务systemctlrestartnginx.servicegit仓库配置githook使用Hexo命令在本地推送不能直接推送到网站根目录,而是推送到git的文件仓库。因为git仓库只是用来推送和更新文件的,和web根目录的功能不同,所以不能相同。首先需要新建一个文件夹作为git仓库,使用git的githook功能将推送到git仓库的文件同步到web根目录/home/hexo。创建一个git仓库并修改权限surootcd/home/gitgitinit--bareblog.gitchowngit:git-Rblog.gitgitinit--bare创建一个裸仓库,在工作目录下,只有一个.git目录。与gitinit创建普通仓库的区别,请参考【什么是裸git仓库?】。同步网站根目录(配置githook)打开blog.git/hooks/post-receive文件,填写以下内容:vimblog.git/hooks/post-receive//填写以下内容#!/bin/shgit--work-tree=/home/hexo--git-dir=/home/git/blog.gitcheckout-f使用githooks中的post-receive实现代码提交完成后的动作。在仓库中指定一个--work-tree然后执行checkout操作checkout--force修改权限chmod+x/home/git/blog.git/hooks/post-receive所有数字前面的chmod命令表示权限,这里+x简单的做法就是把执行权限域名解析给GitHubPages->域名解析给云服务器的IP。这里有两个步骤。首先在服务器上配置nginx,在其配置文件中加入自己注册的域名。如何找到这个配置文件参考上一章修改Nginx配置文件中的域名信息vim/etc/nginx/nginx.conf//修改配置文件//在server_name后面加上自己的域名修改域名在自己的DNS解析控制台解析IP,修改A记录一下,之前用过宝塔面板,有兴趣的可以试试,可视化操作也很不错。Hexo配置推送到github仓库->Hexo配置推送到云服务器git仓库。在本地Hexo目录下的_config.yml文件中修改deploy。repogit@SERVER:/home/git/blog.git//@是云端服务器公网IPblog.git是你的推送仓库目录部署测试hexogNice!熟悉的页面出现您的Hexo个人博客已经成功部署到个人云服务器!配置命令指南这里是所有命令的总结。按照以下步骤完成您的个人博客在云服务器上的部署。方便参考:安装git编译需要的依赖包yuminstallcurl-develexpat-develgettext-developenssl-develzlib-develyuminstallgccperl-ExtUtils-MakeMaker安装git。如果安装了低版本的git,首先需要卸载原来的gityumremovegit,进入git安装目录。这里选择/usr/local/srccd/usr/local/src//选择文件保存位置下载gitwgethttps://mirrors.edge.kernel.org/pub/software/scm/git/git-2.31.0。tar.gz//下载解压链接tar-zxvfgit-2.18.4.tar.gz//解压安装编译cdgit-2.19.0//进入文件夹makeprefix=/usr/local/gitall//编译源码makeprefix=/usr/local/gitinstall//安装到/usr/local/git路径编辑配置git的路径到环境配置文件vim/etc/profile//添加如下内容文件末尾PATH=$PATH:/usr/local/git/bin//git目录exportPATH//保存后刷新环境变量source/etc/profile新建一个git用户addusergit//添加一个用户名为gitfortheserverpasswdgit//给git设置密码这里git换成要设置的密码将新创建的git用户添加到sudo组中chmod740/etc/sudoersvim/etc/sudoers在下面添加:##AllowroottorunanycommandsanywhererootALL=(ALL)ALL--Addhere----gitALL=(ALL)ALL修改权限chmod400/etc/sudoers在本地创建rsakey,注意这是本地操作,不是远程服务器ssh-keygen-trsa复制id_rsa.pub文件内容到authorized_keys远程服务器在文件中sugitmkdir~/.sshvim~/.ssh/authorized_keys修改权限cd~chmod600.ssh/authorized_keyschmod700.ssh本地测试git服务ssh-vgit@SERVER//@是自己的服务器公网IP,如果没有出现failed字样,说明云服务创建网站目录成功suroot//使用root用户mkdir/home/hexo//创建网站根目录为/home/hexochowngit:git-R/home/hexocloudserverinstallNginxyuminstall-ynginx//安装systemctlstartnginx.service//启动服务查看nginx.conf配置文件所在位置nginx-t//查看位置,一般为/etc/nginx/nginx.conf修改配置文件vim/etc/nginx/nginx.conf//修改配置文件//root后添加/home/hexo重启Nginx服务systemctlrestartnginx.service创建git仓库并修改权限surootcd/home/gitgitinit--bareblog.gitchowngit:git-Rblog.git打开blog.git/hooks/post-receive文件,填写以下内容vimblog.git/hooks/post-receive//填写以下内容内容#!/bin/shgit--work-tree=/home/hexo--git-dir=/home/git/blog.gitcheckout-f修改权限chmod+x/home/git/blog.git/hooks/post-receive修改Nginx配置文件vim/etc中的域名信息/nginx/nginx.conf//修改配置文件//在server_name后添加自己的域名在自己的DNS解析控制台修改域名解析IP,修改A记录修改deploy在_config.yml文件中本地Hexo目录repogit@SERVER:/home/git/blog.git//@测试云服务器公网IP部署后,hexog常见错误最后执行hexog遇到如下错误:bash:git-receive-包:找不到命令致命:无法从远程存储库读取。原因:远程服务器上的git安装路径是/usr/local/src/git,不是默认路径,所以创建链接文件:ln-s/usr/local/src/git/bin/git-receive-pack/usr/bin/git-receive-pack目前没遇到其他问题,有其他问题可以评论交流参考资料【玩转腾讯云】部署到腾讯云Linux的Hexo博客获取最新版本Git的编译安装SLC5X:DevelopmentLibraries:curl-devellibexpatGit仓库介绍gettext介绍ExtUtils::MakeMakerLinuxtar命令每天学一个命令:Linux下sudo管理权限Linuxchown命令git使用post-receive自动部署Linuxchmod命令git-receive-pack:找不到命令