环境需求
实现本文过程使用的环境如下: ::
- Ubuntu 8.10
- gcc 4.2
- g++ 4.1
本文涉及的内容同样适用于KUbuntu,其它Linux可能在启动设置上略有差别,编译与安装过程也同样适用于类似的UNIX操作系统。
参考文献
PostgreSQL 8.3.5 Document : Install Procedure
注意事项
很多Linux发行版的软件库中都集成了 PostgreSQL。例如ubuntu可以通过
sudo apt-get install postgresql
命令直接安装。但是ubuntu的postgresql做了一些定制,命令行位置、调用格式等都略有差别,对于只有官方文档的学习者,可能自己编译更容易掌握和学习。
安装过程
=== 获取代码 ===
下载 Postgresql 的源码(当前最新版本是 8.3.5)。
- 解压(这里假设下载至~/downloads)
tar vxf ~/downloads/postgresql-8.3.5.tar.gz
- 进入解压后的源码目录
cd postgresql-8.3.5
配置与编译安装
- 执行配置命令
./configure
应注意阅读这一步输出的信息,可能你的系统中缺少一些依赖库,可能你想要添加一些其它的设置,如我在这里编译时调用的是:
./configure --with-python --with-perl
* 编译与安装
make
sudo make install
这样编译安装后,数据库位于/usr/local/pgsql目录。
扩展
PostgreSQL 的一些扩展功能,例如tsearch2全文检索,默认不会安装。需要手工安装(使用linux发行版的集成版本时,可能需要单独指定其软件包安装)。
这个安装过程也很简单,只要在源码的contrib子目录下执行make:
cd contrib
make
sudo make install
配置与启动
配置基本信息
首先,PostgreSQL需要一个名为postgres的系统帐户做为默认的超级用户。$pg_path/bin目录下的命令需要以这个用户的身份执行。
sudo adduser
(或许你需要用passwd命令给它设定一个密码)
建立默认的数据存储位置,我遵循文档设定,建在/usr/local/pgsql/data。
sudo mkdir /usr/local/pgsql/data
接下来,要将这个目录的所有权赋给postgres。
sudo chown postgres /usr/local/pgsql/data
然后,初始化数据库目录。这一步需要切换到postgres帐户
su - postgres
/usr/local/pgsql/bin/initdb --locale=zh_CN.utf8 --encoding=utf8 /usr/local/postgres/data
从系统提示来看,ubuntu linux上“--locale=zh_CN.utf8 --encoding=utf8”已经是默认配置了,不需要干涉。
启动与运行
开发人员可以手工启动PosggreSQL,这也需要在postgres用户下。
su - postgres
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data start
pg_ctl可以控制服务运行,详见其help或PosgreSQL文档。
需要以守护进程模式运行在系统后台的话,可以手工配置。在contrib目录下有一个子目录名为start_scripts,分别有freeebsd、linux和osx上的启动脚本示例。这里只介绍linux脚本的使用:::
- 将contrib/start_scripts/linux文件放到系统的init.d目录:
sudo cp linux /etc/init.d/postgresql
- 然后建立六个符号链接,该脚本自己的示例是:
sudo ln -s /etc/init.d/postgresql /etc/rc.d/rc0.d/K02postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc.d/rc1.d/K02postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc.d/rc2.d/K02postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc.d/rc3.d/S98postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc.d/rc4.d/S98postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc.d/rc5.d/S98postgresql
然而我用这样的方法在ubuntu上不能启动,经梁庆喜指点,改为如下六个符号链接:
sudo ln -s /etc/init.d/postgresql /etc/rc3.d/S98postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc6.d/K90postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc0.d/K02postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc2.d/S90postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc1.d/S90postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc4.d/S98postgresql
sudo ln -s /etc/init.d/postgresql /etc/rc5.d/S98postgresql
重启即可。
测试
登录到postgres
先确认服务器处于运行状态。然后执行:
su - postgres
/usr/local/pgsql/bin/psql postgres
在此控制台环境下可以查看可用的命名(\?),可以查看SQL语法帮助(\help),可以查看环境信息(\SHOW ALL)。详请可以执行\?查看。
创建新用户
切换到postgres用户下执行创建命令:
su - postgres
/usr/local/pgsql/bin/createuser march
这样会将我系统中的 march 用户与之关联起来。
创建数据库
切换到postgres用户下执行创建命令:
su - postgres
/usr/local/pgsql/bin/createdb -O march UniSearch
-O 参数指定这个数据库的所有者为march。
信任授权
如果从网络无法访问数据库,提示连接被拒绝,可能是权限问题,此时打开数据库目录下的pg_hba.conf,找到类似如下格式的文本(通常在最后):
# IPv4 local connections:
host all all 127.0.0.1/32 trust
将需要信任的IP加入,设为trust。或按照注释文档中的说明进行配置。
附录
INSTALL 文档中的 Short Version 一节
./configure
gmake
su
gmake install
adduser postgres
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test
没有评论:
发表评论