1. 介绍
本文主要介绍自动部署远程的博客(基于hexo)的python
脚本。
本地有的是自己写的hexo
文件夹,整个同步到github
上。远程的aws
需要做的就是把github
的项目整个pull
最新的下来,然后运行hexo g
就可以。因为使用的nginx
,直接把public
文件夹作为nginx
端口80的主文件夹。
2. 脚本
整个思路比较简单,本地我自己写完博客。直接同步到github
。远程aws
就每天检查一下github
直接git pull
。然后就可以直接hexo
生成新的博客。最后一步nginx
会自动更新成最新的博客。
apscheduler
是一个python
任务调度框架,能够设置固定时间新运行一个任务(线程级还是进程级并没有注意)。
运行脚本的时候,使用screen
命令,保证后台一直运行脚本。
Code Link1
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# -*- coding: utf-8 -*-
# @Author: lich
# @Date: 2017-08-13 17:21:11
# @Last Modified by: Lich_Amnesia
# @Last Modified time: 2017-08-13 20:14:03
# schedule a job to be run in a process pool on 24 hours intervals.
from datetime import datetime
import os
from apscheduler.schedulers.blocking import BlockingScheduler
from pytz import timezone
# Use America/Denver time as default time.
mountain_time = timezone("America/Denver")
def pull_job():
print('The time is: %s' % datetime.now())
os.system("git checkout -- db.json")
os.system("git pull")
os.system("hexo g")
if __name__ == '__main__':
scheduler = BlockingScheduler()
scheduler.add_executor('processpool')
scheduler.add_job(pull_job, 'cron',
day_of_week='mon-sun', hour=21, minute=30, timezone=mountain_time)
print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C'))
try:
scheduler.start()
except (KeyboardInterrupt, SystemExit):
pass
3. To do
- 最好有个打
log
,把所有输出打到文件里。这样方便查错误。 - 能不能把这个加到服务里,这样可以少开一个
screen
,而且可以开机就运行。
因为我们是朋友,所以你可以使用我的文字,但请注明出处:http://alwa.info