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

遇到的问题

  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

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

时间: 2024-10-15 14:41:11

Hexo Daemon的相关文章

以rsync的daemon工作模式传输数据

一.简介 rsync主要有三种工作方式: 1.单个主机本地之间的数据传输(类似于cp命令的功能) 2.借助rcp,ssh等通道来传输数据(类似于scp命令的功能) 3.以守护进程(socket)的方式传输数据(rsync自身的重要功能) 这里描述的是以第三种模式处理. 此例子准备了两台机器,分别为服务端10.0.0.41-backup,客户端10.0.0.100-oldboy. 二.在服务端启动及检查rsync服务 [[email protected]]# rsync --deamon #启动服

守护线程以及要使用时注意的一点(Daemon Thread)

在Java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) Daemon的作用是为其他线程的运行提供便利服务,比如垃圾回收线程就是一个很称职的守护者.User和Daemon两者几乎没有区别,唯一的不同之处就在于虚拟机的离开:如果 User Thread已经全部退出运行了,只剩下Daemon Thread存在了,虚拟机也就退出了. 因为没有了被守护者,Daemon也就没有工作可做了,也就没有继续运行程序的必要了. 值得一提的是,守护线程并非只有虚拟机内部提供

Hexo博客优化

一.发布文章 在source/_posts目录下存放文章,后缀为md或markdown都可 打开一篇文章,开头需要配置一下. title: "hexo" date: 2015-02-02 00:00:00 -0700 tags: hexo category: hexo --- 上面是一些最基本的配置,依次为 标题.日期.标签.分类 如果需要其他属性也可以添加. 二.修改日期显示格式 默认显示的是如下英文格式,我们可以把它修改为按中文显示 打开根目录下的_config.yml文件找到 d

[PY3]——一个例子理解多线程和daemon

理解 (今天纠结已久,多谢junqi大大帮助理解,一语总结便解心头疑惑)(下面几点总结基本就是我们的对话) 1. 进程就相当于一个机器,多进程就相当于有多个机器在同时运行,多线程是多个任务在同一机器上交替运行,你用一段时间,我用一段时间. 2. 所以进程和线程没有必然联系. 3. 但是不管进程还是线程,一般都是和任务绑定在一起的,任务结束,销毁进程和线程. 4. 如果将进程比喻成一台机器,daemon理解为守护这台机器的东西,daemon守护一旦结束,机器这个进程就down. 5. 可以这样说,

Kubernetes 集群的两种部署过程(daemon部署和容器化部署)以及glusterfs的应用!

ClusterIp:通过VIP来访问, NodePort: 需要自己搭建负载据衡器 LoadBalancer:仅仅用于特定的云提供商 和 Google Container Engine https://www.nginx.com/blog/load-balancing-kubernetes-services-nginx-plus/ port:相当于服务端口(对及集群内客户访问) targetPort: 相当于pods端口 nodePort: 宿主机端口(也是服务端口,只不过是对集群外客户访问)

【Hexo】(一)使用HEXO配置环境,创建Hello World

现场直播,呵呵,就是我完成一步,就记录一下: 一.配置环境 1.安装 Node 下载地址:Node.js 2.安装 Git(win环境下) 下载地址:Git Git 绑定 GitHub账户: ①打开Git Bash,然后输入两句命令 git config --global user.name "Your Name" git config --global user.email "[email protected]" 如图: ②配置SSH PS:可以先打开  C:\U

用DAEMON TOOLS打开rational ross 的bin文件并安装过程梳理

最近要开始准备毕业设计了,学习熟悉了一些UML用例图.类图之类的,开始准备用自家PC电脑画图的时候发现Rational Ross没安装. 本以为简单,却碰上bin文件.琢磨好久,终于把Ross安上了.下面讲讲期间遇到的问题及解决方法. 注:Rational Ross 以下简称Ross 1.下载Ross 网上一堆Ross安装包,有2003版本和2007版本两种,听说win7不兼容2003版本(不知道是真是假),总之我下了个2007版的Ross 打开链接:http://pan.baidu.com/s

手把手教你建github技术博客by hexo

适合人群 喜欢写Blog的人 有一定的编程基础 爱折腾的人 熟练使用版本控制Git 了解使用Github 熟悉基本的MarkDown语法 环境准备 安装Git 下载 msysgit 并执行即可完成安装. 安装Node.js 在 Windows 环境下安装 Node.js 非常简单,仅须下载安装文件并执行即可完成安装. 安装hexo 利用 npm 命令即可安装.(在任意位置点击鼠标右键,选择Git bash) npm install -g hexo 问题 * npm ERR! registry e

python ------Daemon实现

上一篇python ------Daemon 守护进程学习了python 守护进程类的实现,这一篇实现了一个时间提醒的类timereminder继承Daemon. 计时器类: #!/usr/bin/env python # -*- coding: utf-8 -*- import time import threading class Timer(threading.Thread): """ very simple but useless timer. ""