tmux 的小定制

之前有接触 tmux,但一直没有深入学习,所以也对这个工具是云里雾里,前段时间也终于花了点时间看了这个工具,终于也可以用上了。。。

所谓 tmux, 是 BSD 实现的 screen 替代品,相对于 screen,它更加先进:支持屏幕切分,而且具备丰富的命令行参数,使其可以灵活、动态的进行各种布局和操作。除此之外,它还可以把不同用处的分屏和窗口布局用 session 进行分组。更棒的是 tmux 提供了丰富的配置项让我们来对它进行定制。还有它的 session 共享的功能,可以让两个人同时连到同个 server 的 tmux session,使两个人可以看到互相的操作。总之这又是一个神器。

配置参考了 这里

使用 logrotate 定期整理 Log 档案

有时候在跑一些 daemon 的时候,会遇到日志越来越大的情形。如何能做到像 apache 一样定期整理成像 xxx.1 xxx.2.gz 这样的文件呢?

这个时候就可以作到 logrotate 这个系统工作,它的配置文件在 /etc/logrotate.conf,设置方法也很简单 (参考自 Rotating Rails Log Files):

# Rotate Rails application logs
/path/to/your/current/log/*.log {
  daily
  missingok
  rotate 7
  compress
  delaycompress
  notifempty
  copytruncate
}

其中:

daily 表示每天整理,也可以改成 weekly 或 monthly
missingok 表示找不到 log 文件也无所谓
rotate 7 表示保留之前的 7 份文件
compress 表示压缩,默认用 gzip
delaycompress 表示延后到下一次 rotate 时压缩
notifempty 表示如果 log 是空的,就不 rotate
copytruncate 先复制 log 文件的内容后,再清空的作法,因為有些程序写在原来的 log 文件中,比如 rails。另一种方法是重新生成一个日志。

设置完成后,可以等到明天,或是运行 /usr/sbin/logrotate -f /etc/logrotate.conf 测试一下。

vsftpd 530 login incorrect

安装了vsftp,所有配置完成后用FTP登录,出现530 Login incorrect.错误,在网上找到错误的解决方法:
1、useradd -d /path -s /sbin/nologin username 填加用户的时候shell是/sbin/nologin
2、将上面的shell加入到/etc/shells中就可以了

正确的nginx重定向

之前给nginx做301重定向的时候经常会这样写:

server {
    listen       80;
    server_name  www.nginx.org  nginx.org;
    if ($http_host = nginx.org) {
        rewrite  (.*)  http://www.nginx.org$1;
    }
    ...
}

而今天在 nginx docs 上看到这是不正确的。。。。

正确的写法应该是这样的:

server {
    listen       80;
    server_name  nginx.org;
    return       301 http://www.nginx.org$request_uri;
}

server {
    listen       80;
    server_name  www.nginx.org;
    ...
}

这好像只能在较新版本的 nginx 中才有用,在0.9.1版本(含)以前,可以这样实现重定向:

rewrite ^ http://www.nginx.org$request_uri?;

EOF

安全删除 mysql-bin 二进制日志

今天网站突然连不上数据库,上了服务器后发现是 mysql 的二进制日志又把硬盘占满了。

像以前都是直接停 mysql 服务,然后删掉 mysql-bin 的日志。后来有同事说可以用 sql 命令来删除这些日志的。

1、显示日志文件:

mysql> show binary logs;

2、删除bin-log(删除mysql-bin.000020之前的所有二进制日志文件)。

mysql> purge binary logs to 'mysql-bin.000049';

用rsync+ssh进行备份

利用 rsync + ssh 可以很快速地对网站进行异地备份。步骤也很简单:

1、先用ssh-keygen生成一对keygen,可以免密码进行访问,可选。

2、确认本机与过程机都有安装 rsync,因为 ssh session 会自己执行 rsync –server 以便两端算签章。

3、使用如下命令进行备份

指令1 – 远端 备份回 本端:

rsync -avl --delete -e ssh server_hostname:/var/lib/mysql/ /backup/

指令2 – 本端 传送到 远端:

rsync -avl --delete -e ssh /var/lib/mysql server_hostname:/backup/

如果 ssh 端口非默认的 22,则可以

rsync -avl --delete -e 'ssh -o port=PROT' /var/lib/mysql server_hostname:/backup/

继续阅读用rsync+ssh进行备份

淘宝 Web 服务器 Tengine 正式开源

真是个令人振奋的消息。

Tengine是由淘宝核心系统部基于Nginx开发的Web服务器,它在Nginx的基础上,针对大访问量网站的需求,添加了很多功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,淘宝商城等得到了很好的验证。它的最终目标是打造一个高效、稳定、安全、易用的 Web 平台。Tengine现已开源。

—以下摘自其官方网站—

官方网站:http://tengine.taobao.org/

Tengine基于最新的Nginx稳定版(Nginx-1.0.10),在它的基础上开发了一些功能和做了一些bug修复,比如:

  • 组合多个CSS、JavaScript文件的访问请求变成一个请求;
  • 支持管道和syslog形式的日志和抽样;
  • 自动根据CPU数目设置亲缘性;
  • 监控系统的负载和资源占用从而对系统进行保护;
  • 显示对运维人员更友好的出错信息,便于定位出错机器;
  • 更强大的访问速度限制模块;
  • backtrace模块,程序崩溃的时候可以显示出错的调用栈;
  • 根据文件类型设置过期时间;

基本上,Tengine可以被看作一个更好的Nginx,或者是Nginx的超集。

编译 Gentoo 及 LFS

上个周未突然来兴致说要编译一下 LFS 或者 Gentoo,所以看了一遍 Gentoo 及 LFS 的编译过程,就开始上手了。之前在大学的时候就尝试编译过 LFS——当时一些朋友说编译 LFS 是一个可以让人忘记上课,忘记睡觉,忘记吃饭的事——编译了30几个小时也没能成功,所以很挫败。

因为 Gentoo 的编译过程简单许多,就先拿它下手。照着文档,差不多就编译了一个内核,一个 Grub,过程并不复杂,也顺利,内核编译了两遍,第一次没有把 SCSI 编译进去,造成启动的时候认不出我的 SATA 硬盘,编译了第二遍终于可以了,很兴奋——原来编译 Gentoo 也是这么简单的事,然后又用 emerge 安装了 VIM 等一些常用软件,基本系统也终于可以用了。

然后又开始编译 LFS,照着文档,也顺利地编译好了环境与基本系统,最后到内核的时候也犯了很多错误,开始的时候是直接拿了 Arch 的Config编译的,把很多东西都编译成模块了,又没有做 initfs,系统没能启动。又开始找作 initfs 的方法,都失败了。又把驱动啥的都编译到内核里去,还是启动不了,不知为何。今天索性用 arch 的内核来启动 LFS,系统是启动了,可一些初始化的工作没有完成,最后发现是 inittab 里的启动级别没设置好,最后系统终于能正常启动了,撒花~

继续折腾系统去,有时间写写编译过程与注意事项~