热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

FreeBSD系统安装PostgreSQL数据库

1.假设环境pgsql.home.net192.168.1.3255.255.255.0文中的port选项是本人喜好,不是预设值或建议值2.更新FreeBSD中的porttree$su-$portsnapfetchupdate$exit如果你从未用过portsnap,改为$su-$portsnapfetchextrac
1. 假设环境

pgsql.home.net 192.168.1.3 255.255.255.0

文中的 port 选项是本人喜好,不是预设值或建议值

2. 更新 FreeBSD 中的 port tree

$ su -
$ portsnap fetch update
$ exit

如果你从未用过 portsnap,改为

$ su -
$ portsnap fetch extract update
$ exit

3. 登入 pgsql.home.net 后从 port 安装 perl 5.10.1

系统默认用 perl 5.8.x,如果你想 postgres 用 perl 5.10.x,有两个方法
i) 编译 postgresql 之前先编译 perl 5.10
ii) 在 /etc/make.conf 加入一行 PERL_VERSION=5.10.1

我习惯先编译 perl 5.10

$ su -
$ cd /usr/ports/lang/perl5.10/
$ make config

┌────────────────────────────────────┐
│                 Options for perl-threaded 5.10.1              │
│  ──────────────────────────┐ │
│ │      [ ] DEBUGGING      Build with debugging support           │ │
│ │      [ ] GDBM           Build GDBM_File extension              │ │
│ │      [ ] PERL_MALLOC    Use Perl malloc                        │ │
│ │      [X] PERL_64BITINT  Use 64 bit integers (on i386)          │ │
│ │      [X] THREADS        Build threaded perl                    │ │
│ │      [ ] MULTIPLICITY   Use multiplicity                       │ │
│ │      [X] SUIDPERL       Build set-user-id suidperl binary      │ │
│ │      [X] SITECUSTOMIZE  Run-time customization of @INC         │ │
│ │      [X] USE_PERL       Rewrite links in /usr/bin              │ │

$ make
$ make install
$ exit

4. 在 pgsql.home.net 从 port 安装 postgreSQL 8.4.1

$ su -
$ cd /usr/ports/database/postgres84-server
$ make config

┌─────────────────────┐
│               Options for postgresql-server 8.4.1                  │
│ ┌────────────────────────┐ │
│ │[X] NLS               Use internationalized messages            │ │
│ │[ ] PAM               Build with PAM support (server only)      │ │
│ │[ ] LDAP              Build with LDAP authentication support    │ │
│ │[ ] MIT_KRB5          Build with MIT’s kerberos support         │ │
│ │[ ] HEIMDAL_KRB5      Builds with Heimdal kerberos support      │ │
│ │[ ] OPTIMIZED_CFLAGS  Builds with compiler optimizations (-O3)  │ │
│ │[X] XML               Build with XML data type (server)         │ │
│ │[X] TZDATA            Use internal timezone database (server)   │ │
│ │[ ] DEBUG             Builds with debugging symbols             │ │
│ │[X] INTDATE           Builds with 64-bit date/time type (server)│ │
│ │                            │ │

$ make
$ make install
$ exit

当编译 perl5.10 或 postgres 时,会自动跳进其他套件选项画面,
如 libiconv, m4, libxslt
我个人喜好的选择如下:

┌───────────────────────┐
│                   Options for libiconv 1.13.1                      │
│ ┌────────────────────────┐ │
│ │  [X] EXTRA_ENCODINGS  Include extra character sets             │ │
│ │  [X] EXTRA_PATCHES    Apply patches to fix CP932 add EUCJP-MS  │ │

┌─────────────────────────┐
│                     Options for m4 1.4.13,1          │
│ ┌───────────────────────────┐ │
│ │     [X] LIBSIGSEGV  Use libsigsegv for better diagnostics      │ │

┌─────────────────────────┐
│                    Options for libxslt 1.1.26                      │
│ ┌────────────────────────────┐ │
│ │         [X] MEM_DEBUG  Enable memory debugging                 │ │
│ │         [X] CRYPTO     Enable crypto support for exslt         │ │

安装 postgresql-contrib

$ su -
$ cd /usr/ports/databases/postgresql-contrib
$ make
$ make install
$ exit

安装 p5-postgresql-plperl

$ su -
$ cd /usr/ports/databases/p5-postgresql-plperl
$ make
$ make install
$ exit

4. 在 pgsql.home.net 修改 postgreSQL Database 预设为中文 locate

本人使用繁体中文,选用 zh_TW.UTF-8 的 locate。

请参考 postgresql 安装说明,它有提及如何改变 locate 的方法

$ pkg_info -D postgresql-server-8.4.1

我使用增加一个 login class 的方法,去改变 locate 值,步骤为
i) 修改 /etc/login.conf
ii) 修改 /etc/rc.conf

i)

$ su -
$ vi /etc/login.conf
$ exit

===========================
在档案中某空白地方增加以下描述
#——————-
# postgresql class
#——————-
pgsql:\
:lang=zh_TW.UTF-8:
:setenv=LC_COLLATE=C:\
:tc=default:

修改完 /etc/login.conf 必顺执行一次 cap_mkdb 使之生效

$ su -
$ cap_mkdb /etc/login.conf
$ exit

ii)

$ su -
$ vi /etc/rc.conf
$ exit

