Ubuntu 下MP3 文件Tag 乱码之解决 

前段时间周杰伦发布了其个人的第11张专辑,作为曾经的一位杰迷,我还是毫不犹豫的购买了其正版CD。

到手后便打算着用电脑把CD里面的歌曲压出来放在手机里面,抓轨工具用的是被成为神器的"ABCDE"。

可是,抓完后问题来了。当我在手机里面浏览这些歌曲的时候,乱码出现了~ 查询后发现原来是tag属性的问题.默认是gbk,需要转换成utf-8.

这里需要用到的工具是mid3iconv,隶属于python-mutagen 软件包。
安装:
sharl@sharl-laptop:~$ sudo apt-get install python-mutagen
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
python-mutagen 已经是最新的版本了。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。

进入需要转码的歌曲的目录,列表如下:

sharl@sharl-laptop:/media/Resource/Audio/Jay Chou/惊叹号-CD压制$ ls -lh
总用量 56M
-rw------- 1 sharl sharl 5.8M 2011-11-15 23:52 01 - 周杰伦 - 惊叹号.mp3
-rw------- 1 sharl sharl 6.0M 2011-11-15 23:52 02 - 周杰伦 - 迷魂曲.mp3
-rw------- 1 sharl sharl 6.2M 2011-11-15 23:52 03 - 周杰伦 - MINE MINE.mp3
-rw------- 1 sharl sharl 5.1M 2011-11-15 23:52 04 - 周杰伦 - 公主病.mp3
-rw------- 1 sharl sharl 4.6M 2011-11-15 23:52 05 - 周杰伦 - 你好吗.mp3
-rw------- 1 sharl sharl 4.7M 2011-11-15 23:52 06 - 周杰伦 - 疗伤烧肉粽.mp3
-rw------- 1 sharl sharl 4.6M 2011-11-15 23:52 07 - 周杰伦 - 琴伤.mp3
-rw------- 1 sharl sharl 3.8M 2011-11-15 23:52 08 - 周杰伦 - 水手怕水.mp3
-rw------- 1 sharl sharl 5.7M 2011-11-15 23:52 09 - 周杰伦 - 世界末末日.mp3
-rw------- 1 sharl sharl 5.4M 2011-11-15 23:52 10 - 周杰伦 - 皮影戏.mp3
-rw------- 1 sharl sharl 3.9M 2011-11-15 23:52 11 - 周杰伦 - 超跑女神.mp3


开始转码,
sharl@sharl-laptop:/media/Resource/Audio/Jay Chou/惊叹号-CD压制$ mid3iconv -e utf-8 *
Updating 01 - 周杰伦 - 惊叹号.mp3
No ID3 header found; skipping...
Updating 02 - 周杰伦 - 迷魂曲.mp3
No ID3 header found; skipping...
Updating 03 - 周杰伦 - MINE MINE.mp3
No ID3 header found; skipping...
Updating 04 - 周杰伦 - 公主病.mp3
No ID3 header found; skipping...
Updating 05 - 周杰伦 - 你好吗.mp3
No ID3 header found; skipping...
Updating 06 - 周杰伦 - 疗伤烧肉粽.mp3
No ID3 header found; skipping...
Updating 07 - 周杰伦 - 琴伤.mp3
No ID3 header found; skipping...
Updating 08 - 周杰伦 - 水手怕水.mp3
No ID3 header found; skipping...
Updating 09 - 周杰伦 - 世界末末日.mp3
No ID3 header found; skipping...
Updating 10 - 周杰伦 - 皮影戏.mp3
No ID3 header found; skipping...
Updating 11 - 周杰伦 - 超跑女神.mp3
No ID3 header found; skipping...

当然,我这里的tag已经被我用EasyTag 移除掉了,贴出来仅供参考。

下面是转码前和转码后的audacious 的专辑列表:
之前
之后

[ ] ( 2822 次浏览 ) 永久链接 ( 3 / 2624 )
编译安装 nginx 1.1.10 

前天nginx刚刚发布了1.1.x 开发分支的最新版本1.1.9,看了长长的Changes 列表,我顿时有了一种更新的冲动,还没动手呢,今天就又紧急发布了bugfix版 1.1.10.

故而,果断跟进。

