个人博客搭建-基于Jekyll

安装基础的环境工具

# yum -y install wget
# yum -y install npm
# yum -y update gcc
# yum -y install gcc+ gcc-c++

安装 Node

# cd /root/
# wget https://nodejs.org/dist/v8.12.0/node-v8.12.0-linux-x64.tar.xz
# xz -d node-v8.12.0-linux-x64.tar.xz
# tar -xf node-v8.12.0-linux-x64.tar 
# ln -s ~/node-v8.12.0-linux-x64/bin/node /usr/bin/node
# ln -s ~/node-v8.12.0-linux-x64/bin/npm /usr/bin/npm
# node -v 

安装 Ruby

# cd /root/
# wget https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.4.tar.gz
# tar -zxvf ruby-2.4.4.tar.gz 
# cd ~ vim .bash_profile
# vi .bash_profile

环境变量设置,在. bash_profile 文件设置以下内容

PATH=/root/ruby-2.4.4/bin/:\(PATH:\)HOME/bin

# source .bash_profile
# cd ruby-2.4.4
# ./configure
# make && make install
# ruby -v

安装 Perl-5

# cd /root/
# wget https://www.cpan.org/src/5.0/perl-5.28.0.tar.gz
# tar -xzf perl-5.28.0.tar.gz
# cd perl-5.28.0
# ./Configure -des -Dprefix=$HOME/perl
# make && make install
# perl -v

安装 ssl:

# cd /root/
# wget https://www.openssl.org/source/openssl-1.1.0l.tar.gz
# tar -zxvf openssl-1.1.0l.tar.gz
# cd openssl-1.1.0l/
# ./config -fPIC --prefix=$HOME/openssl enable-shared  
# ./config -t  
# make && make install  
# openssl version

安装 zlib

# yum -y install zlib*

# cd /root/ruby-2.4.4/ext/openssl/
# ruby extconf.rb --with-openssl-include=/root/openssl/include/ --with-openssl-lib=/root/openssl/lib
# ln -s /root/ruby-2.4.4/include/
# make && make install

# cd /root/ruby-2.4.4/ext/zlib/
# ruby ./extconf.rb
# vi Makefile 

打开ext/zlib/Makefile文件,找到下面一行:zlib.o: $(top_srcdir)/include/ruby.h

改成:zlib.o: ../../include/ruby.h
待定执行:(make && make install)

安装 Jekyll

# gem update --system
# gem install jekyll
# jekyll --version

安装一些插件

# gem install bundler
# gem install minima
# gem install jekyll-sitemap
# gem install jekyll-paginate

阶段性启动测试

# cd /root/
# jekyll new myblog
# cd myblog/
# jekyll serve -w --host=0.0.0.0

访问 IP:4000 就可访问项目

安装Nginx

# vi /etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

# yum -y install nginx
# vi /etc/nginx/conf.d/default.conf

取消改行注释:
error_page 404 /404.html;

查看nginx状态并启动

# systemctl status nginx   
# systemctl start  nginx  

使用Nginx部署项目

# cd /root/myblog/
# jekyll build --destination=/usr/share/nginx/html  

访问 IP:80 就可访问项目

安装GIt

# yum -y install git
# git config --global user.name "machengxin"
# git config --global user.email "[email protected]"

配置SSL

# ssh-keygen -t rsa 
连续三次回车
# cd /root/.ssh/
# cat id_rsa.pub

复制全部内容
到github右上角账户管理-Setting下面找到左侧“SSH and GPG keys”菜单
点击“Add SSH key”,在”title”栏输入一个自己喜欢的标题,“key”栏中粘贴复制的公钥
最后点击“Add key”按钮。

# ssh -vT [email protected]
# cd /root/
# git clone [email protected]:GithubMcx/Blog.git

启动服务

# cd Blog
# jekyll build --destination=/usr/share/nginx/html  

设置自动更新

npm i -g github-webhook-handler
npm install forever -g
cd /usr/lib/node_modules/github-webhook-handler/
vi deploy.js 

文件中写入内容:

var http = require('http')
var createHandler = require('github-webhook-handler')
var handler = createHandler({ path: '/incoming', secret: 'a123456' }) 
 
function run_cmd(cmd, args, callback) {
  var spawn = require('child_process').spawn;
  var child = spawn(cmd, args);
  var resp = "";
 
  child.stdout.on('data', function(buffer) { resp += buffer.toString(); });
  child.stdout.on('end', function() { callback (resp) });
}
 
http.createServer(function (req, res) {
  handler(req, res, function (err) {
    res.statusCode = 404
    res.end('no such location')
  })
}).listen(3001)
 
handler.on('error', function (err) {
  console.error('Error:', err.message)
})
 
handler.on('push', function (event) {
  console.log('Received a push event for %s to %s',
    event.payload.repository.name,
    event.payload.ref);
  run_cmd('sh', ['./start_blog.sh'], function(text){ console.log(text) });
})
vi start_blog.sh 

编辑更新脚本:

echo `date`  
cd /root/Blog/  
echo start pull from github   
git pull  
echo start build..  
jekyll build --destination=/usr/share/nginx/html  
forever start deploy.js 
/usr/lib/node_modules/forever/bin/forever start -l forever.log -o out.log -e err.log webhook.js  

补充操作说明

forever start --minUptime 1000 --spinSleepTime 1000 app.js

forever 使用方法

# 作为前台任务启动
$ forever server.js

# 作为服务进程启动 
$ forever start app.js

# 停止服务进程
$ forever stop Id

# 重启服务进程
$ forever restart Id

# 监视当前目录的文件变动,一有变动就重启
$ forever -w server.js

# -m 参数指定最多重启次数
$ forever -m 5 server.js 

# 列出所有进程
$ forever list

猜你喜欢

转载自www.cnblogs.com/marsx/p/12657988.html