==========================
在档案中某空白地方增加以下描述
#———————-
# postgresql settings
#———————-
postgresql_enable=”YES”
postgresql_data=”/usr/local/pgsql/data”
postgresql_flags=”-w -s -m fast”
postgresql_initdb_flags=”?encoding=utf-8 ?lc-collate=C”
postgresql_class=”pgsql”

注意 /etc/rc.conf 中的 postgresql_class 值是对应 /etc/login.conf 名称

4. 在 pgsql.home.net 初始化 postgres 系统资料库

$ su
$ /usr/local/etc/rc.d/postgresql initdb
$ exit

5. 初始化系统资料库后,便可以第一次启动 postgresql

$ su
$ /usr/local/etc/rc.d/postgresql start
$ exit

6. 使用 psql 修改 pgsql 的密码
在 FreeBSD port 的 postgresql,它的 superuser 叫 pgsql,并不是 postgres 初始化的资料库,pgsql 是没有密码,在 localhost 没有密码登入,任何人皆可以在 localhost 用 pgsql 登入 postgresql 为所欲为。因此,第一件事为 pgsql 设密码,使用 psql 便可

==================================
在 psql 画面输入命令修改密码然后离开 psql
———————————————————-

postgres=# \password pgsql
postgres=#\q

修改密码工作还有下半部份,便是修改 /usr/local/pgsql/data/pg_hba.conf

$ su -
$ cd /usr/local/pgsql/data
$ vi pg_hba.conf
$ exit

=============================================
把档案中的 trust 改为 md5,强迫 postgres 必须做密码登入
—————————————————————————-

# TYPE  DATABASE       USER     CIDR-ADDRESS          METHOD

# “local” is for Unix domain socket connections only
local   all            pgsql                          md5

# IPv4 local connections:
host    all            pgsql    127.0.0.1/32          md5
host    all            pgsql    192.168.1.3/32        md5
host    all            all      192.168.1.0/24        reject

# IPv6 local connections:
#host   all         all         ::1/128               trust

仔细的 pg_hba.conf 权限语法请自行参考官方资料

修改了 pgsql 的密码 和 pg_hba.conf 设定后,必须重新启动 postgresql

$ su -
$ /usr/local/etc/rc.d/postgresql restart
$ exit

成功了,现在登入 postgresql 必须要输入密码

6. FreeBSD postgresql periodic script
FreeBSD port 会安装了一个 periodic 在 /usr/local/etc/periodic/daily/502.pgsql
这个 periodic script 提供两个服务:

i)每天定时做 vacuumdb 一次
ii)每天定时做 pg_dump 一次

想启动这功能 要修改 /etc/periodic.conf
或 /etc/periodic.conf.local 二者选一,内容一样

$su -
$vi /etc/periodic.conf
$ exit

================
档案中增加以下内容
—————
# 502.pgsql
daily_pgsql_backup_enable=”YES” # do backup
daily_pgsql_vacuum_enable=”YES” # do vacuum

如果你只想做 vacuum 不做 pg_dump,内容如下
===============
档案中增加以下内容
—————
# 502.pgsql
daily_pgsql_backup_enable=”NO” # do backup
daily_pgsql_vacuum_enable=”YES” # do vacuum

由于 postgresql 已改变为加密登入,使用 periodic script 必需提供 password 给 periodic,否则会执行 vacuumdb pg_dump,失败。方法是建立一个密码 .pgpass 档案把 password 传给 periodic

.pgpass 档案必需放置在 postgresql daemon 的 $HOME 才可以配合 periodic 顺利执行

检察 postgresql 的 $HOME 在那里

$su -
$more /etc/passwd | grep PostgreSQL
$ exit

==============
我的查询结果如下
————————
pgsql:*:70:70::0:0:PostgreSQL Daemon:/usr/local/pgsql:/bin/sh

表示 postgresql 的 $HOME 在 /usr/local/pgsql 这里
因此把 .pgpass 放置在 /usr/local/pgsql 成为

/usr/local/pgsql/.pgpass

步骤如下:

$ su -
$ cd /usr/local/pgsql
$ touch .pgpass
$ chmod 600 .pgpass
$ chown pgsql:pgsql .pgpass
$ exit

修改 .pgpass 内容

$ su -
$ vi /usr/local/pgsql/.pgpass
$ exit

==============================================
.pgpass 格式有规范的,官方说明请看
http://www.postgresql.org/docs/8.4/interactive/libpq-pgpass.html
——————————————————————————
localhost:5432:*:pgsql:你的pgsql密码

最后一步,是修改 /usr/local/etc/periodic/daily/502.pgsql 使它懂得配对
正确的用户名和密码

$ su -
$ vi /usr/local/etc/periodic/daily/502.pgsql
$ exit

==================
把其中的两行参数修改
——————————

<原本是 >
daily_pgsql_vacuum_args=”-z”
daily_pgsql_pgdump_args=”-b -F c”

<修改为 >
daily_pgsql_vacuum_args=”-h localhost -U pgsql -z”
daily_pgsql_pgdump_args=”-h localhost -U pgsql -b -F c”

基本安装完成


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 前言对于从事技术的人员来说ajax是这好东西,都会使用,而且乐于使用。但对于新手,开发一个ajax实例,还有是难度的,必竟对于他们这是新东西。leo开发一个简单的ajax实例,用的是 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 有关phpfgetss()函数的文章推荐10篇
    有关phpfgetss()函数的文章推荐10篇:了解如何使用PHP的各种文件函数。查看诸如fopen、fclose和feof之类的基本文件函数;了解诸如fgets、fgetss和f ... [详细]
author-avatar
mobiledu2502872825
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有