下载源码包(http://nginx.org/download/nginx-1.1.10.tar.gz), 解压,进入目录:
我的configure:
[root@PowerPC nginx-1.1.10]# ./configure \
> --prefix=/usr/local/nginx \
> --sbin-path=/usr/local/sbin/nginx \
> --conf-path=/etc/sysconfig/nginx/nginx.conf \
> --error-log-path=/var/log/nginx/error.log \
> --pid-path=/var/run/nginx.pid \
> --lock-path=/var/run/nginx.lock \
> --user=http \
> --group=web \
> --with-select_module \
> --with-poll_module \
> --with-http_dav_module \
> --with-http_flv_module \
> --with-http_mp4_module \
> --with-http_gzip_static_module \
> --without-http_fastcgi_module \
> --without-http_uwsgi_module \
> --without-http_scgi_module \
> --http-log-path=/var/log/nginx/access.log \
> --http-client-body-temp-path=/tmp/nginx/request \
> --http-proxy-temp-path=/tmp/nginx/proxy \
> --without-mail_pop3_module \
> --without-mail_imap_module \
> --without-mail_smtp_module \
> --with-pcre \
>

检查依赖,程序给出编译概况:

Configuration summary
+ using system PCRE library
+ OpenSSL library is not used
+ md5: using system crypto library
+ sha1: using system crypto library
+ using system zlib library

nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/sbin/nginx"
nginx configuration prefix: "/etc/sysconfig/nginx"
nginx configuration file: "/etc/sysconfig/nginx/nginx.conf"
nginx pid file: "/var/run/nginx.pid"
nginx error log file: "/var/log/nginx/error.log"
nginx http access log file: "/var/log/nginx/access.log"
nginx http client request body temporary files: "/tmp/nginx/request"
nginx http proxy temporary files: "/tmp/nginx/proxy"

确认没问题。开始编译和安装.make && make install.
安装完成后,恢复下配置文件 nginx.conf.

查看下版本:
[root@PowerPC nginx-1.1.10]# nginx -v
nginx version: nginx/1.1.10

没问题,升级成功。
[ ] ( 3741 次浏览 ) 永久链接 ( 3 / 2838 )
编译安装 Lighttpd 1.4.29,弃用Hiawatha web server 

由于某些原因,我是不打算再用hiawatha了,可是apache httpd这种重量级的web server 我这等小站实在跑不起,而cherokee web server 体积又太大了。

故而只能使用之前不打算用的lighttpd了。下载源码包:
8 wget http://download.lighttpd.net/lighttpd/r ... 29.tar.bz2
9 wget http://nginx.org/download/nginx-1.1.7.tar.gz

移除旧版本:
[root@PowerPC pub]# rm hiawatha*
rm: remove regular file `hiawatha-7.7.tar.gz'? y
[root@PowerPC pub]# rm nginx*
rm: remove regular file `nginx-1.1.6.tar.gz'? y
rm: remove regular file `nginx-1.1.7.tar.gz'? n

移除hiawatha:

find / -name "hiawatha*" -exec rm -rf {} \;


解压源码包,进入目录:
我的configure:
[root@PowerPC lighttpd-1.4.29]# ./configure \
> --prefix=/usr/local/lighttpd \
> --exec-prefix=/usr/local \
> --sysconfdir=/etc/sysconfig/lighttpd \
> --localstatedir=/var \
> --enable-lfs=no \
> --disable-ipv6 \
> --with-mysql=/usr/local/bin/mysql_config \
> --with-ldap \
> --with-attr \
> --with-pcre \
> --with-zlib \
> --with-bzip2

检查依赖,没有问题。给出的编译概况如下:

Plugins:

enabled:
mod_access
mod_accesslog
mod_alias
mod_auth
mod_cgi
mod_compress
mod_dirlisting
mod_evhost
mod_expire
mod_extforward
mod_fastcgi
mod_flv_streaming
mod_indexfile
mod_mysql_vhost
mod_proxy
mod_redirect
mod_rewrite
mod_rrdtool
mod_scgi
mod_secdownload
mod_setenv
mod_simple_vhost
mod_ssi
mod_staticfile
mod_status
mod_trigger_b4_dl
mod_userdir
mod_usertrack
mod_webdav
disabled:
mod_cml
mod_magnet

Features:

enabled:
auth-crypt
auth-ldap
compress-bzip2
compress-deflate
compress-gzip
regex-conditionals
disabled:
large-files
network-ipv6
network-openssl
stat-cache-fam
storage-gdbm
storage-memcache
webdav-locks
webdav-properties


确认后,make && make install 编译安装。

安装完毕后,开始配置lighttpd.在源码包下的doc/config 目录下已经提供了常用的配置文件样例。只需要复制过来,再稍加编辑即可。

主要需要配置的是mysql_vhost_mod 和 fastcgi_mod 两个模块。分别对应conf.d 下的mysql_vhost.conf 和 fastcgi.conf 文件。

当然,首先得在modules.conf 里面把这两个模块载入进来。

先是mysql_vhost_mod,顾名思义,就是把虚拟主机的配置通过数据库(MySQL)来管理。

以root身份登录MySQL,创建新数据库。
create database lighttpd;

新建用户http,并授予读取权限。
grant select on lighttpd.* to 'http'@'localhost' identified by 'PASS';

进入lighttpd数据库,新建一张表,用户存放虚拟主机记录。

mysql> use lighttpd;
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql> CREATE TABLE domains (
-> domain varchar(64) not null primary key,
-> docroot varchar(128) not null
-> );
Query OK, 0 rows affected (0.01 sec)


接下来,按照虚拟主机的域名和物理路径,依次插入数据。

结果见:
数据库/表列表:

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| bbs |
| blog |
| lighttpd |
| mysql |
| performance_schema |
| vsftpd |
+--------------------+
7 rows in set (0.00 sec)

mysql> show tables;
+--------------------+
| Tables_in_lighttpd |
+--------------------+
| domains |
+--------------------+
1 row in set (0.00 sec)

表结构:

mysql> describe domains;
+---------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| domain | varchar(64) | NO | PRI | NULL | |
| docroot | varchar(128) | NO | | NULL | |
+---------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

表内容:

mysql> select * from domains;
+-------------------------------+-------------------------------------------+
| domain | docroot |
+-------------------------------+-------------------------------------------+
| 18p2p.tk | /home/http/18p2p_tk/ |
| bbs.xiazhengxin.name | /home/http/bbs_xiazhengxin_name/ |
| blog.xiazhengxin.name | /home/http/blog_xiazhengxin_name/ |
| buypc.tk | /home/http/buypc_tk/ |
| chinesepaladin.tk | /home/http/chinesepaladin_tk/ |
| diyit.tk | /home/http/buypc_tk/ |
| diypc.tk | /home/http/buypc_tk/ |
| droid.tk | /home/http/droid_tk/ |
| linux.xiazhengxin.name | /home/http/linux_xiazhengxin_name/ |
| static.xiazhengxin.name | /home/http/static_xiazhengxin_name/ |
| taiwan-is-a-part-of-china.org | /home/http/taiwan-is-a-part-of-china_org/ |
| tibet-is-a-part-of-china.org | /home/http/tibet-is-a-part-of-china_org/ |
| wikileaks.xiazhengxin.name | /home/http/wikileaks_xiazhengxin_name/ |
| xiazhengxin.name | /home/http/blog_xiazhengxin_name/ |
+-------------------------------+-------------------------------------------+
14 rows in set (0.00 sec)


网站物理目录列表:
[root@PowerPC lighttpd]# ls /home/http -lh
总计 44K
drwxrwxr-x 2 http web 4.0K Dec 1 2010 18p2p_tk
drwxrwxr-x 13 http web 4.0K Jul 3 17:52 bbs_xiazhengxin_name
drwxrwxr-x 5 http web 4.0K Jul 3 17:55 blog_xiazhengxin_name
drwxrwxr-x 16 http web 4.0K Mar 27 2011 buypc_tk
drwxrwxr-x 2 http web 4.0K Jul 13 21:44 chinesepaladin_tk
drwxrwxr-x 2 http web 4.0K Apr 21 2011 droid_tk
drwxrwxr-x 12 http web 4.0K May 20 11:47 linux_xiazhengxin_name
drwxrwxr-x 9 http web 4.0K Jul 3 17:06 pma_xiazhengxin_name
drwxrwxr-x 7 http web 4.0K Jun 1 19:35 static_xiazhengxin_name
drwxrwxr-x 2 http web 4.0K Jul 10 00:36 taiwan-is-a-part-of-china_org
drwxrwxr-x 2 http web 4.0K Dec 21 2010 wikileaks_xiazhengxin_name

之后,就是在mysql_vhost_mod 里面设置好访问数据库的库名、地址、端口、用户名、密码、查询语句即可。见下:

mysql-vhost.db = "lighttpd"
mysql-vhost.user = "http"
mysql-vhost.pass = "PASS"
mysql-vhost.sock = "/tmp/mysqld.sock"
mysql-vhost.sql = "SELECT docroot FROM domains WHERE domain='?';"
mysql-vhost.hostname = "localhost"
mysql-vhost.port = 3306


至此,mysql_vhost_mod 结束。下面是fastcgi_mod.

这个其实和nginx差不多,指明cgi的地址、端口、扩展名即可。
我的如下:

fastcgi.server = (
".php" =>
( "localhost" =>
(
"socket" => "/tmp/php.sock" # 我用的套接字,与地址+端口一致
)
)
)


一切完毕之后,启动lighttpd.
lighttpd -f /etc/sysconfig/lighttpd/lighttpd.conf

至此,安装成功。
还有,本来想顺带升级下nginx的,由于有事,只好作罢~

注:
本文在撰写、实践时参考了以下文档:
http://redmine.lighttpd.net/wiki/lightt ... ionOptions
http://redmine.lighttpd.net/wiki/lightt ... MySQLVhost
http://redmine.lighttpd.net/wiki/lightt ... ModFastCGI

此外,lighttpd 版本信息如下:
[root@PowerPC lighttpd]# lighttpd -V
lighttpd/1.4.29 - a light and fast webserver
Build-Date: Nov 5 2011 23:25:18

Event Handlers:

+ select (generic)
+ poll (Unix)
- rt-signals (Linux 2.4+)
+ epoll (Linux 2.6)
- /dev/poll (Solaris)
- eventports (Solaris)
- kqueue (FreeBSD)
- libev (generic)

Network handler:

+ sendfile

Features:

- IPv6 support
+ zlib support
+ bzip2 support
+ crypt support
- SSL Support
+ PCRE support
+ mySQL support
+ LDAP support
- memcached support
- FAM support
- LUA support
- xml support
- SQLite support
- GDBM support
[ ] ( 2432 次浏览 ) 永久链接 ( 3 / 2851 )
升级VPS 

自国庆后一直没有怎么做自己的事情,因为实在是事情太多了~

终于在这几天有了些空闲的时间,可以做一些自己的事情了,也看到我服务器上正在跑的一些服务都有了新版本的诞生,故而决定果断跟进。

首先,下载需要安装的软件升级包:
10 wget http://downloads.php.net/stas/php-5.4.0beta2.tar.bz2
12 wget http://www.hiawatha-webserver.org/files ... 7.7.tar.gz
16 wget http://mysql.he.net/Downloads/MySQL-5.6 ... -m6.tar.gz
42 wget http://nginx.org/download/nginx-1.1.6.tar.gz
43 wget http://repo.varnish-cache.org/source/va ... 0.1.tar.gz

删除各自的修版本:
[root@PowerPC pub]# rm php*
rm: remove regular file `php-5.4.0alpha1.tar.bz2'? y
rm: remove regular file `php-5.4.0beta2.tar.bz2'? n
rm: remove regular file `phpBB-3.0.8.tar.bz2'? n
rm: remove regular file `phpinfo.php'? n
rm: remove regular file `phpMyAdmin-3.4.0-beta4-all-languages.tar.gz'? n
[root@PowerPC pub]# rm mysql*
rm: remove regular file `mysql-5.6.2-m5.tar.gz'? y
rm: remove regular file `mysql-5.6.3-m6.tar.gz'? n
[root@PowerPC pub]# rm hiawatha*
rm: remove regular file `hiawatha-7.6.tar.gz'? y
rm: remove regular file `hiawatha-7.7.tar.gz'? n
[root@PowerPC pub]# rm nginx*
rm: remove regular file `nginx-1.1.1.tar.gz'? y
rm: remove regular file `nginx-1.1.6.tar.gz'? n
[root@PowerPC pub]# rm varnish*
rm: remove regular file `varnish-3.0.1-rc1.tar.gz'? y
rm: remove regular file `varnish-3.0.1.tar.gz'? n

依次解压,结构如下:
[root@PowerPC ~]# ls
mysql-5.6.3-m6 pam_mysql-0.7RC1 varnish-3.0.1
hiawatha-7.7 nginx-1.1.6 php-5.4.0beta2

进入目录,首先是mysql:
我的cmake 参数:
[root@PowerPC mysql-5.6.3-m6]# cmake . \
> -DBACKUP_TEST:BOOL=OFF \
> -DCMAKE_BUILD_TYPE:STRING=Release \
> -DCMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql \
> -DCMAKE_USE_RELATIVE_PATHS:BOOL=ON \
> -DCOMMUNITY_BUILD:BOOL=ON \
> -DDISABLE_SHARED:BOOL=OFF \
> -DENABLE_DEBUG_SYNC:BOOL=OFF \
> -DINSTALL_BINDIR:STRING=../bin \
> -DINSTALL_LAYOUT:STRING=STANDALONE \
> -DINSTALL_SBINDIR:STRING=../sbin \
> -DMYSQL_DATADIR:PATH=/var/mysql \
> -DSYSCONFDIR:PATH=/etc/sysconfig/mysql \
> -DWITH_ARCHIVE_STORAGE_ENGINE:BOOL=ON \
> -DWITH_BLACKHOLE_STORAGE_ENGINE:BOOL=ON \
> -DWITH_DEBUG:BOOL=OFF \
> -DWITH_EMBEDDED_SERVER:BOOL=OFF \
> -DWITH_EXTRA_CHARSETS:STRING=all \
> -DWITH_FEDERATED_STORAGE_ENGINE:BOOL=ON \
> -DWITH_INNOBASE_STORAGE_ENGINE:BOOL=ON \
> -DWITH_LIBEDIT:BOOL=ON \
> -DWITH_LIBWRAP:BOOL=ON \
> -DWITH_PARTITION_STORAGE_ENGINE:BOOL=ON \
> -DWITH_PERFSCHEMA_STORAGE_ENGINE:BOOL=ON \
> -DWITH_READLINE:BOOL=OFF \
> -DWITH_SSL:STRING=no \
> -DWITH_UNIT_TESTS:BOOL=OFF \
> -DWITH_ZLIB:STRING=bundled

更多参见帮助:cmake . -LAH

之后,开始编译,安装.
make && make install

mysql安装完毕后,使用之前的数据库文件初始化数据库.
[root@PowerPC mysql]# scripts/mysql_install_db \
> --basedir=/usr/local/mysql \
> --datadir=/var/mysql \
> --user=mysql

恢复备份的配置文件:
mv bak/my.cnf /etc/sysconfig/mysql/
启动mysql:
mysqld_safe &
清理测试表,刷新权限表:
mysql_secure_installation

至此,mysql升级完成.

可是,我居然发现这次的mysql服务吃掉了我vps接近90%的内存,很是惊讶~
我想可能是由于我之前编译的时候,编译进了很多存储引擎的支持,如archive、blackhole等,杯具了,我又不想重新编译,故而在my.cnf 中禁用掉了其他的存储引擎,如 skip-federated.

这才好了一点,看来以后不能那么贪心了~

mysql 更新了,用于vsftpd 验证虚拟用户的pam_mysql 也得重新编译了。版本还是老版本 0.7RC1,进入目录:
我的configure:
[root@PowerPC pam_mysql-0.7RC1]# ./configure \
> --with-mysql=/usr/local/mysql

(仅)编译,make.完了之后,在当前目录下找到并把生成的pam_mysql.so 库替换掉之前的老版本。
[root@PowerPC pam_mysql-0.7RC1]# find . -name pam*.so
./.libs/pam_mysql.so

[root@PowerPC pam_mysql-0.7RC1]# cp ./.libs/pam_mysql.so /lib/security
cp: overwrite `/lib/security/pam_mysql.so'? y

这时候,重启vsftpd,就应该生效了~
killall vsftpd
ldconfig -v #别忘了刷新系统链接库
vsftpd &

接下来,php:
我的configure:
[root@PowerPC php-5.4.0beta2]# ./configure \
> --prefix=/usr/local/php \
> --exec-prefix=/usr/local \
> --sysconfdir=/etc/sysconfig/php \
> --localstatedir=/var \
> --disable-cli \
> --enable-fpm \
> --with-fpm-user=http \
> --with-fpm-group=web \
> --with-config-file-path=/etc/sysconfig/php/php.ini \
> --with-config-file-scan-dir=/etc/sysconfig/php \
> --disable-ipv6 \
> --with-zlib \
> --with-bz2 \
> --enable-calendar \
> --with-curl \
> --enable-dba=shared \
> --enable-exif \
> --enable-ftp \
> --with-gd \
> --enable-gd-native-ttf \
> --with-mhash \
> --enable-mbstring \
> --with-mcrypt \
> --with-mysql=/usr/local/mysql \
> --with-mysql-sock=/tmp/mysql.sock \
> --with-mysqli=/usr/local/bin/mysql_config \
> --with-pdo-mysql=/usr/local/mysql \
> --with-libedit \
> --enable-soap \
> --enable-sockets \
> --enable-wddx \
> --with-xmlrpc \
> --with-xsl \
> --enable-zip \
> --without-pear

检查依赖,没有问题。之后编译,安装。
make && make install.

完了之后,恢复下之前备份过的配置文件,php-fpm.conf、php.ini 即可.

紧接着,web 服务器,先是hiawatha,最新的7.7版本是一个安全修复版,推荐更新:
我的configure:
[root@PowerPC hiawatha-7.7]# ./configure \
> --prefix=/usr/local/hiawatha \
> --exec-prefix=/usr/local \
> --sysconfdir=/etc/sysconfig \
> --localstatedir=/var \
> --disable-largefile \
> --enable-chroot \
> --enable-command \
> --disable-ipv6 \
> --disable-monitor \
> --disable-ssl

检查依赖,编译,安装,都很顺利。
make && make install.

最后,恢复下配置文件 hiawatha.conf、php-fcgi.conf(主要是这两个)。

然后是nginx,最新的开发版:
我的configure:
[root@PowerPC nginx-1.1.6]# ./configure \
> --prefix=/usr/local/nginx \
> --sbin-path=/usr/local/sbin/nginx \
> --conf-path=/etc/sysconfig/nginx/nginx.conf \
> --error-log-path=/var/log/nginx/error.log \
> --pid-path=/var/run/nginx.pid \
> --lock-path=/tmp/nginx.lock \
> --user=http \
> --group=web \
> --with-select_module \
> --with-poll_module \
> --with-http_image_filter_module \
> --with-http_sub_module \
> --with-http_dav_module \
> --with-http_flv_module \
> --with-http_mp4_module \
> --with-http_gzip_static_module \
> --without-http_fastcgi_module \
> --without-http_uwsgi_module \
> --without-http_scgi_module \
> --http-log-path=/var/log/nginx/access.log \
> --http-client-body-temp-path=/tmp/nginx/request \
> --http-proxy-temp-path=/tmp/nginx/proxy \
> --without-mail_pop3_module \
> --without-mail_imap_module \
> --without-mail_smtp_module \
> --with-pcre

检查依赖,系统给出编译概况:

Configuration summary
+ using system PCRE library
+ OpenSSL library is not used
+ md5: using system crypto library
+ sha1: using system crypto library
+ using system zlib library

nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/sbin/nginx"
nginx configuration prefix: "/etc/sysconfig/nginx"
nginx configuration file: "/etc/sysconfig/nginx/nginx.conf"
nginx pid file: "/var/run/nginx.pid"
nginx error log file: "/var/log/nginx/error.log"
nginx http access log file: "/var/log/nginx/access.log"
nginx http client request body temporary files: "/tmp/nginx/request"
nginx http proxy temporary files: "/tmp/nginx/proxy"


确认无误后,make && make install 编译,安装。
一切OK后,依然恢复下配置文件 nginx.conf

最后就是一个web缓存服务器varnish,前天下载时候还是3.0.1版本,今天就发布了3.0.2版本,囧rz
我的configure:
[root@PowerPC varnish-3.0.2]# ./configure \
> --prefix=/usr/local/varnish \
> --exec-prefix=/usr/local \
> --sysconfdir=/etc/sysconfig \
> --localstatedir=/var \
> --disable-largefile \
> --enable-kqueue \
> --enable-epoll \
> --enable-ports \
> --with-jemalloc

检查依赖,没问题。编译,安装.
make && make install

最后,还是别忘了恢复下配置文件。

至此,服务器升级完毕。

[ ] ( 2516 次浏览 ) 永久链接 ( 3.1 / 2826 )
使用GnuPG 签名来保护邮件安全 

玩电子邮件这么多年,一直没有怎么注重安全,最开始是连POP3,SMTP都是明文方式,再后来IMAP逐渐火了起来,TLS/SSL 加密协议才逐渐的被普遍使用~

不过,今天,我要正式的进入PGP/GPG时代了~因为用户的隐私是一个值得重视的问题~

于是,就在昨天我生成了我自己的密钥对(公钥和私钥),
1.首先,确认Ubuntu 已经安装了GPG(GnuPG),如下:

sharl@sharl-laptop:~/gpg$ gpg --version
gpg (GnuPG) 1.4.11
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: ~/.gnupg
支持的算法:
公钥: RSA, RSA-E, RSA-S, ELG-E, DSA
对称加密: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128,
CAMELLIA192, CAMELLIA256
散列: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
压缩: 不压缩, ZIP, ZLIB, BZIP2

2.之后,便可以使用GPG去生成我的密钥对了.

sharl@sharl-laptop:~/gpg$ gpg --gen-key
gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

请选择您要使用的密钥种类:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (仅用于签名)
(4) RSA (仅用于签名)
您的选择? 4 #选择加密类型,一般选1,我这里为了测试选了4
RSA 密钥长度应在 1024 位与 4096 位之间。
您想要用多大的密钥尺寸?(2048) 1024
您所要求的密钥尺寸是 1024 位
请设定这把密钥的有效期限。
0 = 密钥永不过期
<n> = 密钥在 n 天后过期
<n>w = 密钥在 n 周后过期
<n>m = 密钥在 n 月后过期
<n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) 1 #选择密钥过期时间,一般选"0"永不过期.
密钥于 2011年09月19日 星期一 11时57分14秒 CST 过期
以上正确吗?(y/n) y #确认信息正确性

您需要一个用户标识来辨识您的密钥;本软件会用真实姓名、注释和电子邮件地址组合
成用户标识,如下所示:
“Heinrich Heine (Der Dichter) <[email protected]>”

真实姓名: Tester #输入姓名
电子邮件地址: [email protected] #输入邮箱地址
注释: Just Test #输入注释
您选定了这个用户标识:
“Tester (Just Test) <[email protected]>”

更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)? O #确认数据正确性
您需要一个密码来保护您的私钥。
#这里会要求用户输入密码口令,两次。用于解开私钥。
我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
+++++
+++++
gpg: 密钥 4E9638A9 被标记为绝对信任
公钥和私钥已经生成并经签名。

gpg: 正在检查信任度数据库
gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
gpg: 深度:0 有效性: 2 已签名: 0 信任度:0-,0q,0n,0m,0f,2u
gpg: 下次信任度数据库检查将于 2011-09-19 进行
pub 1024R/4E9638A9 2011-09-18 [有效至:2011-09-19]
密钥指纹 = 046D 7880 874C E825 2D36 9A47 3B53 0E6E 4E96 38A9
uid Tester (Just Test) <[email protected]>

请注意这把密钥还不能用来加密,您必须先用“--edit-key”指令
生成用于加密的子钥。

3.一般到这里,生成的密钥对应该可以用了,不过由于我之前选择的类型是"RSA (仅用于签名)",所以我还得额外的添加一个用于加密的子钥.

sharl@sharl-laptop:~/gpg$ gpg --edit-key 4E9638A9 #uid 就是之前生成的“1024R/4E9638A9” 后面部分,即用户标识
gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

私钥可用。

pub 1024R/4E9638A9 创建于:2011-09-18 有效至:2011-09-19 可用于:SC
信任度:绝对 有效性:绝对
绝对 (1). Tester (Just Test) <[email protected]>

gpg> addkey #添加子钥
密钥受保护。
#这里需要输入之前创建的私钥密码口令.
您需要输入密码,才能解开这个用户的私钥:“Tester (Just Test) <[email protected]>”
1024 位的 RSA 密钥,钥匙号 4E9638A9,建立于 2011-09-18

请选择您要使用的密钥种类:
(3) DSA (仅用于签名)
(4) RSA (仅用于签名)
(5) ElGamal (仅用于加密)
(6) RSA (仅用于加密)
您的选择? 4 #选择RSA
RSA 密钥长度应在 1024 位与 4096 位之间。
您想要用多大的密钥尺寸?(2048) 1024
您所要求的密钥尺寸是 1024 位
请设定这把密钥的有效期限。
0 = 密钥永不过期
<n> = 密钥在 n 天后过期
<n>w = 密钥在 n 周后过期
<n>m = 密钥在 n 月后过期
<n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) 1 #供测试,一天过期
密钥于 2011年09月19日 星期一 12时04分16秒 CST 过期
以上正确吗?(y/n) y #确认信息正确性
真的要建立吗?(y/N) y #再次确认
我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
.....+++++
.+++++

pub 1024R/4E9638A9 创建于:2011-09-18 有效至:2011-09-19 可用于:SC
信任度:绝对 有效性:绝对
sub 1024R/F4A49466 创建于:2011-09-18 有效至:2011-09-19 可用于:S
绝对 (1). Tester (Just Test) <[email protected]>

gpg> save #保存,退出

4.至此,我的密钥对算是完全建立了,也可以用了。查看下我刚刚创建的私钥:
sharl@sharl-laptop:~/gpg$ gpg -K 4E9638A9
sec 1024R/4E9638A9 2011-09-18 [有效至:2011-09-19]
uid Tester (Just Test) <[email protected]>
ssb 1024R/F4A49466 2011-09-18 [有效至:2011-09-19]

5.这时候,我得把生成的公钥上传到网络上的公钥服务器(如 pgp.mit.edu )里面去,这样的话,别人收到了我用私钥加过密的邮件,才能有办法从公共的公钥服务器上获取对应的公钥去解密。不然那封邮件就是天书了~囧

上传公钥:
sharl@sharl-laptop:~/gpg$ gpg --send-keys --keyserver pgp.mit.edu 4E9638A9
gpg: 将密钥‘4E9638A9’上传到 hkp 服务器 pgp.mit.edu

完了之后,上传的公钥就会被全世界所有的公钥服务器同步上去,也就是说任何人都可以在任意一台公钥服务器上找到我上传的公钥了。

比如:
麻省理工的服务器上:
http://pgp.mit.edu:11371/pks/lookup?op= ... 6E4E9638A9

ubuntu 的 keyserver:
http://keyserver.ubuntu.com:11371/pks/l ... ;op=vindex

注:这里有一份全球主要公钥服务器的列表,见:http://sks-keyservers.net/status/

6.待这一切都搞定后,就可以配置下本地的邮件客户端了~基本上所有的邮件客户端都是支持PGP签名的。

我是使用的Mozilla 的Thunderbird的,它不像Evolution 原生支持PGP,而是要安装一个叫“enigmail”插件.

sudo apt-get install enigmail

安装之后,重启thunderbird,菜单栏里会多出来一个"安全"项.点击“设置”,根据向导提示,完成设置即可.具体不再赘述。

7.为了方便日后使用,一般建议把密钥的用户标识设置成系统环境变量,如下:
export GPGKEY=4E9638A9
source ~/.bashrc #使之生效

之后重启下gpg-agent(没有则安装 sudo apt-get install gnupg-agent )
killall gpg-agent
eval $(gpg-agent --daemon)
即可.

8.至此,其实一切都完成了。不过根据官方的建议,即在创建完密钥对后,强烈推荐备份公钥和私钥,已经生成吊销证书,以备不时之需。

所以:
备份私钥
sharl@sharl-laptop:~/gpg$ gpg -o tester_priv.asc -a --export-secret-key 4E9638A9

备份公钥
sharl@sharl-laptop:~/gpg$ gpg -o tester_pub.asc -a --export 4E9638A9

生成、备份密钥吊销证书
sharl@sharl-laptop:~/gpg$ gpg -o tester_revoke.asc --gen-revoke 4E9638A9

sec 1024R/4E9638A9 2011-09-18 Tester (Just Test) <[email protected]>

要为这把密钥建立一份吊销证书吗?(y/N) y #选“是”
请选择吊销的原因:
0 = 未指定原因
1 = 密钥已泄漏
2 = 密钥被替换
3 = 密钥不再使用
Q = 取消
(也许您会想要在这里选择 1)
您的决定是什么? 0 #选择原因
请输入描述(可选);以空白行结束:
> Just a Test. #输入理由
>
吊销原因:未指定原因
Just a Test.
这样可以吗? (y/N) y #确认信息正确性

您需要输入密码,才能解开这个用户的私钥:“Tester (Just Test) <[email protected]>”
1024 位的 RSA 密钥,钥匙号 4E9638A9,建立于 2011-09-18
#这里需要输入私钥的口令密码
已强行使用 ASCII 封装过的输出。
已建立吊销证书。

请把这个文件转移到一个可隐藏起来的介质(如软盘)上;如果坏人能够取得这
份证书的话,那么他就能让您的密钥无法继续使用。把这份凭证打印出来再藏
到安全的地方也是很好的方法,以免您的保存媒体损毁而无法读取。但是千万
小心:您的机器上的打印系统可能会在打印过程中把这些数据临时在某个其他
人也能够看得到的地方!

生成的文件列表:
sharl@sharl-laptop:~/gpg$ ls tester* -lh
-rw-r--r-- 1 sharl sharl 2.2K 2011-09-18 12:51 tester_priv.asc
-rw-r--r-- 1 sharl sharl 1.3K 2011-09-18 12:52 tester_pub.asc
-rw-r--r-- 1 sharl sharl 398 2011-09-18 12:53 tester_revoke.asc

保存在一个隐秘的地方即可。

至此,一切都OK了~尽情享受完全隐私的互联网吧~

注:本篇文章撰写以及实践时,参考了以下链接:
http://www.gnupg.org/gph/en/manual.html
https://help.ubuntu.com/community/GnuPrivacyGuardHowto
http://fedoraproject.org/wiki/Using_GPG ... hunderbird
http://enigmail.mozdev.org/documentatio ... t.php.html
[ ] ( 2600 次浏览 ) 永久链接 ( 3 / 2916 )

<< <上一页 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 下一页> >>