惭愧后台,博客建了很久,已经免费部署在Coding和GithubPages上。前者迁移到腾讯云Serverless,导致原有配置出现问题。我没有时间仔细研究它。至于选择腾讯云,是因为原备案是在腾讯云,但购买的域名是在阿里巴巴。感觉别扭,但整体上没有任何关联,也不影响部署环境。本地环境MacOSMonterey12.0.1服务器环境CentOSLinuxrelease8.2.2004(Core)本地环境配置hexo本地的搭建过程网上太多了,这里就不赘述了,这里只是稍微准备一下链接服务器一路生成Git密钥ssh-keygen-C"your@mail.com"那么应该可以在~/.ssh/目录下看到两个新生成的密钥文件:publickey:id_rsa.pubprivatekey:id_rsa我们需要把publickey的内容复制到服务器。服务器环境配置服务器很干净,什么都没有,所以我们需要一点点安装我们需要的内容。GitNginx强烈建议您重置腾讯云服务器的默认密码,然后执行以下操作Git安装和配置安装切换进入root用户(输入刚刚重置的密码即可)suroot首先需要安装依赖packageyuminstallcurl-develexpat-develgettext-developenssl-develzlib-develyuminstallgccperl-ExtUtils-MakeMaker进入指定目录(这里选择usr/local/src)选择最新版本的Git(使用2.34.1此处)下载并解压cd/usr/local/srcwgethttps://mirrors.edge.kernel.org/pub/software/scm/git/git-2.34.1.tar.gztar-zxvfgit-2.19.0。tar.gz解压出来的Git文件都是源文件,我们需要编译,进入Git解压目录,编译安装,安装位置(这里选择usr/local/git),整个过程可能需要一段时间...cdgit-2.34.1makeprefix=/usr/local/gitallmakeprefixx=/usr/local/gitinstall安装完成后,我们需要配置环境变量,打开环境变量配置文件:vim/etc/profile在文件底部添加Git安装目录信息,给不熟悉的同学用Vim快捷操作步骤,按照下面的字母按就行了(这个保姆服务到位了吗?)G(光标快速到文件末尾)o(新增一个空行,进入Insert模式)粘贴以下内容Esc(进入Normalmode):wq(saveandexit)PATH=$PATH:/usr/local/git/binexportPATH刷新环境变量使其生效source/etc/profile此时应该已经安装了git,可以查看Git版本号是否和你指定的一样:git--versionGitnewuserandconfigurationCreategituserandpasswordaddusergitpasswdgitaddgitusertothesudoersfile,alsogiveVimshortcutoperationchmod740/etc/sudoersvim/etc/sudoers/##Allow这样可以快速定位到以下位置:##AllowroottorunanycommandsanywhererootALL=(ALL)ALL在下面一行添加git用户内容,保??存退出gitALL=(ALL)ALL修改回sudoers文件权限chmod400/etc/sudoerstest会在本地生成上面的id_rsa.pub公钥内容到远程服务器,这个命令会生成authorized_keys文件(~/.复制错了ssh-copy-id-i~/.ssh/id_rsa.pubgit@server_ip可以通过ssh命令(加上-v命令,可以输出详细的log)测试连接ssh-vgit@server_ipblogsitedirectory配置和创建博客站点目录位置也切换到根目录,然后为博客站点创建根目录(这里选择/home/hexo)surootmkdir/home/hexo给git用户权限chowngit:git-R/home/hexo自动配置指定目录位置(这里选择git用户主目录/home/git)创建一个名为blog.git/home/gitgitinit--bareblog的barerepocd。什么是git中的barerepo,以及barerepo的一些高级用法,可以看下面三篇文章。下面的细节就不过多介绍了。用户chowngit的相应权限:git-Rblog.git使用自动配置,自然要用到Git的hook功能,这里需要post-receive,在bloghooks目录下新建一个文件: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接下来创建一个链接,防止后续deploy过程出错sudoln-s/usr/local/git/bin/git-receive-pack/usr/bin/git-receive-pack至此基本的准备工作就完成了,接下来我们需要处理Nginx的安装和配置的内容Nginx安装也切换到rootuser,然后安装nginx,最后启动surootyuminstall-ynginxsystemctlstartnginx.service此时在浏览器中输入公网IP地址,应该会看到Nginx默认的欢迎界面配置。这里配置Nginx,将所有的Http请求重定向到Https请求。我们需要有一个SSL证书,可以在云服务器上申请,并下载对应的版本(这里选择Nginx证书),下载后解压,以我的证书为例:.├──6317712_www.dayarch。top.key└──6317712_www.dayarch.top.pem0目录,2个文件通过scp命令将上面的证书复制到远程服务器。一般Nginx证书应该存放在/etc/nginx/cert目录下,这里选择存放在/home/ssl_cert(如果该目录不存在,请自行创建)scp~/Downloads/6317712_www.dayarch.top_nginx/6317712_www.dayarch.top.keyroot@server_ip:/home/ssl_certscp~/Downloads/6317712_www.dayarch.top_nginx/6317712_www.dayarch.top.pemroot@server_ip:/home/ssl_cert然后打开Nginx整体配置服务器的配置文件{listen80;服务器名称dayarch.top;#个人域名改写^(.*)$https://$server_name$1permanent;#heavyDirection}server{listen443;服务器名称dayarch.top;#个人域名sslon;ssl_certificate/home/ssl_cert/6317712_www.dayarch.top.pem;#.pem证书ssl_certificate_key/home/ssl_cert/6317712_www.dayarch.top.key;#.key证书ssl_session_cacheshared:SSL:1m;ssl_session_timeout5m;ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocolsTLSv1TLSv1.1TLSv1.2;ssl_prefer_server_ciphers开启;地点on/{root/home/hexo;#博客站点主目录indexindex.phpindex.htmlindex.htm;}error_page404/404.html;location=/404.html{root/usr/share/nginx/html;}error_page500502503504/50x.html;location=/50x.html{root/usr/share/nginx/html;}}用nginx-t命令查看,如果一切正常,会输出如下结果:nginx:配置文件/etc/nginx/nginx.conf语法为oknginx:配置文件/etc/nginx/nginx.conftest成功重启Nginx服务systemctlrestartnginx.service至此,所有的准备工作都完成了,接下来,我们需要做一些博客配置本地博客配置修改我们需要将远程服务器的Git仓库信息配置到Hexo站点配置中file(_config.yml)deploy:-type:gitrepo:git@server_ip:/home/git/blog.gitbranch:master依次执行hexo命令部署hexocleanhexogeneratehexodeploy至此,我们只差域名解析的最后一步登录你购买的域名服务器(比如我在阿里云),配置域名解析,指向我们服务器的公网地址:验证接下来,你可以输入浏览器中的域名以验证并享受您的结果。日工一兵|原创
