Hexo博客部署到个人服务器
前言
其实这也就是分享一下我的建站历程吧,坎坎坷坷花了两天时间,还是挺满意的,吹爆这个Butterfly主题的作者jerryc,真的是太好看了。不出意外未来几年应该都是这个风格啦,顶多魔改一下。顺便吐槽一下腾讯的coding,访问速度感人,维护时又访问不了,总之各种毛病,github服务器又在国外,访问速度依旧很慢,这也就是下决心换成自己服务器的原因了。
大致步骤
1 在云服务器上建立私人git服务器并配置本地仓库
2 在个人开发pc上下载hexo框架源码,并在配置文件中设置push到云服务器上的私人仓库。
3 pc打包上传hexo静态文件并上传到服务器上的私人仓库
4 仓库中设置git钩子将已上传的静态资源拷贝到自定义目录下
5 通过nginx部署web服务,配置静态资源访问目录到上述自定义目录。
详细流程
在云服务器上建立私人git服务器并配置本地仓库
首先,安装git,一般云服务器系统已经安装好了。
1 | yum install git |
创建Git账户
1 | adduser git |
添加账户权限
1 | chmod 740 /etc/sudoers |
找到
1 | # Allow root to run any commands anywhere |
下面一行添加以下内容
1 | git ALL=(ALL) ALL |
保存退出并改回权限
1 | chmod 400 /etc/sudoers |
设置git账户密码
1 | sudo passwd git |
切换至git用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件,并赋予相应的权限
1 | su git |
在本地Git终端中测试是否能免密登录git,其中SERVER为填写自己的云主机IP,执行输入yes后不用密码就说明好了
1 | ssh -v git@SERVER |
创建自定义目录(作为后续nginx的root目录)
1 | repo作为为Git仓库目录 |
然后创建一个裸的 Git 仓库
1 | cd var/repo |
创建一个新的 Git 钩子,用于自动部署
在 /var/repo/hexoBlog.git 下,有一个自动生成的 hooks 文件夹。我们需要在里边新建一个新的钩子文件 post-receive
1 | vim /var/repo/hexoBlog.git/hooks/post-receive |
按 i 键进入文件的编辑模式,在该文件中添加两行代码(将下边的代码粘贴进去),指定 Git 的工作树(源代码)和 Git 目录(配置文件等)
1 | !/bin/bash |
然后,按 Esc 键退出编辑模式,输入”:wq” 保存退出。
修改文件权限,使得其可执行
1 | chown -R git:git /var/repo/hexoBlog.git/hooks/post-receive |
在个人开发pc上下载hexo框架源码,并在配置文件中设置push到云服务器上的私人仓库。
在本地win10安装部署Hexo,我部署在D盘中,打开D盘,新建文件夹,文件夹名自己定义,我的是Delaunay’s Blog,打开文件夹。右击鼠标,选择git bash here。
执行如下命令
1 | 安装hexo构建工具 |
配置_config.yml,完成自动化部署
打开D盘,blog文件夹,打开blog文件夹,打开_config.yml, 找到deploy
1 | deploy: |
此时,打开git bash here,push到云服务器的git仓库,测试是否成功。
pc打包上传hexo静态文件并上传到服务器上的私人仓库
下面是hexo的常用命令
1 | hexo g #编译静态资源 |
更换主题
下载主题包放到hexo的themes目录下,然后修改_config.yml中theme为对应的包名就可以了。
通过nginx部署web服务,配置静态资源访问目录到上述自定义目录。
搭建服务器环境,以nginx做服务器。
1 | 1.安装 |
配置服务器的路由:
通过公网ip访问,这个地址指向的是nginx,得让他指向我们的博客,就要修改配置文件,找到配置文件etc/nginx/nginx.conf
,并不建议直接修改配置文件,应该先创建一个新的文件,然后采用include
的方式,将这个文件包含进nginx.conf
中。
新建配置文件
1 | cd /etc/nginx/ |
编写配置文件
1 | server |
解析域名
这一步不多阐述了。
至此,部署完成!
遇到的问题及解决方法
nginx部署后通过公网ip一直进不去
可能是云服务器80端口未开放,进入云服务器控制台,找到实例,设置安全组规则,开放80端口。这个问题我找了好久的答案,检查了好多遍配置文件。
找不到nginx的配置文件
因为我之前先装了宝塔,觉得不好用又卸载了,后续安装的nginx可能有些偏离默认位置。
通过如下命令
1 | 查看nginx进程信息 |
通常是master process
后面的地址,或者下面一个命令显示的地址。
我的配置文件在 /etc/nginx/nginx.conf
无法通过www或者不加www的方式访问
delaunay.cn
www.delaunay.cn
就是这个域名只能通过其中一个网址访问,有一个会访问不到,这个根本原因我没有找到,解析那里是没有问题的。我将nginx配置文件那的server_name
后面的域名换了位置,即
1 | server_name delaunay.cn www.delaunay.cn; |
这样问题便解决了,以后再找根本原因。
总结
总之花了我两天时间搭好这个博客,还有,域名记得要备案。我刚解析完网站就被屏蔽了,提醒我去备案。其他没什么了,以后希望自己会时常更新,提高自己!