之前博客使用的是搬瓦工的机器,感觉访问速度受限,刚好阿里云有活动,就决定迁移到阿里。鉴于之前一直没有一个好用的评论系统,迁移到阿里后进行了备案,开始使用畅言评论系统。
另外考虑到备份问题,也对部署方式进行了更新。
迁移前:
之前Blog的部署方式是:Hexo + VPS(git-hook) + Nginx(proxy)的形式,图床使用的七牛云。
迁移后:
本地Hexo将Blog文件提交到Github
然后通过Github的Webhooks功能通知Ali服务器,服务器进行Git pull操作
Nginx使用Docker的方式
接收Github通知需要一个HTTP服务器,没必要用太重的web框架,所以就自己写了一个简单的【代码地址】,如下
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
|
#!/usr/bin/env python
# Requier: pip install GitPython
# http://note.qidong.name/2018/01/gitpython/
import socket
import threading
import os
import git
import time
class init_socket():
def __init__(self, HOST_NAME, HOST_PORT, MAX_CLIENT):
self.host_name = HOST_NAME
self.host_port = HOST_PORT
self.ss = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.ss.bind((HOST_NAME, HOST_PORT))
self.ss.listen(MAX_CLIENT)
def run(self, REMOTE_PATH, LOCAL_PATH):
res_ok = 'HTTP/1.1 200 OK\nContent-Type:text/html\nServer:myserver\n\nHello, Gourds!'
res_xx = 'HTTP/1.1 404 OK\nContent-Type:text/html\nServer:myserver\n\nFriend!'
while True:
sock, addr = self.ss.accept()
print sock, addr
request = sock.recv(1024)
method = request.split(' ')[0]
src = request.split(' ')[1]
print method, src
if method == 'POST':
if src == '/hook/push':
content = res_ok
if len(os.listdir(LOCAL_PATH)) <= 1:
git.Repo.clone_from(url=REMOTE_PATH, to_path=LOCAL_PATH)
print "Run clone command"
else:
gp = git.cmd.Git(LOCAL_PATH)
gp.pull()
print "Run pull command"
else:
content = res_xx
else:
content = res_xx
print content
sock.sendall(content)
print request
sock.close()
time.sleep(60)
if __name__ == '__main__':
my_app = init_socket("", 18080, 5)
my_app.run('git@project.git', '/path/to/nginx/')
|