安装pip

###下载pip安装文件并执行安装

  • 下载文件

    1
    [root@snails ~]# wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate
  • 执行安装

    1
    2
    3
    [root@snails ~]# python get-pip.py
    [root@snails ~]# pip -V
    pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7)

设置pip国内aliyun源

  • 创建或修改配置文件

    1
    2
    linux ~/.pip/pip.conf
    windows %HOMEPATH%\pip\pip.ini
  • 修改内容

    1
    2
    3
    4
    5
    [global]  
    index-url = http://mirrors.aliyun.com/pypi/simple/

    [install]
    trusted-host=mirrors.aliyun.com
  • 更新pip到最新版本

    1
    [root@snails ~]# pip install -U pip
  • 查看已安装的库

    1
    [root@snails ~]# pip list

安装supervisor

安装

1
[root@snails ~]# pip install supervisor

安装成功便可以拥有Supervisor,如果没有启动脚本,可以从 这里 下载一份,放置到 /usr/lib/systemd/system 或 /etc/systemd/system 目录(后者优先级更高)下面便可。

1
[root@snails ~]# wget https://raw.githubusercontent.com/Supervisor/initscripts/master/centos-systemd-etcs -O /usr/lib/systemd/system/systemd-supervisor.service

配置

通过Supervisor附送的贴心的小脚本生成默认的配置文件

1
[root@snails ~]# echo_supervisord_conf > /etc/supervisord.conf

 我们可以根据需要修改里面的配置。我这里,每个不同的项目,使用了一个单独的配置的文件,放置在 /etc/supervisor/下面,于是修改 /etc/supervisord.conf ,加上如下内容:

