Hexo Daemon

匿名 (未验证) 提交于 2019-12-03 00:43:02

  今天中午的时候发现自已网站突然不能访问了,我猜肯定是后台的hexo服务异常自动kill掉了。果然登录服务器ps -ef | grep hexo查看进程,果然发现hexo的进程不在了。由于我将输出的日志指向了/dev/null

  Hexo后台启动命令:hexo server &

大致思路



  

    #! /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

  项目地址: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
  添加如下内容:

    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 list

kill -9 pid

  如果两次的pid不一样,表示hexo进程不存在时,会自动重启、
  

  Hexo静态化Host尝试

  通过hexo g会生成整个站点静态文件,默认存放在blogpublic
  采用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,生成最新的静态资源。


Hexo Daemon

原文:https://www.cnblogs.com/LuisYang/p/9356296.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!