30.14. 配置和创建 Webmail IMP SQL 数据库

我们现在必须配置数据库,以便能够将 Webmail IMPSQL 数据库一起使用。更简单的方法是使用位于以下目录下的预定义脚本/home/httpd/horde/imp/config/scripts/子目录。对于 PostgreSQL 支持,请按照以下简单步骤操作。

  1. 首先,我们必须编辑脚本文件pgsql_create.sql与 PostgreSQL 相关,位于以下目录下的/home/httpd/horde/imp/config/scripts子目录,并将其默认的运行用户名从httpd更改为www.
                GRANT SELECT, INSERT, UPDATE ON imp_pref, imp_addr TO nobody;
              
    要读取
                GRANT SELECT, INSERT, UPDATE ON imp_pref, imp_addr TO www;
              

  2. 现在,我们必须为 Apache 定义名为www在我们的 PostgreSQL 数据库中,以便能够使用此用户名创建 Webmail IMP 数据库。要定义名为 httpd 的用户名www在您的数据库中,请运行 PostgreSQL 的 createuser 实用程序
                [root@deep ] /# su postgres
                [postgres@deep /]$ createuser
              
    
                Enter name of user to add ---> www
                Enter user's postgres ID or RETURN to use unix user ID: 80 -[Press Enter]
                Is user "www" allowed to create databases (y/n) y
                Is user "www" a superuser? (y/n) n
                createuser: www was successfully added
              

  3. 一旦 httpd 用户www已包含在 PostgreSQL 中,请以 PostgreSQL 数据库运行的用户身份登录,在本例中是postgres并插入与 PostgreSQL 相关的小脚本,以在 PostgreSQL 中自动创建 Webmail IMP 数据库。要在 PostgreSQL 中自动创建 Webmail IMP 数据库,请使用以下命令
                [root@deep ] /# cd /home/httpd/horde/imp/config/scripts/
                [root@deep scripts]# su postgres
                [postgres@deep ] /scripts$ psql template1 < pgsql_create.sql
              
    
                // IMP database creation script for postgreSQL
                // Author: barce@lines.edu
                // Date:   Aug-29-1998
                // Notes: replace "nobody" with yours httpd username
                // Run using:  psql template1 < pgsql_create.sql
    
                CREATE DATABASE horde;
                CREATEDB
    
                \connect horde
                connecting to new database: horde
    
                CREATE TABLE imp_pref (
                username        	text,
                sig             		text,
                fullname        	text,
                replyto         		text,
                lang            		varchar(30)
                );
                CREATE
    
                CREATE TABLE imp_addr (
                username        	text,
                address         	text,
                nickname        	text,
                fullname        	text
                );
                CREATE
    
    
                GRANT SELECT, INSERT, UPDATE ON imp_pref, imp_addr TO www;
                CHANGE
                EOF
              

  4. 我们必须重启 PostgreSQL 服务器以使更改生效
                [root@deep ] /# /etc/rc.d/init.d/postgresql restart
              
    
                Stopping postgresql service:                               [  OK  ]
                Checking postgresql installation: looks good!
                Starting postgresql service: postmaster [13474]
              

  5. 复制并重命名文件/home/httpd/horde/phplib/horde_phplib.inc更改为/home/httpd/php/local.inc,然后编辑新的local.inc文件,它是您的 phplib 配置文件,其中包含定义 phplib 行为的设置,并按照其说明定义您要取消注释的存储容器。

    1.                 [root@deep ] /# cp /home/httpd/horde/phplib/horde_phplib.inc /home/httpd/php/local.inc
                    
      
                      cp: overwrite `/home/httpd/php/local.inc'? y
                      

    2. 编辑local.inc文件,vi/home/httpd/php/local.inc,然后取消注释并设置以下行以将 SQL 定义为您的默认数据库
                      /* To use an SQL database, uncomment and edit the following: */
                      class HordeDB extends DB_Sql {
                      var $Host = 'localhost';
                      var $Database = 'horde';
                      var $User = 'www';
                      var $Password = 'some-password';
                      var $Port = '5432';
      
                      function halt($msg) {
                      printf("<b>Database error (HordeDB):</b> %s<br>\n", $msg);
                      }
                      }
      
                      class HordeCT extends CT_Sql {
                      var $database_class = 'HordeDB';         // Which database class to use...
                      var $database_table = 'active_sessions'; // and find our data in this table.
                      }
                    
      不要忘记在此文件中取消注释您要用于 Webmail IMP 的存储容器类型。请记住只取消注释一种类型。在我们的例子中,我们选择使用 SQL。此外,您必须为 SQL 数据库设置的参数是var $User =, var $Password =,以及var $Port =var $User =对应于您的 httpd 用户名,在本例中是www, var $Password =对应于用户密码www您在 PostgreSQL 中定义的,以及var $Port =是用于连接到您的 SQL 数据库的 IP 端口号。

  6. 最后编辑/home/httpd/php/prepend.php3文件并指定您的默认数据库类型。编辑prepend.php3文件,vi/home/httpd/php/prepend.php3然后更改以下行以将 PostgreSQL 定义为您的数据库类型
                require($_PHPLIB["libdir"] . "db_mysql.inc");
              
    要读取
                require($_PHPLIB["libdir"] . "db_pgsql.inc");