前提
今天中午的时候发现自已网站突然不能访问了,我猜肯定是后台的hexo
服务异常自动kill掉了。果然登录服务器ps -ef | grep hexo
查看进程,果然发现hexo的进程不在了。由于我将输出的日志指向了/dev/null
(Linux下的垃圾回收箱)。排查不了错误信息,只能思考有什么方法保证网站一直正常访问。
Hexo后台启动命令:hexo server &
大致方法
- 通过守护脚本的方式,检测进程是否存在,如果不存在则启动
- forever让nodejs应用后台执行
- 通过nginx反向代理静态文件的方式
守护脚本
#! /bin/sh |
npm forever
项目地址:foreverjs/forever
资料:
Hexo快速搭建
Hexo博客后台运行技巧
- 安装步骤:
|
- forever
基础命令:
$ sudo npm install forever -g #安装 |
- 守护Hexo
:
在Hexo
的根目录/opt/blog
下创建app.js文件。
添加如下内容:
var spawn = require('child_process').spawn; |
- 启动forever
:
forever --minUptime 10000 --spinSleepTime 26000 start app.js |
- 验证:
- 检查forever是否监控进程( forever list
)
- 查看hexo进程号
- kill 掉Hexo进程( kill -9 pid
)
- 重新查看hexo进程号
如果两次的pid不一样,表示hexo
进程不存在时,会自动重启、
Nginx静态化
Hexo静态化Host尝试
通过hexo g
会生成整个站点静态文件,默认存放在blog
的public
目录。
采用Nginx指向本地静态资源目录的方式暴露服务。Nginx默认启动会创建两个线程,一个Master process(对请求分配),一个work process(处理每个请求)。对请求的透传处理,不作任何处理。所以相对于其他容器而言更加稳定,并且访问静态资源的效率上会比部署在一般容器中更快。
Nginx部署
linux环境下安装nginx教程
linux下安装nginx
Installing nginx on CentOS 6.4
yum install pcre* -y |
编辑Nginx配置文件
- 静态文件的方式
server { |
- 端口的方式
server { |
建议还是采用反向代理静态资源代理
的方式。效率上可以直接秒杀通过hexo服务的方式。但是存在缺陷是public目录必须是最新的、所以每次编写完文章之后,必须执行hexo g
,生成最新的静态资源。
遇到的问题
Q : nginx 1.9.5 ./configure: error: invalid option “–with-http_spdy_module”??
A:nginx 1.9.5 已经没有了 –with-http_spdy_module ,取代的是 –with-http_v2_module
后续待完成
- Nginx开机自启动
- Forever命令开机自启动
- 二级域名映射-Nginx
- 阿里云添加80监控