最近在服务器上搭建了一个博客,用于存放主题资料。博客框架使用了Hexo,Web服务器使用了Nginx。
以前把Hexo搭建到Github上,这次本来想直接搭建到公司的Gitlab上,但是发现公司的Gitlab把Page功能禁用了,只能搭建到我们小组的服务器上。整体框架如下:
注:图片来自《 如何在服务器上搭建hexo博客 》
简单来说,就是首先服务器部署Nginx,本地使用Hexo生成博客,然后推送到服务器的Git仓库,再使用git hook功能,当博客被推送到Git仓库后自动部署到Nginx的指定目录里,完成文章发布。
本地与服务器都为Mac OS 系统
修改hexo目录下的 _config.yml 文件
其中 repo 地址比如为 admin@10.10.10.10::/var/repo/blog.git
开始写博客发布
其中我遇到的一些坑,主要是权限问题,如果遇到部署不成功,注意排查是否是权限问题导致的。
附录:参考文章
如何在服务器上搭建hexo博客
Github SSH
Hexo
Nginx
极客学院 Nginx入门指南
Nginx配置文件nginx.conf中文详解
因为使用github仓库存放Hexo博客速度太慢,所以自己买了腾讯云的服务器,现在开始把博客部署到腾讯云,由于域名还没有审核通过,暂时使用公网ip访问
本地环境: win7
服务器: 腾讯云
使用工具: Xshell, Xftp, git
使用Xshell工具(root用户)远程登录腾讯云
此时打开浏览器,输入公网IP+端口,进入nginx的欢迎页面
修改根目录root为/home/www/hexo;
修改域名server_name为你备案的域名 www.xxxx.com ,如果还没有就不改,有了再改;
找到 root ALL=(ALL) ALL,在下一行添加 git ALL=(ALL) ALL,然后保存
在.ssh目录下创建authorized_key这一步之后,打开本地存放公钥的文件id_rsa.pub(github生成ssh密钥问题不会的可以百度,教程很多这里不细讲),复制密钥到服务器上的authorized_keys文件中并保存,这样当你使用ssh远程连接服务器时就不用输入密码
接着在本地打开git bash用ssh方式远程连接服务器 ,登录成功界面如下图所示
打开hexo博客配置文件_config.yml 修改repo:git@你的服务器公网IP:/home/git/hexo.git
执行部署命令之前需要进入本地hexo博客安装目录中删除.deploy_git文件
打开Xftp工具进入/home/www/hexo,看到文件就表示通过git已经提交到服务器中去了
但此时需要重启nginx服务才能访问
走到这一步就算是大功告成,浏览器输入 http://xxx.xxx.xxx.xxx:80/ 进入hexo我的博客主页了
更新:买的域名备案成功了,欢迎大家访问 我的Hexo博客
就跟 / 的作用有关系了,/ 开头指代的是当前根目录。假如你的文件位置是 D:/Hexo/public/index.html,那这个 / 就是表示 D 盘根目录。所以CSS最终访问的是D:/css/style.css。
而当你把 public 下的内容上传后,这个根目录就是服务器的根目录,也就是当前目录,自然可以访问到了。
一般本地都是用 hexo s 开启本地服务器预览的。
再说下不加 / 会导致的问题。
首先,在你博客主页不会有任何问题,因为不加 / 就表示当前目录。而如果是博客子页面,比如文章页的网址为www.blog.com/20160530/hello.html,这个页面里没有 / 那问题就来了,这个路径下能找到 css 文件吗?
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)