使用fabric进行自动化部署


fabric也使用好久了,这次静下心来好好整理一遍,当然这只是很简单的用法
参考文档

安装

凡事先从安装说起,fabric不支持python3,所以只能安装python2版本的fabric
由于我使用了virtualenv,所以先退出虚拟环境

$ deactivate

安装全局fabric

$ sudo pip2 install fabric

使用

使用之前先想想以前是怎么部署的,是不是这样:
先ssh到服务器,进行数据备份,然后退出(或者重新开一个终端),然后上传文件到服务器, 再ssh到服务器,安装所需要的模块,然后退出,ssh到root账户,重启,再退出···
是不是想想都烦
没关系,有了fabric后就不必这么麻烦了,需求:

备份数据

# fabfile.py
from fabric.api import run, env, cd, local, put, get

def …

使用jquery实现markdown预览


虽然算不上是实时预览
实时预览功能等有时间在把它加上

还是把实时预览加上,不过实时预览可能会对网站有所影响,读者看着加上

前端

<script type="text/javascript">
function previewTopicContent(){
    $.getJSON("{{ url_for('blog.preview') }}", {
        content: $("#content").val(),
    }, function(data) {
        $("#showPreview").html(data.result);
    });
   /*setTimeout('previewTopicContent()',300);*/
};
</script>

或者

function previewTopicContent(){
    $.get("{{ url_for('blog.preview') }}", {
        content: $("#content").val(),
    }, function(data) {
        $("#showPreview").html(data);
    });
};

服务端

