Hexo Daemon
前提
今天中午的时候发现自已网站突然不能访问了,我猜肯定是后台的hexo
服务异常自动kill掉了。果然登录服务器ps -ef | grep hexo
查看进程,果然发现hexo的进程不在了。由于我将输出的日志指向了/dev/null
(Linux下的垃圾回收箱)。排查不了错误信息,只能思考有什么方法保证网站一直正常访问。
Hexo后台启动命令:hexo server &
大致思路
- 通过守护脚本的方式,检测进程是否存在,如果不存在则启动
- forever让nodejs应用后台执行
- 通过nginx反向代理静态文件的方式
守护脚本
#! /bin/sh
#进程名字可修改
PRO_NAME=hexo
while true ; do
# 用ps获取$PRO_NAME进程数量
NUM=`ps aux | grep ${PRO_NAME} | grep -v grep |wc -l`
# echo $NUM
# 少于1,重启进程
if [ "${NUM}" -lt "1" ];then
echo "${PRO_NAME} was killed"
hexo server &
# 大于1,杀掉所有进程,重启
elif [ "${NUM}" -gt "1" ];then
echo "more than 1 ${PRO_NAME},killall ${PRO_NAME}"
killall -9 $PRO_NAME
hexo server &
fi
# kill僵尸进程
NUM_STAT=`ps aux | grep ${PRO_NAME} | grep T | grep -v grep | wc -l`
if [ "${NUM_STAT}" -gt "0" ];then
killall -9 ${PRO_NAME}
hexo server &
fi
done
exit 0
npm forever
项目地址:foreverjs/forever
资料:
Hexo快速搭建
Hexo博客后台运行技巧
- 安装步骤:
[sudo] npm install forever -g
cd /path/to/your/project #hexo根目录
[sudo] npm install forever-monitor
#检查forever是否安装完成
forever #返回帮助文档
- forever
基础命令:
$ sudo npm install forever -g #安装
$ forever start app.js #启动
$ forever stop app.js #关闭
$ forever start -l forever.log -o out.log -e err.log app.js #输出日志和错误
- 守护Hexo
:
在Hexo
的根目录/opt/blog
下创建app.js文件。
添加如下内容:
var spawn = require('child_process').spawn;
free = spawn('hexo', ['server', '-p 4000']);/* 其实就是等于执行hexo server -p 4000*/
free.stdout.on('data', function (data) {
console.log('standard output:\n' + data);
});
free.stderr.on('data', function (data) {
console.log('standard error output:\n' + data);
});
free.on('exit', function (code, signal) {
console.log('child process eixt ,exit:' + code);
});
- 启动forever
:
forever --minUptime 10000 --spinSleepTime 26000 start app.js
## minUptime、spinSleepTime可填可不填,不填默认也会有,参数的意思可以直接去forever上查询。
- 验证:
- 检查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
yum install openssl* -y
yum install zlib -y
yum install zlib-devel -y
yum install wget -y
cd /opt
wget http://nginx.org/download/nginx-1.13.0.tar.gz
cp nginx-1.13.0.tar.gz /usr/local
cd /usr/local
tar -zxvf nginx-1.13.0.tar.gz
mv nginx-1.13.0 nginx
./configure --prefix=/usr/local/nginx
make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
#启动
nginx
#浏览器直接访问http://localhost/即可访问到Nginx的静态页面
#因为Nginx默认占用80端口,所以必须以root用户启动
编辑Nginx配置文件
- 静态文件的方式
server {
listen 80;
server_name rtime.xin www.rtime.xin notes.rtime.xin;
if ($host != 'www.rtime.xin' ) {
rewrite ^/(.*)$ http://www.rtime.xin/$1 permanent;
}
location / {
root /opt/blog/public;
index index.html index.htm;
}
}
- 端口的方式
server {
listen 80;
server_name rtime.xin www.rtime.xin notes.rtime.xin;
#access_log /var/log/nginx/log/host.access.log main;
location / {
proxy_pass http://127.0.0.1:4000/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
建议还是采用反向代理 静态资源
的方式。效率上可以直接秒杀通过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
Hexo Daemon的更多相关文章
- Hexo构建Blog系列
Hexo是一个开源构建blog框架,基于nodejs研发.可以自由切换主题,插件等功能,实现自已酷炫博客需求. 下面是基于hexo实践所产出的一些心得,供大家参考. 基础 Hexo 搭建 Hexo 与 ...
- 【原】Github+Hexo+NextT搭建个人博客
摘要 GitHub 是一个开源项目的托管网站,相信很多人都听过.在上面有很多高质量的项目代码,我们也可以把自己的项目代码托管到GitHub,与朋友们共享交流.GitHub Pages 是Github为 ...
- 使用HEXO快速建站
先安好npm,请参照:http://max.cszi.com/archives/482 打开网站:https://hexo.io/ npm install hexo-cli -g hexo ini ...
- hexo+github搭建个人博客
最近用hexo+github搭建了自己的个人博客-https://liuyfl.github.io,其中碰到了一些问题,记录下来,以便查阅. hexo+github在win7环境下搭建个人博客:hex ...
- 基于Hexo和Github搭建博客
搭建自己的个人博客. 准备工作 确保电脑需要已下载安装node和npm.查看安装是否成功,windows只需在命令行输入以下两条命令即可. 1 2 $ node -v $ npm -v 安装hexo ...
- Hexo的coney主题的一些补充说明
title: Hexo的coney主题的一些补充说明 date: 2014-12-14 14:10:44 categories: Hexo tags: [hexo,技巧] --- Coney是一个非常 ...
- 基于hexo+github搭建一个独立博客
一直听说用hexo搭建一个拥有自己域名的博客是很酷炫的事情~,在这十一花上半个小时整个hexo博客岂不美哉. 使用Hexo吸引我的是,其简单优雅, 而且风格多变, 适合程序员搭建个人博客,而且支持多平 ...
- 手把手教从零开始在GitHub上使用Hexo搭建博客教程(四)-使用Travis自动部署Hexo(2)
前言 前面一篇文章介绍了Travis自动部署Hexo的常规使用教程,也是个人比较推荐的方法. 前文最后也提到了在Windows系统中可能会有一些小问题,为了在Windows系统中也可以实现使用Trav ...
- 手把手教从零开始在GitHub上使用Hexo搭建博客教程(三)-使用Travis自动部署Hexo(1)
前言 前面两篇文章介绍了在github上使用hexo搭建博客的基本环境和hexo相关参数设置等. 基于目前,博客基本上是可以完美运行了. 但是,有一点是不太好,就是源码同步问题,如果在不同的电脑上写文 ...
随机推荐
- C#-CLR各版本特点
来自为知笔记(Wiz) 附件列表 CLR与NET版本关系.png NET框架工作流程.png VS与CLR关系.png
- hdu5137 How Many Maos Does the Guanxi Worth(单源最短路径)
题目链接:pid=5137">点击打开链接 题目描写叙述:如今有一张关系网.网中有n个结点标号为1-n.有m个关系,每一个关系之间有一个权值.问从2-n-1中随意去掉一个结点之后,从1 ...
- 生成apk文件遇到的编译问题error: format not a string literal and no format arguments
编译错误时使用的android-ndk为r9的版本号.报下面错误: "Compile++ thumb : cocosdenshion_static <= SimpleAudioEngi ...
- Windows下使用静态库
开发工具 vs2010 1.新建win32控制台应用程序 2.将静态库的头文件包括在程序中并手动链接静态库(库文件和头文件都在根文件夹下) watermark/2/text/aHR0cDovL2Jsb ...
- zookeeper应用场景练习(分布式锁)
在寻常的高并发的程序中.为了保证数据的一致性.因此都会用到锁.来对当前的线程进行锁定.在单机操作中.非常好做到,比方能够採用Synchronized.Lock或者其它的读写多来锁定当前的线程.可是在分 ...
- HDU 1542 Atlantis(矩形面积并)
HDU 1542 Atlantis 题目链接 题意:给定一些矩形,求面积并 思路:利用扫描线,因为这题矩形个数不多,直接暴力扫就能够了.假设数据大.就要用线段树 代码: #include <cs ...
- FragmentPagerAdapter和FragmentStatePagerAdapter的区别
FragmentPagerAdapter 1:简单的介绍: 该类内的每一个生成的 Fragment 都将保存在内存之中,因此适用于那些相对静态的页,数量也比较少的那种:如果需要处理有很多页,并且数据动 ...
- sql 知识点
1 聚集索引和非聚集索引的区别 聚集索引是指 表中存储的数据按照索引的顺序来存储,数据检索效率高,但是对数据更新影响较大:非聚集索引是数据存储在一个地方,索引存储在另一个地方:索引带有指针,指向数据的 ...
- c# 对用户密码加密解密
一.使用16位.32位.64位MD5方法对用户名加密 1)16位的MD5加密 ? 1 2 3 4 5 6 7 8 9 10 11 12 /// <summary> /// 16位MD5加密 ...
- webService接口发布失败问题
今天在原有工程上新增加了个webService接口的服务类,但是总提示 axis2 出错 File "/axis2-web/listSingleService.jsp" not f ...