编译安装 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
[ ] ( 2437 次浏览 ) 永久链接 ( 3 / 2853 )
升级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

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

至此,服务器升级完毕。

[ ] ( 2529 次浏览 ) 永久链接 ( 3.1 / 2828 )
使用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
[ ] ( 2608 次浏览 ) 永久链接 ( 3 / 2918 )
Typecho 在 Hiawatha web server 上的伪静态写法 

现在很多的人从Wordpress 转到了Typecho,从Apache httpd 转到了 Nginx.不得不说,typecho + nginx 是一个比较流行的博客搭配~

可是,使用除nginx外的其他用户就成了缺少支持的群体了,就拿typecho 来讲,它的官方doc(http://docs.typecho.org/servers)里面就没有提到除nginx 外的其他web server,连apache 也是轻描淡写的带过了。

那么,lighttpd 肿么办?hiawatha 肿么办?cherokee 肿么办?

没办法,只能用户自己搞定。

我就是一名typecho + hiawatha 的用户,一直以来,我的伪静态就不太理想,前台还行,后台很坑爹,基本属于不能用。

这是typecho 给出的适用于nginx的伪静态:

if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}

location ~ .*\.php(\/.*)*$ {
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
}


我之前照着写过一个给hiawatha用,不是很完美~见下:

UrlToolkit {
ToolkitID = te
RequestURI exists Return
Match ^.*$ Rewrite /index.php$1
}


一直想把这个问题修复,今天在逛hiawatha的在线手册(http://www.hiawatha-webserver.org/manpages)的时候,无意发现了EnablePathInfo 标签,见下:

EnablePathInfo = yes|no
Accepts URLs like /index.php/parameter if /index.php exists and the extension .php has been configured as a CGI program. '/parameter' will be placed in the environment variable PATH_INFO.
Default = no, example: EnablePathInfo = yes


我忽然明白了hiawatha 和 nginx 的不同之处~火速编辑我的hiawatha配置文件,改成如下:

VirtualHost {
Hostname = xiazhengxin.name,blog.xiazhengxin.name
WebsiteRoot = /home/http/blog_xiazhengxin_name
StartFile = index.php
UseFastCGI = PHP4TE
UseToolkit = te
ShowIndex = yes
FollowSymlinks = yes
EnablePathInfo = yes #加了这一行
# AccessList = allow 127.0.0.1,deny all
}


即启用PHP 的PathInfo功能。果然,重启hiawatha,伪静态完美了~
[ ] ( 3567 次浏览 ) 永久链接 ( 3 / 2797 )
修复Ubuntu Natty 64位 在DELL OptiPlex 790 机器上无法重启的问题 

这个坑爹的问题,在我拿到公司刚配的DELL OptiPlex 790型号的电脑的当天就发现了~当我兴冲冲的安装好最新的Ubuntu 11.04 Natty,打好最新的内核补丁,我发现重启后,机器没反应了。只能强制关机了~

我发现这可能是一个bug,我先是在Ubuntu的邮件列表里面提出了问题,果然很多人有这个问题,不仅仅是DELL OptiPlex 790的问题,还有DELL OptiPlex 的其他64位机型.

之后,我便向ubuntu 提交了这个bug,见:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/819260

等啊等,这个bug一直没有得到修复。直到几天前,一个patch 解决了这个问题。现在只需要下载最新的linux kernel 源码,打入这个patch.编译并安装使用上该内核。重启就不会再假死拉~

下载该patch(感谢Leann Ogasawara),地址:http://ftp.xiazhengxin.name/xzx/patch/0004-UBUNTU-SAUCE-x86-reboot-Make-Dell-Optiplex-790-use-r.patch

下载最新的Linux kernel (3.0.4),地址:http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.4.tar.bz2

解压内核,进入目录:
1.打入重启补丁:
patch arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c /path/to/0004-UBUNTU-SAUCE-x86-reboot-Make-Dell-Optiplex-790-use-r.patch

2.编译内核:
make allyesconfig
生成临时.config 文件。


使用Ubuntu 的.config 文件编译,一般位于/boot/下,如下:
sharl@sharl-laptop:~$ ls /boot/config* -lh
-rw-r--r-- 1 root root 135K 2011-08-30 05:58 /boot/config-2.6.38-11-generic
-rw-r--r-- 1 root root 135K 2011-04-29 05:13 /boot/config-2.6.38-9-generic

复制过来,覆盖
cp /boot/config-X.X.XX-XX-generic ./.config

接来来,开始编译(时间很长~)
make

3.编译完成后,打成debian 包.
首先安装工具包:
sudo apt-get install kernel-package

之后,打包(时间也很长):
fakeroot make-kpkg --initrd --append-to-version=-by-sharl kernel-image kernel-headers

完成之后。就会在源码目录的上层目录里面发现,生成的deb包.
4.安装内核.
依次安装 linux-image、linux-headers包.
dpkg -i linux-image*
dpkg -i linux-headers*

5.关机.(现在重启还没好~)
6.再开机即可。

至此,我的DELL OptiPlex 790 就可以正常的重启拉~

注:
1.如果你不想自己重新编译内核,这里有我编译好的.可供下载.
http://ftp.xiazhengxin.name/xzx/linux-kernel/

2.DELL 其他机型重启内核补丁下载,见:
http://people.canonical.com/~ogasawara/ ... ot-quirks/

3.编译内核时,参考了Ubuntu官方文档,地址:
https://help.ubuntu.com/community/Kernel/Compile
[ ] ( 1970 次浏览 ) 永久链接 ( 3 / 2706 )

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