@site.route('/pages …

redis记录用户操作


必须得记下来,否则等那天看到又要浪费时间了,主要记录访问时间这里

    '''记录访问的时间'''
    now_time = int(time()) #首先得到当前时间戳 
    '''查询上次访问的时间和最近访问的时间'''
    query_last_time = redis_data.zscore(visited_users,'last_time')
    query_now_time = redis_data.zscore(visited_users,'time')
    '''判断查询是否为空,一般是第一次访问还未记录的IP'''
    if query_last_time is None:
        query_last_time = now_time
        pipe.zadd(visited_users,query_last_time,'last_time')
    if query_now_time is None:
        query_now_time = now_time
    '''将当前时间与last_time进行对比,十分钟之内不记录'''
    if now_time - query_last_time >= 600:
        '''这里类似交换更新数据,把query_now_time变成last_time,把now_time更新'''
        pipe …

flask应用部署——安装环境


虽然以前安装过但是没有记录,这次重新安装,趁机记录下来,省得满世界地找

环境: centos7

安装nginx

参考资料
使用yum list nginx会发现nginx是1.6的版本,但现在nginx已经到了1.9,虽然不必那么新, 但是过旧的版本说不定会出现安全问题

# vim /etc/yum.repos.d/nginx.repo

输入

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

然后

# yum list nginx  #你会发现nginx已经是1.8的版本 …

supervisor使用


supervisor安装请参考flask应用部署——安装环境

生成配置文件

# cd /etc
# mkdir -p supervisord/conf.d
# echo_supervisord_conf > /etc/supervisord/supervisord.conf

修改supervisord.conf

# vim supervisord.conf # G直接跳到最后一行

取消下面注释并修改

[include]
files = /etc/supervisord/conf.d/*.ini

ok,现在可以在/etc/supervisord/conf.d/目录下创建配置文件了

# vim honmaple.com.ini

输入以下内容

# 进程的名字
[program:website]
# 命令
command=/home …

如何备份postgresql数据库


对于网站来说数据无疑是最重要的,而养成备份数据的习惯更加重要, 忽然想到一句经典台词

曾经有一份数据摆在我的面前,
可我没有备份,
直到数据丢失后才后悔莫及,
人世间最痛苦的事莫过于此,
如果上天能给我一次再来一次的机会,
我会对那份数据说五个字:我要备份你,
如果非要在这份备份上加一个期限,我希望是每天!

进入主题,这只是对数据进行简单的备份

怎么备份数据

shell脚本

#!/bin/bash

backup_time=`date +%Y%m%d`
pg_dump articledb > /home/xxx/backup/article_$backup_time.sql
# articledb是要备份的数据库名称
echo "backup finished"

保存为backup_db.sh
注意
xxx是数据库用户,并且是super权限
可以这样

$ sudo -i -u postgres
$ [sudo] xxx 的密码 …

一些vim插件的使用方法


关于一些vim插件的使用方法,vim插件多,快捷键也多,记录一下

tpope/vim-surround

光标在

"Hello world!"

中时按下 cs"' ,则会替换双引号为单引号:

'Hello world!'

继续按下 cs' ,则会替换单引号为 标签

<q>Hello world!</q>

按下 cst" ,则回到初始的双引号:

 "Hello world!"

要删除符号,则按下 ds"

Hello world!

当光标在hello上时,按下 ysiw] ,则会变为

[Hello] world!

这个操作为其加上了包围符号。

总结:

1.删除包围符号的命令是 ds ,后面加的字符表示要删除的符号。比如:

"Hello *world!" ds …

centos搭建shadowsocks服务端


1.安装必要组建

# yum inst

刚搭建好,记录下来,用的是centos

1.安装必要组建

# yum install build-essential autoconf libtool openssl-devel gcc -y

2.安装git

# yum install git -y 
# git --version #安装完后查看版本

3.下载shadowsocks-libev源码包并且编译安装

$ git clone https://github.com/madeye/shadowsocks-libev.git
$ cd shadowsocks-libev
$ ./configure 
# make && make install

.配置shadowsocks

# nohup /usr/local/bin/ss-server …

postgresql学习1——安装


最近从sqlite转到postgresql,虽然postgresql比sqlite更加复杂

archlinux

参考资料

$ sudo pacman -S postgresql
$ sudo mkdir /var/lib/postgres/data #如果已存在则可以不建立
$ sudo chmod -R postgres:postgres /var/lib/postgres/data
由于我安装系统时没有生成en_US_UTF-8本地化文件(如果已经生成了的就
不必再生成)
$ sudo vim /etc/locale.gen #找到en_US_UTF-8,注释掉
$ locale-gen

然后运行
$ sudo -i -u postgres #或者使用root账户su - postgres
$ initdb --locale en_US.UTF-8 -E UTF8 …

postgresql学习2——使用


postgresql的简单使用

python

参考资料

安装psycopg2

推荐使用venv虚拟环境

pip install psycopg2

这个API打开一个连接到PostgreSQL数据库。如果成功打开数据库时,它返回一个连接对象

psycopg2.connect(database="testdb", user="postgres", password="cohondob", host="127.0.0.1", port="5432")

该程序创建一个光标将用于整个数据库使用Python编程。

connection.cursor()

此例程执行SQL语句。可被参数化的SQL语句(即占位符,而不是SQL文字)。 psycopg2的模块支持占位符用%s标志

cursor.execute(sql [, optional parameters])

该程序执行SQL命令对所有参数序列或序列中的sql映射

curosr.executemany(sql, seq_of_parameters)

这个程序执行的存储数据库程序给定的名称。该程序预计为每一个参数,参数的顺序必须包含一个条目 …

如何上传文件到服务器


主要介绍通过scp和sftp上传文件到服务器,或者从服务器下载文件到本地,其主要命令

scp介绍

SCP的全称是secure copy (remote file copy program),此命令是openssh-clients附带 的,它的作用就是在机器之间实现拷贝,且机器之间的传输完全是加密的。

scp简单操作

$ scp 帐号@主机:path/filename path/ #从服务器下载文件到本地
$ scp path/filename 帐号@主机:path/  #上传文件到服务器指定文件夹

选项与参数:
-p :保留原本档案的权限数据;
-r :复制来源为目录时,可以复制整个目录 (含子目录)
-l :可以限制传输的速度,单位为 Kb/s ,例如 [-l 100] 代表传输速限 100Kb/s

scp实例 …

linux下C51开发


开发工具mcu8051ide

下载地址http://sourceforge.net/projects/mcu8051ide/
安装sdcc

$ sudo pacman -S sdcc

根据README需要下载的依赖

REQUIRED PACKAGES : (Without these packages this program WILL NOT run)

|Package | min. Version | Where it's available | |---------|:------------:|---------------------------------------------------| |tcl | 8.5.9 |http://www.tcl.tk/software/tcltk/downloadnow84.html| |tk | 8.5.9 |http://www.tcl …

git学习


参考资料 廖雪峰Git教程
记忆一下主要内容:

安装git

$ sudo dnf install git

安装后配置

$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"

创建版本库

$ mkdir git $ cd git $ mkdir "目录名" $ cd "目录名" $ git init #将该目录变成可用于git管理的仓库

git操作指令

``` $ git add filename #将文件添加到仓库 $ git commit -m "注释内容" #将文件提交到仓库,-m后面是本次提交的内容说明 $ git …

linux的一些操作命令


一些linux下的基本操作命令,linux下命令太多,不可能完全记住,记个笔记还是有必要的

命令行快捷操作

ctrl + 左右键:在单词间跳转
ctrl+a:跳到本行的行首
ctrl+e:跳到页尾
Ctrl+u:删除当前光标前面的文字
ctrl+k:删除当前光标后面的文字
Ctrl+L:进行清屏操作
Ctrl+y:进行恢复删除做
Ctrl+w:删除光标前面的单词的字符
Alt – d :由光标位置开始,往右删除单词。往行尾删

字符界面播放ascii视频

$ mplayer -vo caca MovieName

打开nvidia设置

$ optirun nvidia-settings -c :8

更新google禁用 GPG 签名检查

$ sudo …

fedora22成功安装bumblebee-nvidia


参考fedora安装bumblebee官方wiki
写在前面:安装前最好更新系统,安装内核头文件等,如果有多余旧内核先删除
安装驱动最好进入字符界面操作

有一些错误,现更正

将selinux设置为disabled

# vim /etc/sysconfig/selinux

安装及必要的依赖

# dnf install -y libbsd-devel libbsd glibc-devel libX11-devel help2man autoconf git tar glib2 glib2-devel kernel-devel kernel-headers automake gcc gtk2-devel 
# dnf install VirtualGL 
# dnf install VirtualGL.i686  # 即使是在64位操作系统上,这个也是必装的
# dnf -y install http://install.linux …

fedora安装后设置


记录一下,省得每次重装都要找(绝大多数转自网络)

fedora22 发布后 dnf 代替了 yum

1.增加sudo用户组

$ su

转到root用户,输入密码

# visudo

在root ALL=(ALL) ALL下增加一行

yourname ALL=(ALL) ALL

如果不想每次输入密码更改为

yourname ALL=(ALL) NOPASSWD:ALL

:wq #保存退出  
exit #回到一般用户

2.备份的主题,图标,字体拷贝到home目录

$ cp -r files ~/.theme 
$ cp -r files ~/.icons
$ cp -r files ~/.fonts …