Skip to content

Commit 8098040

Browse files
committed
添加文件,修改部分内容
1 parent 4677553 commit 8098040

File tree

2 files changed

+560
-0
lines changed

2 files changed

+560
-0
lines changed
Lines changed: 398 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,398 @@
1+
title: VPS(CentOS)搭建Hexo博客与Git Hooks更新(小白篇)
2+
date: 2016-3-2 22:28:00
3+
categories:
4+
- 环境搭建
5+
tags:
6+
- CentOS
7+
- VPS
8+
- Hexo
9+
- Hooks
10+
permalink: VPS-building-Hexo
11+
---
12+
  本机使用Hexo生成静态文件,通过Git推送到VPS的Git仓库。VPS配置Git Hooks,将静态文件同步到站点目录,再配置Nginx静态环境解析站点目录文件,显示Blog页面。
13+
14+
<!-- more -->
15+
16+
## 写文章目的
17+
1. 疏通VPS搭建Hexo的流程,理解每个搭建环节的作用。
18+
2. 将过程记录下来,引导想搭建相同环境的朋友少走弯路。
19+
20+
## 搭建流程与环境介绍
21+
22+
- Hexo博客从生产到展示的过程
23+
![流程图](/resources/VPS-And-Hexo/1.png)
24+
- VPS环境简介:我用的是`搬瓦工` 的VPS,其Root-Shell-basic有限制
25+
- VPS配置信息:
26+
![VPS配置信息](/resources/VPS-And-Hexo/2.png)
27+
- 本地配置信息:Mac 10.10.5
28+
![本地配置信息](/resources/VPS-And-Hexo/3.png)
29+
30+
## 要点分类:
31+
1. 本机安装Node.js、Hexo用于生成静态文件
32+
2. 本机安装Git,将静态文件Push到VPS的Git仓库
33+
3. VPS上安装Git,建立Git仓库、配置Hooks来同步静态文件
34+
4. 购买域名,在VPS上安装及配置Nginx环境,解析站点
35+
36+
## 安装步骤
37+
38+
#### 本机安装软件
39+
40+
本机需要安装Node.js、Hexo、Git,还不会装软件的自行Google
41+
```
42+
// 本机安装hexo不加权限会报错,安装命令加上sudo
43+
sudo npm install -g hexo
44+
```
45+
46+
#### 本地配置Git
47+
> 本次演示配置信息如下,各自配置时替换即可
48+
> 本地Git邮箱:hansoncoder@gmail.com
49+
> 本地Git用户名:Hanson
50+
> VPS上网站配置文件:hexo.conf
51+
> VPS上站点目录:/var/www/hansoncoder.com/public
52+
> VPS上网站管理用户:Hanson
53+
> 域名:hansoncoder.com
54+
55+
1 设置本地Git邮箱及用户名
56+
57+
> ```
58+
MacdeiMac-2:~ Mac$ git config --global user.email "hansoncoder@gmail.com" #邮箱
59+
MacdeiMac-2:~ Mac$ git config --global user.name "Hanson" #用户名
60+
```
61+
> 查看配置是否正确
62+
> ```
63+
MacdeiMac-2:~ Mac$ git config --list
64+
user.email=hansoncoder@gmail.com
65+
user.name=Hanson
66+
filter.lfs.clean=git-lfs clean %f
67+
filter.lfs.smudge=git-lfs smudge %f
68+
filter.lfs.required=true
69+
```
70+
71+
2 生成sshkey
72+
> ```
73+
MacdeiMac-2:~ Mac$ ssh-keygen -t rsa -C "hansoncoder@gmail.com" #一路回车
74+
MacdeiMac-2:~ Mac$ cat .ssh/id_rsa.pub #复制公钥内容,从AAA开始到结束
75+
ssh-rsa AAAA....hansoncoder@gmail.com #...代替秘钥中间内容
76+
```
77+
78+
#### 购买域名
79+
80+
![购买的域名](/resources/VPS-And-Hexo/4.png)
81+
82+
#### VPS上安装Nginx
83+
84+
补充命令知识:
85+
> cat 查看文件内容
86+
> ls -l 查看文件详细信息,包括权限
87+
> echo 输出信息 (-e 是识别转义字符,输出的内容中"\n"被转义为换行)
88+
> mkdir 创建目录(文件夹)
89+
> touch 创建文件
90+
91+
1 配置Nginx源文件
92+
> 在/etc/yum.repos.d目录下创建一个源配置文件nginx.repo,写入如下代码
93+
94+
> ```
95+
[nginx]
96+
name=nginx repo
97+
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
98+
gpgcheck=0
99+
enabled=1
100+
```
101+
> 执行命令: 以后写入文件默认用echo -e 指令,以后会忽略指令过程,在适当的地方需要反斜杠(\)作为转义字符,大家也可以用图形界面操作。
102+
> ```
103+
[root /]# cd /etc/yum.repos.d
104+
[root yum.repos.d]# echo -e "
105+
[nginx]\n
106+
name=nginx repo\n
107+
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/\n
108+
gpgcheck=0\n
109+
enabled=1\n
110+
" > nginx.repo
111+
```
112+
> 查看是否配置正确(使用cat 命令查看内容,以下配置文件大家自行使用查看命令验证配置信息)
113+
> ```
114+
[root /]# cat /etc/yum.repos.d/nginx.repo
115+
[nginx]
116+
name=nginx repo
117+
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
118+
gpgcheck=0
119+
enabled=1
120+
```
121+
122+
2 安装Nginx
123+
124+
> ```
125+
[root /]# yum install nginx -y
126+
```
127+
> 查看Nginx版本号(安装完成验证)
128+
> ```
129+
[root /]# nginx -v
130+
nginx version: nginx/1.8.1
131+
```
132+
133+
#### VPS上部署Nginx
134+
135+
1 添加站点解析配置文件
136+
137+
> 在/etc/nginx/sites-available目录下创建一个配置文件XXX.conf(这里以hexo.conf为例),并在文件中输入一下内容
138+
> ```
139+
server {
140+
root /var/www/hansoncoder.com/public; #站点目录
141+
index index.html index.htm; #主页,不用改
142+
server_name www.hansoncoder.com hansoncoder.com *.hansoncoder.com; #4.03 申请的域名
143+
location / {
144+
try_files $uri $uri/ /index.html;
145+
}
146+
}
147+
```
148+
> 执行以下命令,然后通过图形化界面写入内容
149+
> ```
150+
[root /]# mkdir -p /etc/nginx/sites-available
151+
[root /]# touch /etc/nginx/sites-available/hexo.conf
152+
```
153+
> ![图形用户写入内容过程](/resources/VPS-And-Hexo/5.png)
154+
> 查看hexo.conf配置文件信息(配置验证)
155+
> ![站点及域名(hexo.conf文件)配置信息](/resources/VPS-And-Hexo/6.png)
156+
157+
2 配置Nginx配置文件
158+
159+
> 在/etc/nginx/nginx.conf文件中添加如下代码(添加包含`sites-available`目录及站点`/var/www`目录下的配置文件)
160+
> ```
161+
include /etc/nginx/sites-available/*.conf;
162+
include /var/www/*.conf;
163+
```
164+
> ![Nginx配置文件(nginx.conf)配置步骤](/resources/VPS-And-Hexo/9.png)
165+
> 检查配置是否成功
166+
> ![Nginx配置文件(nginx.conf)配置内容](/resources/VPS-And-Hexo/10.png)
167+
168+
3 配置防火墙
169+
170+
> ```
171+
[root /]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
172+
```
173+
> 防火墙配置验证:
174+
> ```
175+
[root /]# /etc/init.d/iptables status
176+
```
177+
> 显示结果如果有:`1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80\`,说明配置成功。
178+
179+
4 启动Nginx服务
180+
> ```
181+
[root /]# service nginx reload
182+
[root /]# /etc/init.d/nginx start
183+
```
184+
> ![Nginx服务启动成功](/resources/VPS-And-Hexo/11.png)
185+
186+
#### 创建站点管理者
187+
188+
为了安全考虑,在VPS上创建一个普通用户(Hanson)专门来管理网站的,其用户组为sitesManagers。
189+
190+
1 创建用户组及用户
191+
> 并创建其家目录与分配用户到sitesManagers组
192+
> ```
193+
[root /]# groupadd sitesManagers #创建用户组
194+
[root /]# useradd Hanson -m -g sitesManagers #创建用户,
195+
```
196+
> 查看用户信息(验证创建用户是否成功)
197+
> ```
198+
[root /]# finger Hanson
199+
Login: Hanson Name:
200+
Directory: /home/Hanson Shell: /bin/bash
201+
Last login Wed Mar 2 05:39 (EST) on pts/0 from 113.108.199.76
202+
No mail.
203+
No Plan.
204+
[root /]# groups Hanson
205+
Hanson : sitesManagers
206+
```
207+
208+
2 设置用户密码
209+
210+
> ```
211+
passwd Hanson
212+
```
213+
> 设置密码成功如下
214+
> ![Hanson密码设置成功](/resources/VPS-And-Hexo/13.png)
215+
216+
3 设置家目录权限
217+
218+
> ```
219+
chmod 755 /home/Hanson
220+
```
221+
222+
4 给Hanson用户添加sudo权限
223+
224+
> 修改/etc/sudoers文件,找到如下指令添加一条
225+
> ```
226+
## Allow root to run any commands anywhere
227+
root ALL=(ALL) ALL
228+
Hanson ALL=(ALL) ALL #新增这条指令
229+
```
230+
> ![用户权限设置信息](/resources/VPS-And-Hexo/14.png)
231+
232+
#### 建站测试
233+
234+
1 创建测试页面
235+
> 进入`/var/www/hansoncoder.com/public`目录(目录由4.0.5的root值确定),这里涉及的切换用户,应该使用”Root shell -interactive“
236+
> ```
237+
[root@localhost /]# cd /var
238+
[root@localhost var]# mkdir www
239+
[root@localhost var]# chmod 777 www
240+
[root@localhost var]# su Hanson
241+
[Hanson@localhost var]# mkdir -p /var/www/hansoncoder.com/public
242+
[Hanson@localhost var]# cd /var/www/hansoncoder.com/public
243+
[Hanson@localhost public]# echo “This is test HTML” > index.html
244+
```
245+
246+
2 测试(打开浏览器,输入你的域名,看看能否看到:This is test HTML)
247+
3 删除测试文件index.html
248+
249+
> ```
250+
[Hanson@localhost public]# rm index.html
251+
```
252+
> ![站点目录信息](/resources/VPS-And-Hexo/15.png)
253+
254+
#### VPS上安装配置Git
255+
256+
1 安装并验证Git
257+
> ```
258+
[root@localhost /]# yum install
259+
[root@localhost /]# git --version
260+
git version 1.7.1
261+
```
262+
263+
2 使用普通用户配置Git
264+
265+
> 在网站管理者的家目录配置.ssh公钥,用于静态文件本地与VPS同步。复制本地公钥,粘贴到VPS的authorized_keys文件中
266+
> ```
267+
[root@localhost /]# su Hanson
268+
[Hanson@localhost /]# cd /Home/Hanson
269+
[Hanson@localhost ~]# mkdir .ssh
270+
[Hanson@localhost .ssh]# cd .ssh
271+
[Hanson@localhost .ssh]# echo "本地的公钥(AAA开头)" > authorized_keys
272+
[Hanson@localhost .ssh]# cat authorized_keys #查看是否添加成功
273+
AAA....hansoncoder@gmail.com
274+
```
275+
> 无法使用shell-basic切换用户的,通过如下操作
276+
> ![Hanson创建authorized_keys文件](/resources/VPS-And-Hexo/16.png)
277+
> ![界面添加内容](/resources/VPS-And-Hexo/17.png)
278+
279+
3 设置VPS上ssh的端口号
280+
281+
> 将/etc/ssh/sshd_config文件中的Port为22设置如下:
282+
> ```
283+
Port 22
284+
```
285+
286+
4 ssh远程登录验证
287+
288+
> `本地`终端登录VPS的Hanson用户(ssh 用户名@域名),成功登录如下:
289+
> ```
290+
MacdeiMac-2: Mac$ ssh Hanson@hansoncoder.com
291+
git@hansoncoder.com's password:
292+
Last login: Tue Mar 1 02:21:36 2016 from 113.108.199.76
293+
[Hanson@localhost ][6]$
294+
```
295+
296+
#### VPS上配置Git仓库
297+
298+
在VPS上初始化Git仓库,配置Hooks目录下的post-receive文件,实现本地静态文件发布时自动同步到站点目录
299+
300+
1 初始化Git仓库
301+
> ```
302+
[root@localhost /]# su Hanson
303+
[Hanson@localhost /]# cd /home/Hanson
304+
[Hanson@localhost ~]# mkdir HansonBlog.git
305+
[Hanson@localhost ~]# cd HansonBlog.git
306+
[Hanson@localhost HansonBlog.git]# git init —bare
307+
[Hanson@localhost HansonBlog.git]# ls -l
308+
```
309+
> ![初始化成功信息](/resources/VPS-And-Hexo/18.png)
310+
311+
2 配置VPS上Git仓库的Hooks
312+
313+
> 在/home/Hanson/HansonBlog.git/Hooks目录创建post-receive
314+
> ```
315+
cd Hooks
316+
touch post-receive
317+
chmod 755 post-receive
318+
> ```
319+
> 在post-receive文件写入以下内容
320+
> ```
321+
#!/bin/bash -l
322+
GIT_REPO=/home/Hanson/HansonBlog.git #Git仓库 10.1确定
323+
TMP_GIT_CLONE=/tmp/HansonBlog
324+
PUBLIC_WWW=/var/www/hansoncoder.com/public #站点目录 5.2步确定
325+
rm -rf ${TMP_GIT_CLONE}
326+
git clone $GIT_REPO $TMP_GIT_CLONE
327+
rm -rf ${PUBLIC_WWW}/*
328+
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
329+
```
330+
> 查看 post-receive文件内容(验证Hooks配置信息)
331+
> ![post-receive文件内容](/resources/VPS-And-Hexo/19.png)
332+
333+
## 博客初始化与编译发布
334+
335+
1. 本地初始化Hexo
336+
```
337+
MacdeiMac-2: Mac$ cd /Users/Mac/Desktop
338+
MacdeiMac-2:Desktop Mac$ mkdir myBlog
339+
MacdeiMac-2:Desktop Mac$ cd myBlog
340+
MacdeiMac-2:myBlog Mac$ hexo init
341+
```
342+
343+
2. Hexo编译生成静态文件
344+
```
345+
MacdeiMac-2:myBlog Mac$ npm install
346+
MacdeiMac-2:myBlog Mac$ hexo g
347+
```
348+
349+
3. 修改配置文件_config.yml,在_config.yml文件末写入如下内容
350+
```
351+
deploy:
352+
type: git
353+
message: Hanson
354+
repo: Hanson@hansoncoder.com:HansonBlog.git
355+
branch: master
356+
```
357+
358+
4. 发布到VPS服务器
359+
```
360+
MacdeiMac-2:myBlog Mac$ npm install hexo-deployer-git --save
361+
MacdeiMac-2:myBlog Mac$ hexo d
362+
```
363+
364+
## 配置结束,发布文章
365+
366+
- 写markdown文件,然后保存到suource/_posts文件夹
367+
- hexo g
368+
- hexo d
369+
370+
## 问题与解决方案
371+
372+
-`yum install git`安装Git出现问题:/bin/bash: git: command not found
373+
374+
```
375+
解决(修改安装命令为):yum install git git-svn git-email git-gui gitk -y
376+
```
377+
378+
- ssh配置后,ssh连接验证:ssh: connect to host localhost port 22: Connection refused
379+
380+
```
381+
错误原因:
382+
2.1. sshd 未安装:yum install openssh-server
383+
2.2. sshd 未启动:chkconfig sshd on
384+
2.3. 防火墙:chkconfig iptables off(永久性生效,重启后不会复原)
385+
2.4. 端口号没有设置为22(或者设置后没有重启:service sshd restart)
386+
```
387+
388+
- 使用hero d报错:ERROR Deployer not found: git
389+
390+
```
391+
解决:npm install hexo-deployer-git --save
392+
```
393+
## 参考连接
394+
395+
1. ***安装流程*** by **叶雨梧桐BLOG** on <code>2015/03/04</code>: <http://blog.gt520.com/vps/239.html>
396+
1. ***linux用户管理*** by **海底苍鹰(tank)博客** on <code>2010/11/26</code>: <http://blog.51yip.com/linux/1137.html>
397+
1. ***VPS搭建Hexo,用GIt更新*** by **WikiLibrary** on <code>2016/01/26</code>: <http://tiktoking.github.io/2016/01/26/hexo/>
398+
1. ***CentOS上配置Ngxin实践*** by **王皓** on <code>2015/01/29</code>: <http://ninghao.net/blog/2088>

0 commit comments

Comments
 (0)