Wednesday, 30 April 2008

Using PostgreSQL YUM Repository in CentOS

PostgreSQL,著名的Open Source数据库系统。现在已开通了自己的YUM Repository,提供官方的rpm。目前,支持包括Fedora(7,8)、Red Hat(4,5)以及CentOS(4,5)的Linux发行版,支持PostgreSQL 7.3, 7.4, 8.0, 8,1, 8,2和8.3版本。这里,介绍一下我在CentOS 5.1里面,升级到PostgreSQL 8.3的过程。


1. 备份现有PostgreSQL数据库

CentOS 5.1提供的PostgreSQL版本,是8.1.11。要升级到PostgreSQL 8.3,属于major upgrade。现有数据文件是不兼容的。必须把数据先dump出来,待升级完成之后,再导入回数据库。

# su - postgres
$ pg_dumpall -c > /var/lib/pgsql/backups/pgsql-backup

2. 停止PostgreSQL Server的运行

# service postgresql stop

3. 备份现有PostgreSQL数据库文件

# mv /var/lib/pgsql /var/lib/pgsql8.1.11

4. 导入PostgreSQL YUM Repository的rpm

# wget http://yum.pgsqlrpms.org/reporpms/8.3/pgdg-centos-8.3-4.noarch.rpm
# rpm -ivh pgdg-centos-8.3-4.noarch.rpm

5. 升级PostgreSQL

# yum update

升级到8.3.1,总共更新3个软件包,postgresql、postgresql-libs和postgresql-server,另外安装一个compat-postgresql-libs包。

6. 初始化数据库

# mkdir /var/lib/pgsql
# chown -R postgres:postgres /var/lib/pgsql
# chmod -R 700 /var/lib/pgsql
# service postgresql initdb

其实,PostgreSQL数据库的初始化,具体的内容还是挺复杂的。不仅建立了相应的数据文件,还对目录和文件设置了相应的权限,并设置了PostgreSQL Server的初始参数。详细的内容,可以查阅/var/lib/pgsql下面的log文件。

7. 启动PostgreSQL Server

# service postgresql start

8. Remote Access的设置

大部分情况下,不可能一直在localhost下面使用PostgreSQL。因此,需要设置PostgreSQL提供TCP/IP连接,并作相应的用户认证。

# su - postgres
$ cd data
$ vim postgresql.conf
...
listen_addresses = '*'
port = 5432
...
$ vim pg_hba.conf
...
host all all 10.1.1.0/24 md5
...

设置PostgreSQL监听TCP/IP连接,对10.1.1.0-10.1.1.255的用户,进行md5密码验证。对除此以外的其它用户,不提供服务。

须重新启动PostgreSQL Service,上述PostgreSQL设置的修改,才会生效。

9. 建立用户

缺省情况下,PostgreSQL的超级用户是postgres,密码未知。通常情况下,以普通用户身份来访问PostgreSQL会比较安全。

# su - postgres
$ createuser -P mypguser
...

10. 数据恢复

恢复备份数据,将前面dumpall出来的数据,重新导入数据库。

# su - postgres
$ psql -f /var/lib/pgsql8.1.11/backups/pgsql-backup postgres

11. phpPgAdmin

我也安装了PostgreSQL YUM Repository提供的phpPgAdmin,结果却一直login fail,不知道那里搞错了。:(

Tuesday, 29 April 2008

Install PHP 5.2.5 into CentOS 5.1

CentOS作为RHEL的克隆版本,受到很多人的喜欢。这也是我一直推荐的Linux版本,因为它够稳定,使用感觉比较smooth。事物总有两方面,CentOS和RHEL一样,所提供软件的版本相对比较“落后”。

因为所用服务器的实际情况和所需组件的特殊要求,我不得不考虑借助第三方repository,在CentOS 5.1中安装PHP 5.2.x,(CentOS 5.1自带的是PHP 5.1.6)。能找到的,就只有Remo Repository提供了编译好的rpm包。唯一不爽的是,Remi上面的使用说明是法文,看不懂,只能靠猜。

1. 安装remi-release包

wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-2.noarch.rpm
wget http://rpms.famillecollet.com/el5.i386/remi-release-5-4.el5.remi.noarch.rpm
sudo rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

2. 配置YUM

cd /etc/yum.repos.d
sudo wget http://rpms.famillecollet.com/remi-enterprise.repo

对于CentOS 5.1,这一步可以忽略。/etc/yum.repos.d里面,另外有一个remi.repo,和remi-enterprise.repo实际是一样的。

3. 安装PHP 5.2.5

sudo yum --enablerepo=remi install php

我的系统里面,原来就安装有CentOS自带的PHP 5.1.6,因此不需要安装,而是升级。

sudo yum --enablerepo=remi update php*

第一次安装、升级的时候,需要Remi相应的GPG Key。

4. 重启动Httpd

sudo /etc/init.d/httpd graceful

我以前一直用restart参数来重启动。相对而言,graceful就比较优雅,显得没有那么“暴力”。

5. 其它

Remi还提供了其它一些软件的rpm包。我顺便把Mysql也更新了一下,php-eaccelerator、php-suhosin当然也没有落下。

Speedup PyDev Debugger by Psyco

最近在使用PyDev调试的时候,看到多出来一条警告信息。

pydev debugger: warning: psyco not available for debugger speedups

PyDev上看到,PyDev 1.3.14的一个变化,是使用Psyco来加速PyDev调试器的运行。有关于此,参见Fabio Zadrozny所写的介绍

如介绍中所述,这个改进其特别的地方是,Psyco可用来加速PyDev Debugger;而被调试的程序,却不会受Psyco的影响。

我个人的感觉,有没有Psyco,确实对PyDev Debugger速度有影响,还是能感觉得到的。不管怎样,能够加速运行,总是让人心情愉快。