Ubuntu16.04 Python默认版本要切换

Ubuntu16.04 Python默认版本要切换到Python3,直接执行:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

如果要切换到Python2,执行:

update-alternatives --config python

ubuntu16.04 更改mysql默认数据目录

在 Ubuntu 默认MySQL数据目录是 /var/lib/mysql

现在要将数据目录移到 /server/mysql 做法如下:

#停止MYSQL服务 service mysql stop #复制现有数据目录 cp /var/lib/mysql /server/ #修改MYSQL配置文件将 datadir 对应的值改为 /server/mysql vi /etc/mysql/mysql.conf.d/mysqld.conf #将apparmor中MYSQL配置所有 /var/lib/mysql 改为 /server/mysql vi /etc/apparmor.d/usr.sbin.mysqld #重启appparmor服务 sudo service apparmor restart #重启mysql服务 sudo service mysql start

CSS透明 兼容大部分主流浏览器

{ filter:alpha(opacity=50); -moz-opacity:0.5; -khtml-opacity:0.5; opacity:0.5; }

Jquery简易提示对话框

  一个简易的Jquery提示功能,要求显示几秒后自动消失。网上找过很多第三方插件,结果不是太复杂就是不适用,于是参照网上别人的范例写了这个,仅做记录。

CSS代码
#msgtip { position: absolute; top: 52px; left: 50%; display: none; z-index: 9999; min-width: 200px; text-align: center; filter:alpha(opacity=90); -moz-opacity:0.9; -khtml-opacity: 0.9; opacity: 0.9; }
.altmsg { color: #f57c86; text-align: center; height: 30px; line-height: 28px; background:#ffff99; color: #ff0000; border:1px solid #f57c86; border-radius: 4px; padding-left: 10px; padding-right: 10px; white-space: nowrap; }

JS代码
function ShowMsg(msg, focus) {
    var $tip = $('#msgtip');
    if ($tip.length == 0) {
        $tip = $('<div id="msgtip"></div>');
        $('body').append($tip);
    }
    $tip.stop(true).prop('class', 'altmsg').html(msg).css('margin-left', -$tip.outerWidth(true) / 2).fadeIn(500).delay(3000).fadeOut(500);
    if (typeof(focus) != 'undefined') {
        focus.focus();
        $focus.val('');
    }
}

  由于msgtip定义了min-width值,当显示宽度小于这个min-width值,而内部元素又要求大于它时,就会出现提示框无法居中的问题,且提示文字会换行。只需再增加white-space: nowrap;属性,问题即可解决。

获取SELECT选中项的VALUE值原生JS代码

document.getElementById("id").options[document.getElementById("id").options.selectedIndex].value;
document.getElementById("id").options[document.getElementById("id").options.selectedIndex].text;

可以获取scrollTop值的兼容性代码

获取scrollTop兼容性代码如下:
var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;

让PHP的basename支持中文

function get_basename($filename){
     return preg_replace('/^.+[\\\\\\/]/', '', $filename);
}

房贷利率计算器(EXCEL版)

一个EXCEL还款计算工具,可以等额本金、等额本息切换,支持提前还贷和公积金组合贷。

这个工具的原作者不是我,出处哪里我找不到了。原作仅支持商贷,我只做了些适应自己使用的修改和调整。

添加了2015-05-11降息后的最新执行利率。工具不是很完善,但基本能满足自己需要。有用到的就自己下载。

附件1: Mortgage_calculator.xlsx (266.41 K, 下载次数:219)

LINUX同步工具rsync错误提示详解

Rsync configure:

配置一:
ignore errors
说明:这个选项最好加上,否则再很多crontab的时候往往发生错误你也未可知,因为你不可能天天去看每时每刻去看log,不加上这个出现错误的几率相对会很高,因为任何大点的项目和系统,磁盘IO都是一个瓶颈

Rsync error:
错误一:
@ERROR: auth failed on module xxxxx
rsync: connection unexpectedly closed (90 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)
说明:这是因为密码设置错了,无法登入成功,检查一下rsync.pwd,看客服是否匹配。还有服务器端没启动rsync 服务也会出现这种情况。

错误二:
password file must not be other-accessible
continuing without password file
Password:
说明:这是因为rsyncd.pwd rsyncd.sec的权限不对,应该设置为600。如:chmod 600 rsyncd.pwd

错误三:
@ERROR: chroot failed
rsync: connection unexpectedly closed (75 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)
说明:这是因为你在 rsync.conf 中设置的 path 路径不存在,要新建目录才能开启同步

错误四:
rsync: failed to connect to 218.107.243.2: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]
说明:防火墙问题导致,这个最好先彻底关闭防火墙,排错的基本法就是这样,无论是S还是C,还有ignore errors选项问题也会导致

