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 …

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 -s IP地址 -p 端口 -k 密码 -m 加密方式 &

注:ip地址为当前服务器ip,端口随意,加密方式建议为aes-256-cfb

5.加入开机启动

# echo "nohup …

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 -D '/var/lib/postgres/data'
$ createuser -i #输入你的账户名称,并给管理员权限

最好给postgres用户设置密码
(注意不是linux系统帐号)
# su - postgres
$ psql
>ALTER USER …

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)

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

curosr.callproc(procname[, parameters])

这个只读属性,它返回数据库中的行的总数已修改,插入或删除最后 execute*().

cursor.rowcount

此方法提交当前事务。如果不调用这个方法,无论做了什么修改,自从上次调用commit()是不可见的,从其他的数据库连接 …

如何上传文件到服务器


主要介绍通过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实例

$ scp /home/xxx/test.md xxx@xxxx:~/ #在使用本地~/目录时,使用tab自动补全会转化为绝对路径
test.md                                       100%   86     0.1KB …