1
2
[include]
files = /etc/supervisor/*.conf

创建golang http服务

为了测试方便,我这里用一个最简单的golang http服务。

1
[root@snails ~]# vi ~/simple_http_server.go

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package main

import (
"fmt"
"log"
"net/http"
)

func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello world\n")
})

err := http.ListenAndServe(":9090", nil)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}

直接运行这个程序会占用住终端,下面看看如何用supervisor来跑这个程序。

创建golang服务对应的supervisor配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
vi /etc/supervisor/golang.conf
[program:golang-http-server]
command=/root/simple_http_server
autostart=true
autorestart=true
startsecs=10
stdout_logfile=/var/log/simple_http_server.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/var/log/simple_http_server.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
  • 几个配置说明:
    1
    command:表示运行的命令,填入完整的路径即可。autostart:表示是否跟随supervisor一起启动。autorestart:如果该程序挂了,是否重新启动。stdout_logfile:终端标准输出重定向文件。stderr_logfile:终端错误输出重定向文件。

启动supervisor

1
[root@snails ~]# /usr/bin/supervisord -c /etc/supervisord.conf

如果出现什么问题,可以查看日志进行分析,日志文件路径/tmp/supervisord.log

tips:如果修改了配置文件,可以用kill -HUP重新加载配置文件

1
[root@snails ~]# cat /tmp/supervisord.pid | xargs sudo kill -HUP

查看supervisor运行状态

1
2
[root@snails ~]# supervisorctl
golang-http-server RUNNING pid 30343, uptime 0:00:55
  • 输入help可以查看帮助
    1
    2
    3
    4
    5
    6
    supervisor> help
    default commands (type help <topic>):
    =====================================
    add exit open reload restart start tail
    avail fg pid remove shutdown status update
    clear maintail quit reread signal stop version

supervisor运行原理

supervisor运行后本身是守护进程,通过自身来管理相应的子进程,通过观察相应的进程状态就很明了。

1
2
3
4
[root@snails ~]# ps -ef | grep supervisord
root 30269 1 0 11:31 ? 00:00:00 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
[root@snails ~]# ps -ef | grep simple_http_server
root 30343 30269 0 11:45 ? 00:00:00 /root/simple_http_server

可以很直观的看出golang simple_http_server进程是supervisord的子进程。

supervisor是否靠谱

supervisor的诞生已经10年了,现在是3+版本,所以放心使用吧。

环境准备

您必须将这些库
perl 5.6.1+
libreadline
libpcre
libssl
安装在您的电脑之中。 对于 Linux来说, 您需要确认使用 ldconfig 命令,让其在您的系统环境路径中能找到它们。

  • CentOS 7 安装OpenResty所需依赖
    1
    [root@snails ~]# yum -y install readline-devel pcre-devel openssl-devel gcc

构建 OpenResty

下载

从下载页 Download下载最新的ngx_openresty源码包,并且像下面的示例一样将其解压:

1
2
[root@snails ~]# wget https://openresty.org/download/openresty-VERSION.tar.gz
[root@snails ~]# tar xzvf ngx_openresty-VERSION.tar.gz

VERSION 的地方替换成您下载的源码包的版本号,比如说 1.9.15.1。

编译安装

然后在进入 ngx_openresty-VERSION/
目录, 然后输入以下命令配置:
./configure –prefix=/root/openresty

默认, –prefix=/usr/local/openresty
程序会被安装到/usr/local/openresty目录。
您可以指定各种选项,比如

1
2
3
4
5
[root@snails openresty-1.9.15.1]# ./configure --prefix=/opt/openresty \
--with-luajit \
--with-http_stub_status_module
gmake
gmake install

试着使用 ./configure –help 查看更多的选项。

设置环境变量及文件软链接

1
2
3
4
[root@snails ~]# ln -s /usr/local/openresty/nginx /usr/local/nginx
[root@snails ~]# vi /etc/profile
export ORPATH=/usr/local/openresty
export PATH=$PATH:$ORPATH/bin:$ORPATH/nginx/sbin

配置用户及组

1
2
3
4
[root@snails nginx]# groupadd -f www  
[root@snails nginx]# useradd -s /sbin/nologin -g www www
[root@snails nginx]# vi conf/nginx.conf
user www www;

验证

1
2
3
[root@snails nginx]# nginx
[root@snails nginx]# curl -I localhost
HTTP/1.1 200 OK

环境准备

1
2
3
4
[root@snails ~]# mkdir /root/mongodb #创建MongoDB程序存放目录
[root@snails ~]#mkdir /data/mongodata -p #创建数据存放目录
[root@snails ~]# mkdir /data/log/mongolog -p #创建日志存放目录
[root@snails ~]# curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.7.tgz

安装

1
2
3
[root@snails ~]# tar xf mongodb-linux-x86_64-3.2.7.tgz
[root@snails ~]# cd mongodb-linux-x86_64-3.2.7/
[root@snails ~]# cp -r * /root/mongodb
  • 为了便于命令启动,需要编辑全局变量PATH
    1
    2
    3
    [root@snails ~]# vi /etc/profile.d/mongo.sh
    export PATH=$PATH:/root/mongodb/bin
    [root@snails ~]# source /etc/profile

启动服务

首先查看mongod的帮助信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
[root@snails ~]# pwd
/root/mongodb/bin
[root@snails ~]# vi /etc/profile.d/mongo.sh
[root@snails ~]# source /etc/profile
[root@snails ~]# mongod --help
Options:

General options:
-h [ --help ] show this usage information
--version show version information
-f [ --config ] arg configuration file specifying
additional options
-v [ --verbose ] [=arg(=v)] be more verbose (include multiple times
for more verbosity e.g. -vvvvv)
--quiet quieter output
--port arg specify port number - 27017 by default
--bind_ip arg comma separated list of ip addresses to
listen on - all local ips by default
--ipv6 enable IPv6 support (disabled by
default)
--maxConns arg max number of simultaneous connections
- 1000000 by default
--logpath arg log file to send write to instead of
stdout - has to be a file, not
directory
--syslog log to system's syslog facility instead
of file or stdout
--syslogFacility arg syslog facility used for mongodb syslog
message
--logappend append to logpath instead of
over-writing
--logRotate arg set the log rotation behavior
(rename|reopen)
--timeStampFormat arg Desired format for timestamps in log
messages. One of ctime, iso8601-utc or
iso8601-local
--pidfilepath arg full path to pidfile (if not set, no
pidfile is created)
--keyFile arg private key for cluster authentication
--noauth run without security
--setParameter arg Set a configurable parameter
--httpinterface enable http interface
--clusterAuthMode arg Authentication mode used for cluster
authentication. Alternatives are
(keyFile|sendKeyFile|sendX509|x509)
--nounixsocket disable listening on unix sockets
--unixSocketPrefix arg alternative directory for UNIX domain
sockets (defaults to /tmp)
--filePermissions arg permissions to set on UNIX domain
socket file - 0700 by default
--fork fork server process
--auth run with security
--jsonp allow JSONP access via http (has
security implications)
--rest turn on simple rest api
--slowms arg (=100) value of slow for profile and console
log
--profile arg 0=off 1=slow, 2=all
--cpu periodically show cpu and iowait
utilization
--sysinfo print some diagnostic system
information
--noIndexBuildRetry don't retry any index builds that were

interrupted by shutdown
--noscripting disable scripting engine
--notablescan do not allow table scans
--shutdown kill a running server (for init
scripts)

Replication options:
--oplogSize arg size to use (in MB) for replication op
log. default is 5% of disk space (i.e.
large is good)

Master/slave options (old; use replica sets instead):
--master master mode
--slave slave mode
--source arg when slave: specify master as
<server:port>
--only arg when slave: specify a single database
to replicate
--slavedelay arg specify delay (in seconds) to be used
when applying master ops to slave
--autoresync automatically resync if slave data is
stale

Replica set options:
--replSet arg arg is <setname>[/<optionalseedhostlist
>]
--replIndexPrefetch arg specify index prefetching behavior (if
secondary) [none|_id_only|all]
--enableMajorityReadConcern enables majority readConcern

Sharding options:
--configsvr declare this is a config db of a
cluster; default port 27019; default
dir /data/configdb
--configsvrMode arg Controls what config server protocol is
in use. When set to "sccc" keeps server
in legacy SyncClusterConnection mode
even when the service is running as a
replSet
--shardsvr declare this is a shard db of a
cluster; default port 27018

SSL options:
--sslOnNormalPorts use ssl on configured ports
--sslMode arg set the SSL operation mode
(disabled|allowSSL|preferSSL|requireSSL
)
--sslPEMKeyFile arg PEM file for ssl
--sslPEMKeyPassword arg PEM file password
--sslClusterFile arg Key file for internal SSL
authentication
--sslClusterPassword arg Internal authentication key file
password
--sslCAFile arg Certificate Authority file for SSL
--sslCRLFile arg Certificate Revocation List file for
SSL
--sslDisabledProtocols arg Comma separated list of TLS protocols
to disable [TLS1_0,TLS1_1,TLS1_2]
--sslWeakCertificateValidation allow client to connect without
presenting a certificate
--sslAllowConnectionsWithoutCertificates
allow client to connect without
presenting a certificate
--sslAllowInvalidHostnames Allow server certificates to provide
non-matching hostnames
--sslAllowInvalidCertificates allow connections to servers with
invalid certificates
--sslFIPSMode activate FIPS 140-2 mode at startup

Storage options:
--storageEngine arg what storage engine to use - defaults
to wiredTiger if no data files present
--dbpath arg directory for datafiles - defaults to
/data/db
--directoryperdb each database will be stored in a
separate directory
--noprealloc disable data file preallocation - will
often hurt performance
--nssize arg (=16) .ns file size (in MB) for new databases
--quota limits each database to a certain
number of files (8 default)
--quotaFiles arg number of files allowed per db, implies
--quota
--smallfiles use a smaller default file size
--syncdelay arg (=60) seconds between disk syncs (0=never,
but not recommended)
--upgrade upgrade db if needed
--repair run repair on all dbs
--repairpath arg root directory for repair files -
defaults to dbpath
--journal enable journaling
--nojournal disable journaling (journaling is on by
default for 64 bit)
--journalOptions arg journal diagnostic options
--journalCommitInterval arg how often to group/batch commit (ms)

WiredTiger options:
--wiredTigerCacheSizeGB arg maximum amount of memory to allocate
for cache; defaults to 1/2 of physical
RAM
--wiredTigerStatisticsLogDelaySecs arg (=0)
seconds to wait between each write to a
statistics file in the dbpath; 0 means
do not log statistics
--wiredTigerJournalCompressor arg (=snappy)
use a compressor for log records
[none|snappy|zlib]
--wiredTigerDirectoryForIndexes Put indexes and data in different
directories
--wiredTigerCollectionBlockCompressor arg (=snappy)
block compression algorithm for
collection data [none|snappy|zlib]
--wiredTigerIndexPrefixCompression arg (=1)
use prefix compression on row-store
leaf pages

创建服务文件

  • 在mongodb/bin目录下创建配置文件mongodb.conf
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [root@snails ~]# cd mongodb/bin
    [root@snails bin]# vi mongodb.conf
    #数据文件存放目录
    dbpath = /data/mongodata
    #日志文件存放目录
    logpath = /data/log/mongolog/mongodb.log
    #端口
    port = 27017
    #以守护程序的方式启用,即在后台运行
    fork = true
    nohttpinterface = true

启动服务

1
2
3
4
5
[root@snails bin]# mongod --dbpath=/data/mongodata --logpath=/data/log/mongolog/mongodb.log --logappend --fork
#通过配置文件启动
[root@snails bin]# mongod -f /root/mongodb/bin/mongodb.conf
netstat -tnlp | grep mongod
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 18093/mongod

测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@snails bin]# mongo
MongoDB shell version: 3.2.7
connecting to: test
Server has startup warnings:
2016-07-07T20:38:09.623+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2016-07-07T20:38:09.624+0800 I CONTROL [initandlisten]
2016-07-07T20:38:09.624+0800 I CONTROL [initandlisten]
2016-07-07T20:38:09.624+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-07-07T20:38:09.624+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2016-07-07T20:38:09.624+0800 I CONTROL [initandlisten]
2016-07-07T20:38:09.624+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2016-07-07T20:38:09.624+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2016-07-07T20:38:09.624+0800 I CONTROL [initandlisten]
2016-07-07T20:38:09.624+0800 I CONTROL [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 15084 processes, 65535 files. Number of processes should be at least 32767.5 : 0.5 times number of files.
2016-07-07T20:38:09.624+0800 I CONTROL [initandlisten]
> show dbs
local 0.000GB
> quit()

消除警告

1
2
3
4
5
6
7
8
9
10
[root@snails bin]# vi /etc/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
ulimit -u 65535
[root@snails bin]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@snails bin]# echo never > /sys/kernel/mm/transparent_hugepage/defrag

文件限制数调整

修改配置文件 /etc/security/limits.conf,添加配置信息:

1
2
3
4
* soft nofile 65535
* hard nofile 65535
* soft nproc 32000
* hard nproc 32000

停止mongodb

1
2
3
正常停止方法: kill  -2 PID 
>use  admin  
>db.shutdownServer();

再次验证

1
2
3
4
5
6
7
8
9
10
11
12
[root@snails bin]# mongod -f /root/mongodb/bin/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 18229
child process started successfully, parent exiting
[root@snails bin]# mongo
MongoDB shell version: 3.2.7
connecting to: test
Server has startup warnings:
2016-07-07T21:06:53.798+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2016-07-07T21:06:53.798+0800 I CONTROL [initandlisten]
> exit
bye

准备工作

由于redis测试依赖tcl,在源码编译前先安装tcl

1
[root@snails ~]# yum -y install tcl

下载redis源码

1
[root@snails ~]# git clone https://github.com/antirez/redis.git

编译、测试、安装

1
2
3
4
5
6
7
8
[root@snails ~]#  cd redis
[root@snails redis]# make
[root@snails redis]# make test
[root@snails redis]# make install
```
* 查看安装结果
``` bash
[root@snails redis]# ll /usr/local/bin/redis-*

配置文件

  • 由于使用的是最新的redis 3.2.1版本,不存在安全漏洞,默认bind 127.0.0.1
  • 复制配置文件,并修改为后台运行 daemonize yes
    1
    2
    3
    [root@snails redis]#  cp redis.conf /etc/redis_6379.conf
    [root@snails redis]# vi /etc/redis_6379.conf
    daemonize yes

启动redis

1
redis-server /etc/redis_6379.conf

客户端测试(本机)

1
2
3
4
[root@snails redis]# redis-cli 
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

准备工作

  • 一个“干净”的系统是必须的,本次操作在阿里云上完成。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [root@snails ~]#hostnamectl set-hostname  snails
    [root@snails ~]# hostnamectl
    Static hostname: snails
    Icon name: computer-vm
    Chassis: vm
    Machine ID: 7d26c16f116042a684ea498c9e2c240f
    Boot ID: e567275688e84ce3b72a11794dc8ac9b
    Virtualization: xen
    Operating System: CentOS Linux 7 (Core)
    CPE OS Name: cpe:/o:centos:centos:7
    Kernel: Linux 3.10.0-327.el7.x86_64
    Architecture: x86-64

实践过程

配置yum源

CentOS 7配置

1
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

安装git、gcc、vim

1
2
3
4
5
6
7
8
yum -y install git gcc vim
[root@snails ~]# git --version
git version 1.8.3.1
[root@snails src]# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)
Copyright © 2015 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。

下载go 1.4分支

1
[root@snails ~]#git clone -b release-branch.go1.4  https://github.com/golang/go.git go

编译并配置环境变量

  • 编译

    1
    2
    3
    4
    5
    6
    [root@snails ~]#cd go/src
    [root@snails ~]#./all.bash
    ALL TESTS PASSED
    Installed Go for linux/amd64 in /root/go
    Installed commands in /root/go/bin
    *** You need to add /root/go/bin to your PATH.
  • 配置环境变量

    1
    2
    3
    4
    5
    6
    7
    8
    [root@snails ~]#cd ~ && mkdir -p golang/{src,pkg,bin}
    [root@snails ~]#vi /etc/profile
    export GOPATH=$HOME/golang
    export GOROOT=$HOME/go
    export PATH=$PATH:$GOROOT/bin
    [root@snails ~]# source /etc/profile
    [root@snails ~]# go version
    go version go1.4.3 linux/amd64

更新go版本再次编译

  • 更新go版本
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    [root@snails ~]# mv go go-bootstrap
    [root@snails ~]# git clone https://github.com/golang/go.git
    [root@snails ~]# cd go
    ```
    * 再次编译
    ``` bash
    [root@snails go]# vi /etc/profile
    export GOROOT_BOOTSTRAP=$HOME/go-bootstrap
    [root@snails go]# source /etc/profile
    [root@snails go]# cd src/
    [root@snails src]# ./clean.bash
    [root@snails src]# ./all.bash
    ```
    ## 实践验证
    ``` bash
    [root@snails src]# go version
    go version devel +d872201 Thu Jul 7 04:06:52 2016 +0000 linux/amd64

Jacman

Jacman 是为 Hexo 设计的一款清新且具有响应式的主题,拥有更丰富的特性并支持了很多的国内服务。Jacman 始于 Pacman 修改而来。

Jacman 现已支持 Hexo 3.0 !

主题演示

如何使用 Jacman 主题

安装教程

安装

1
$ git clone https://github.com/wuchong/jacman.git themes/jacman

Jacman 需要 Hexo 2.7 及以上版本

启用

修改博客根目录下的配置文件 _config.yml,把theme的值修改为 jacman.

更新

1
2
cd themes/jacman
git pull origin master

请先备份您主题目录下的 _config.yml 文件后再升级。

配置指南

修改 /themes/jacman/_config.yml 中的配置。通过配置指南wiki了解更多

功能

  • 菜单 menu
    主导航菜单
  • 控件 widget
    侧边栏的控件。包括:分类、标签、RSS、归档、标签云、友情链接、微博秀。
  • 图片相关 Image
    设置网站图标、网站logo、作者头像、博客顶部大图等。还提供了多种图片样式img-logo,img-topic,img-center
  • 首页模式 index
    主题提供了两种首页展示模式,你可以访问 主题演示 来了解其不同。
  • 作者 author
    作者信息,主要用于展示网站右下角的社交网络链接。包括:微博、豆瓣、知乎、邮箱、GitHub、StackOverflow、Twitter、Facebook、Linkedin、Google+。
  • 目录 toc
    在文章中和侧边栏可以显示目录。
  • 评论 comments
    支持 多说 & disqus 评论。
  • 分享 jiathis
    启用 内建分享工具 或 加网 分享系统。
  • 网站统计 Analytiscs
    支持 谷歌统计 & 百度统计 & CNZZ站长统计
  • Search
    支持 谷歌自定义搜索 & 百度站内搜索 &微搜索
  • totop
    回到顶部。
  • rss
    RSS 订阅链接。
  • fancybox
    图片查看的 Fancybox 工具。
  • 自定义主题颜色
    _config.yaml中就可以修改主题的颜色,而不用去找那些奇怪的 stylus 文件。
  • 其他
    你可以设置侧边栏在博文页面中不显示。

你可以通过配置指南了解更多使用细节。

网站列表

如果你正在使用 Jacman主题,欢迎将网址添加到wiki的网站列表。我会不定期进行整理。

协议

MIT

使用Hexo及jacman主题搭建博客,将本地的Markdown博客推送到github站点。

准备工作

  • 注册Github帐号

    已经有Github帐号跳过此步,首先进入Github进行注册,用户名、邮箱和密码之后都需要用到,自己记好。

  • 个人主页

    每个帐号只能有一个仓库来存放个人主页,而且仓库的名字必须是username/username.github.io,这是特殊的命名约定。你可以通过 http://username.github.io 来访问你的个人主页。

    通过 https://pages.github.com/ 向导很容易创建一个仓库,并测试成功。不过,同样的,没有博客的结构。需要注意的个人主页的网站内容是在master分支下的。

步骤

1
2
$ npm install -g hexo
$ hexo init "myblog"

更多关于写个人博客的信息: 写作指南

配置hexo

1
$ vi _config.yml

配置好站点相关信息,参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# Hexo Configuration
## Docs: https://hexo.io/docs/configuration.html
## Source: https://github.com/hexojs/hexo/

# Site
title: 技术资料分享小站
subtitle: 点滴积累,细细回味。
description: 编程技术总结与分享,记录在工作中的技术实践。
author: Tonny Luo
language: zh-CN
timezone:

# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: http://luohoufu.github.io/
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:

# Directory
source_dir: source
public_dir: public
tag_dir: tags
archive_dir: archives
category_dir: categories
code_dir: downloads/code
i18n_dir: :lang
skip_render: [README.md]

# Writing
new_post_name: :title.md # File name of new posts
default_layout: post
titlecase: false # Transform title into titlecase
external_link: true # Open external links in new tab
filename_case: 0
render_drafts: false
post_asset_folder: false
relative_link: false
future: true
highlight:
enable: true
line_number: true
auto_detect: false
tab_replace:

# Category & Tag
default_category: uncategorized
category_map:
tag_map:
# Date / Time format
## Hexo uses Moment.js to parse and display date
## You can customize the date format as defined in
## http://momentjs.com/docs/#/displaying/format/
date_format: YYYY-MM-DD
time_format: HH:mm:ss

# Pagination
## Set per_page to 0 to disable pagination
per_page: 10
pagination_dir: page

# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: jacman

# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repository: https://github.com/luohoufu/luohoufu.github.io.git
branch: master

# Css Compress
stylus:
compress: true

配置jacman

1
2
$ git clone https://github.com/wuchong/jacman.git themes/jacman
$ vi theme/jacman/_config.yml

配置好主题相关的信息,参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
##### Menu
menu:
主页: /
归档: /archives
简介: /about
## 标签: /tags
## 目录: /categories
## you can create `tags` and `categories` folders in `../source`.
## And create a `index.md` file in each of them.
## set `front-matter`as
## layout: tags (or categories)
## title: tags (or categories)
## ---

#### Widgets
widgets:
- github-card
- category
- tag
- links
##- douban
##- rss
##- weibo
## provide eight widgets:github-card,category,tag,rss,archive,tagcloud,links,weibo



#### RSS
rss: /atom.xml ## RSS address.

#### Image
imglogo:
enable: true ## display image logo true/false.
src: img/logo.png ## `.svg` and `.png` are recommended,please put image into the theme folder `/jacman/source/img`.
favicon: img/favicon.ico ## size:32px*32px,`.ico` is recommended,please put image into the theme folder `/jacman/source/img`.
apple_icon: img/jacman.jpg ## size:114px*114px,please put image into the theme folder `/jacman/source/img`.
author_img: img/author.jpg ## size:220px*220px.display author avatar picture.if don't want to display,please don't set this.
banner_img: #img/banner.jpg ## size:1920px*200px+. Banner Picture
### Theme Color default is #2ca6cb
theme_color:
theme: '#2ca6cb' ##the defaut theme color is blue

# 代码高亮主题
# available: default | night
highlight_theme: default

#### index post is expanding or not
index:
expand: true ## default is unexpanding,so you can only see the short description of each post.
excerpt_link: Read More
close_aside: false #close sidebar in post page if true
mathjax: false #enable mathjax if true

### Creative Commons License Support, see http://creativecommons.org/
### you can choose: by , by-nc , by-nc-nd , by-nc-sa , by-nd , by-sa , zero
creative_commons: none

#### Author information
author:
intro_line1: "爱编程的小伙" ## your introduction on the bottom of the page
intro_line2: "不想做程序猿的架构师不是好的产品经理" ## the 2nd line
weibo: u/5666590322 ## e.g. wuchong1014 or 2176287895 for http://weibo.com/2176287895
weibo_verifier: cd999d13 ## e.g. b3593ceb Your weibo-show widget verifier ,if you use weibo-show it is needed.
tsina: 5666590322 ## e.g. 2176287895 Your weibo ID,It will be used in share button.
douban: 142251737 ## e.g. wuchong1014 or your id for https://www.douban.com/people/wuchong1014
zhihu: ## e.g. jark for http://www.zhihu.com/people/jark
email: luohoufu@163.com ## e.g. imjark@gmail.com
twitter: ## e.g. jarkwu for https://twitter.com/jarkwu
github: luohoufu ## e.g. wuchong for https://github.com/wuchong
facebook: ## e.g. imjark for https://facebook.com/imjark
linkedin: luohoufu ## e.g. wuchong1014 for https://www.linkedin.com/in/wuchong1014
google_plus: ## e.g. "111190881341800841449" for https://plus.google.com/u/0/111190881341800841449, the "" is needed!
stackoverflow: ## e.g. 3222790 for http://stackoverflow.com/users/3222790/jark
## if you set them, the corresponding share button will show on the footer

#### Toc
toc:
article: true ## show contents in article.
aside: true ## show contents in aside.
## you can set both of the value to true of neither of them.
## if you don't want display contents in a specified post,you can modify `front-matter` and add `toc: false`.

#### Links
links:
InfoQ: http://www.infoq.com/cn/,一个精英文章汇集的站点
开发者头条: http://toutiao.io/,常去看看
开源中国: http://www.oschina.net/,关注国内开源
SegmentFault: https://segmentfault.com/,今天你又在开发中遇到了什么问题




#### Comment
duoshuo_shortname: ## e.g. wuchong your duoshuo short name.
disqus_shortname: ## e.g. wuchong your disqus short name.

#### Share button
jiathis:
enable: false ## if you use jiathis as your share tool,the built-in share tool won't be display.
id: ## e.g. 1889330 your jiathis ID.
tsina: ## e.g. 2176287895 Your weibo id,It will be used in share button.

#### Analytics
google_analytics:
enable: false
id: ## e.g. UA-46321946-2 your google analytics ID.
site: ## e.g. wuchong.me your google analytics site or set the value as auto.
## You MUST upgrade to Universal Analytics first!
## https://developers.google.com/analytics/devguides/collection/upgrade/?hl=zh_CN
baidu_tongji:
enable: true
sitecode: dd09496f0b593221f4326d64011cab ## e.g. e6d1f421bbc9962127a50488f9ed37d1 your baidu tongji site code
cnzz_tongji:
enable: false
siteid: ## e.g. 1253575964 your cnzz tongji site id

#### Miscellaneous
ShowCustomFont: true ## you can change custom font in `variable.styl` and `font.styl` which in the theme folder `/jacman/source/css`.
fancybox: true ## if you use gallery post or want use fancybox please set the value to true.
totop: true ## if you want to scroll to top in every post set the value to true


#### Custom Search
google_cse:
enable: false
cx: ## e.g. 018294693190868310296:abnhpuysycw your Custom Search ID.
## https://www.google.com/cse/
## To enable the custom search You must create a "search" folder in '/source' and a "index.md" file
## set the 'front-matter' as
## layout: search
## title: search
## ---
baidu_search: ## http://zn.baidu.com/
enable: false
id: ## e.g. "783281470518440642" for your baidu search id
site: http://zhannei.baidu.com/cse/search ## your can change to your site instead of the default site

tinysou_search: ## http://tinysou.com/
enable: false
id: ## e.g. "4ac092ad8d749fdc6293" for your tiny search id

部署或更新站点

1
$ hexo g -d

创建新的博客

1
2
$ hexo new "blog name"
$ hexo n page "about"

Hexo

Build Status NPM version Coverage Status Build status

A fast, simple & powerful blog framework, powered by Node.js.

Features

  • Blazing fast generating
  • Support for GitHub Flavored Markdown and most Octopress plugins
  • One-command deploy to GitHub Pages, Heroku, etc.
  • Powerful plugin system

Installation

1
$ npm install hexo-cli -g

Quick Start

Setup your blog

1
2
$ hexo init blog
$ cd blog

Start the server

1
$ hexo server

Create a new post

1
$ hexo new "Hello Hexo"

Generate static files

1
$ hexo generate

More Information

License

MIT