错误五:
@ERROR: access denied to www from unknown (192.168.1.123)
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(359)

说明:此问题很明显,是配置选项host allow的问题,初学者喜欢一个允许段做成一个配置,然后模块又是同一个,致使导致

错误六:
rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(244) [generator=2.6.9]
rsync error: received SIGUSR1 (code 19) at main.c(1182) [receiver=2.6.9]

说明:导致此问题多半是服务端服务没有被正常启动,到服务器上去查查服务是否有启动,然后查看下 /var/run/rsync.pid 文件是否存在,最干脆的方法是杀死已经启动了服务,然后再次启动服务或者让脚本加入系统启动服务级别然后shutdown -r now服务器

错误七:
rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(604) [sender=2.6.9]

说明:原数据目录里没有数据存在

附一个RSYNC定时运行的脚本

#!/bin/bash
if [ `netstat -anp | grep rsync | wc -l` -gt 0 ] ; then
    echo "Prev rsync still running. Skip now. `date`" >> /server/logs/rsync.log
    exit 1
else
    RDIR='sem/'
    LDIR='/server/www/html/sem/'
    RADD='192.168.1.2'
    BAKUSER='rsync'
    PROG='/usr/bin/rsync'
    OPTIONS='-aruHvz --delete'
    export RSYNC_PASSWORD='123456'
    $PROG $OPTIONS $BAKUSER@$RADD::$RDIR $LDIR
fi

进程中包含rsync则退出,使用export RSYNC_PASSWORD语法跳过密码验证,可以让部署的时候少一个文件。

注意一点:如果服务器同时运行着rsync服务端的话,此脚本就不适用了。那样的话,就要把判断部分的代码去掉。

iftop流量查看和apache限速插件的使用

iftop -N -n -B -P -m 3000000

参数 -i 指定网卡 例如 -i em1 或 -i eth0

安装
yum install ifstat iftop 查看
ifstat -i eth0 查看
watch ifconfig
iftop -i eth0 -N -n -B -P -m 3000000
iftop -i em1 -N -n -B -P -m 3000000

安装限速插件
sudo apt-get install libapache2-mod-bw

BandWidthModule On       #打开带宽控制模块
ForceBandWidthModule On  #强制对每个请求进行限速(默认只对部分文件类型的请求进行限速,例如text/html)
BandWidth all 1000000    #如果当前只有一个客户端在下载文件,则限制速度为1MB/s
MinBandWidth all 100000  #如果当前有多个客户端在下载文件,则对每个客户端限制为100KB/s
编译完成以后在/etc/apache2/mods-available中加入一个新文件limitipconn.conf,写入:
vi /etc/apache2/mods-available/limitipconn.conf
ExtendedStatus On
这样就可以确保,在使用a2enmod命令启用模块的时候,ExtendedStatus On肯定生效。然后在limitipconn.load文件中写入:
vi /etc/apache2/mods-available/limitipconn.load
LoadModule limitipconn_module /usr/lib/apache2/modules/mod_limitipconn.so
这样重启服务器后mod_limitipconn模块就被加载到Apache中了。我们需要做的就是需要在虚拟主机ubuntu.cnssuestc.org的配置文件中加入相关的配置:
MaxConnPerIP 2 然后进行多线程下载的测试,Ubuntu下面多线程下载的工具可以看看Axel,也可以用三个wget一起下载,就会发现一个wget会返回503的错误:
启用限速
a2enmod bw
a2enmod limitipcon