安装基础的环境工具
# 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