archlinux的一些设置


最近在整理文件时发现了以前记下的一些设置,但是单独记在一个文件里不好找,也占用空间,现在记在博客里

vesa error

fcitx输入法

sudo pacman -S fcitx-im fcitx-configtool fcitx-sunpinyin

使用

增加内容到~/.xinitrc

export LANG=zh_CN.UTF-8
export XMODIFIERS=@im=fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
exec startxfce4

终端汉字显示

sudo pacman -S fbterm fcitx-fbterm
vim ~/fbtermrc

输入内容input-method=fcitx-fbterm

使用

终端输入fbterm

输入忽略大小写

vim ~/.inputrc

增加内容

set completion-ignore-case on

virtualbox

sudo pacman -S virtualbox

手动加载模块 modprobe vboxdrv

启动时加载模块

/etc/modules-load.d/virtualbox …

使用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 backup():
    env.user = 'root'
    dirname = 'backup_' + datetime.now().strftime('%Y%m%d')
    with cd('/root/backup …

arch更新遇到的问题


:confuse: signature from "Thorsten Töpper atsutane@freethoughts.de" is unknown trust

解决:

$ sudo pacman-key --refresh-keys

arch错误:无法准备事务处理 (无法满足依赖关系) :: package-query: 要求 pacman<4.3

解决:

$ sudo pacman -R package-query yaourt

更新python2-pip出现问题

$ sudo pacman -Syu
错误:无法提交处理 (有冲突的文件)
python2-pip: 文件系统中已存在 /usr/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/contrib/socks.py 
python2-pip: 文件系统中已存在 /usr/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/contrib …

使用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/preview')
def preview():
    from misaka import Markdown, HtmlRenderer
    from flask import jsonify
    content = request.args.get …

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.zadd(visited_users,query_now_time,'last_time')
        pipe.zadd(visited_users,now_time,'time')
    else:
        pipe.zadd(visited_users,now_time,'time')

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的版本
# yum install nginx
# systemctl start nginx #启动nginx

安装python3

centos7默认安装了python2.7的版本,但我习惯用python3,但是centos无法通过yum install python3安装, 只好自己编译了

安装必要的文件 …

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/www/honmaple.com/venv/bin/gunicorn run:app -c /home/www/honmaple.com/gunicorn.conf
# 网站目录 …

如何备份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 的密码:
postgres~ $ createuser xxx --interactive 
# 创建数据库用户,我的是archlinux,不同系统可能有所不同

定时备份数据

crontab -e

输入

0 22 * * * /home/xxx/backup …

vim操作及配置


vim号称编辑器之神,最近也一直使用vim写代码,最大的印象就是快,无论是临时修改文件,还是专门写代码.现在记录vim主要操作快捷键和我的vim配置

vim操作

一、移动光标

  1. 左移h、右移l、下移j、上移k
  2. 向下翻页ctrl + f,向上翻页ctrl + b
  3. 向下翻半页ctrl + d,向上翻半页ctrl + u
  4. 移动到行尾$,移动到行首0(数字),移动到行首第一个字符处^
  5. 移动光标到下一个句子 ),移动光标到上一个句子(
  6. 移动到段首{,移动到段尾}
  7. 移动到下一个词w,移动到上一个词b
  8. 移动到文档开始gg,移动到文档结束G
  9. 移动到匹配的{}.().[]处%
  10. 跳到第n行 ngg …

一些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" Hello world!

2.替换包围符号的命令是 cs ,命令后跟两个参数,分别是被替换的符号和需要使用的符号。比如

"Hello *world!" cs"' 'Hello world!'

3.添加包围符号的命令是 ys …