当前位置:Linux教程 - Apache - solaris7+php4.0.2+gd1.8.3+sybase12.0+apache1.3 安装手册

solaris7+php4.0.2+gd1.8.3+sybase12.0+apache1.3 安装手册



         作者:yurt(蒙古包)
    这份手册是我在Solaris7中文版环境下安装配置PHP和SYBASE数据库的心得体会,
    整个安装过程总共花费了11天(从11月12号到22号)时间,可谓费尽周折。安装
    期间我拜访了国内外无数的网站、BBS、MAILLIST和NEWSGROUP,请教过PHP函数
    的作者和SYBASE公司的工程师。在众多热心人的帮助下,我终于把它搞定了,呵
    呵。既然是大家的成果,我就不敢一人独享,所以把它写出来,来帮助那些需要
    帮助的人。如果我写的这篇文章帮您解决了令您头疼的问题,能不能给我发一张
    贺卡,我一定会和您一样高兴的^Y^。
    我的E-Mail是 yurt@163.com , yurt@21cn.com

    =======================所需软件=======================
    sybase 12.0 for solaris 光盘介质
    (下列软件下载地点http://www.sunfreeware.com/programlistsparc7.html )
    gzip-1.3-sol7-sparc-local.gz (必须)
    gcc-2.8.1-sol7-sparc-local.gz (必须)
    libstdc++-2.8.1.1-sol7-sparc-local.gz (必须)
    make-3.78.1-sol7-sparc-local.gz (可不安装)
    gd-1.8.3.tar.gz (可选。如不安装GD库,不需下载和GD相关的软件包)
    php-4.0.2.tar.gz (在http://www.php.net/downloads.php下载)
    apache_1.3.14.tar.gz (在http://httpd.apache.org/dist/ 下载)
    zlib-1.1.3-sol7-sparc-local.gz (安装GD库需要)
    jpeg-6b-sol7-sparc-local.gz (和GD库相关)
    libpng-1.0.2-sol7-sparc-local.gz (安装GD库需要)
    xpm-3.4k-sol7-sparc-local.gz (和GD库相关)
    把所有文件放在/export/home目录下。
    另外再建一个目录,用于存放编译好的二进制文件:
    #mkdir /opt/soft
    -------------------------------------------------
    ******************软件解压及预安装***********************
    由于solaris7的tar不认识-z选项,可先用WINZIP将gzip-1.3-sol7-sparc-local.gz
    解压成gzip-1.3-sol7-sparc-local再ftp到/export/home目录下进行安装。
    #cd /export/home
    #pkgadd -d gzip-1.3-sol7-sparc-local
    注意pkgadd在安装时会用到/var/tmp存放临时文件,应保证该分区有足够空间;
    如果空间不够,可按以下操作:
    #mv /var/tmp /var/tmp_old
    #ln -s /tmp /var (将/var/tmp link到/tmp)
    解压并预安装部分软件:
    #gzip -d gcc-2.8.1-sol7-sparc-local.gz
    #gzip -d libstdc++-2.8.1.1-sol7-sparc-local.gz
    #gzip -d make-3.78.1-sol7-sparc-local.gz
    #pkgadd -d gcc-2.8.1-sol7-sparc-local
    #pkgadd -d libstdc++-2.8.1.1-sol7-sparc-local
    #pkgadd -d make-3.78.1-sol7-sparc-local
    #pkgadd -d zlib-1.1.3-sol7-sparc-local
    #pkgadd -d jpeg-6b-sol7-sparc-local
    #pkgadd -d libpng-1.0.2-sol7-sparc-local
    #pkgadd -d xpm-3.4k-sol7-sparc-local
    #gzip -dc gd-1.8.3.tar.gz |tar xvf - (将会建立目录gd-1.8.3)
    #gzip -dc php-4.0.2.tar.gz |tar xvf - (将会建立目录php-4.0.2)
    #gzip -dc apache_1.3.14.tar.gz |tar xvf - (将会建立目录apache_1.3.14)
    然后设置好路径(注意前后顺序)
    #PATH=/usr/local/bin:/usr/bin:/usr/sbin:/usr/ucb:/usr/ccs/bin
    #export PATH
    至此,编译PHP所需的系统环境已准备妥当。
    -------------------------------------------------
    ===============安装sybase 12.0并启动SQL SERVER==================
    此处略去sybase12.0安装配置过程,sybase12.0安装在/opt/sybase12目录下。
    在进行以下步骤前,应保证sybase已正常启动运行。
    -------------------------------------------------
    ********************* 安装GD库 *********************
    #cd /export/home/gd-1.8.3
    #vi Makefile
    搜索X11R6,将全部的X11R6替换为X,存盘退出。
    #make
    #make install
    GD库安装完毕。
    如果编译过程出现错误,一定要先
    #make clean
    然后再重新进行编译(以下同)。
    -------------------------------------------------
    XXXXXXXXXXXXXXXXXXXXXX 安装PHP4.02 XXXXXXXXXXXXXXXXXXXXXXX
    #cd /export/home/apache_1.3.14
    #./configure --prefix=/opt/soft/apache
    (指定apache编译后存放在/opt/soft/apache目录下)
    #cd ../php-4.0.2 (进入php4.0.2源代码目录)
    #./configure --prefix=/opt/soft/php4 --with-apache=../apache_1.3.14
    --with-mysql=no --with-sybase-ct=/opt/sybase12/OCS-12_0 -with-gd
    -with-zlib-dir -with-jpeg-dir -with-png-dir -with-xpm-dir
    --enable-track-vars
    #make (编译)
    #make install (安装)
    php4.0.2安装完毕
    如果编译出错,仔细查看出错信息。
    如果提示没有sybXXX.h之类的文件,可到
    http://www.sybase.com.cn/htm/cpjs/r_cpbdb_c.htm去下载Solaris平台相应版
    本的ebf文件,然后展开到sybase相应目录下再进行编译,如果没有符合的版本,
    找略高版本的代替。
    -------------------------------------------------
    ++++++++++++++++++ 安装Apache 1.3.14+++++++++++++++++++++
    #cd /export/home/apache_1.3.14
    #./configure --prefix=/opt/soft/apache
    --activate-module=src/modules/php4/libphp4.a
    #make
    #make install

    Apache 1.3.14完装完毕

    #cd ../php-4.0.2 (进入php4.0.2源代码目录)
    #cp php.ini-dist /usr/local/lib/php.ini (拷贝PHP配置文件到指定目录)
    -------------------------------------------------
    ####################### 修改 httpd.conf ########################
    #cd /opt/soft/apache/conf
    #vi httpd.conf
    去掉\"AddType application/x-httpd-php .php\" 前的\"#\"号,此时php就可以用了。
    去掉\"ServerName XXXXX\"前的\"#\"号,此时Apache就可以顺利启动了。
    查找index.html所在的行,在index.html后面增加\"index.php\"(不包含双引号,且
    index.html和index.php之间用空格隔开),此时Apache就可以按先index.html后
    index.php的顺序查找文件了。
    -------------------------------------------------
    ********************* 修改PHP配置文件 *********************
    #vi /usr/local/lib/php.ini
    搜索default_charset,使其有效,并将其值改为 \"gb2312\"。
    搜索sybase.interfaces_file,使其有效,并将其值改为\"/opt/sybase12/interfaces\"。
    搜索sybct.min_server_severity,将其值改为\"50\"。
    搜索sybct.min_client_severity,将其值改为\"50\"。
    注意:修改完毕重起Apache服务器时,执行以下2个步骤:
    #/opt/soft/apache/bin/apachectl stop
    等几秒钟后再执行
    #/opt/soft/apache/bin/apachectl start
    不要使用#kill -HUP 或#/opt/soft/apache/bin/apachectl restart重起
    服务器。另外,据报告Php4.0.3pl1有Apache服务器不读sybct.min_XXXXX_severity的
    bug,所以本文编译的是PHP4.0.2的正式发布版。
    -------------------------------------------------
    ********************* 修改SYBASE12配置文件 *********************
    #vi /opt/sybase12/interfaces
    其内容看起来如下面的样子:
    SYBASE12
    master tli tcp /dev/tcp x00021e84c0a800030000000000000000
    query tli tcp /dev/tcp x00021e84c0a800030000000000000000

    x00021e84c0a800030000000000000000的含义为:
    x 表示十六进制
    0002 表示以太网(在Dec等机器上可能由于字节顺序不同而写为0200)
    1e84 表示SYBASE12监听的服务端口号(十进制为7812)
    c0a80003 表示SYBASE12的服务器IP地址(点分法表示为192.168.0.3)
    -------------------------------------------------
    接下来修改客户端默认字符集,使其和SYBASE12服务器的字符集一致:
    #vi /opt/sybase12/locales/locales.dat
    找到sun_svr4所在的段,找到default所在的行:
    locale = default, us_english, iso_1
    将其改为:
    locale = default, us_english, cp850
    如果你的服务器不是使用cp850字符集,请改为相应的字符集。本环境中SYBASE12和
    客户端均使用cp850字符集。服务端和客户端字符集不匹配会出现乱码(注意这里所说
    的客户端是指Apache服务器,而不是浏览器)。
    然后在sybase12环境下使用
    #isql -SSYBASE12 -Usa -P -Jcp850和
    #isql -Usa -P测试字符集是否匹配。注意如果使用sybase client for Windows进行汉
    字插/录入,注意当时客户端使用的字符集。
    我在SYBASE字符集上花费了一整天时间才搞定,主要是没有资料可供参考。PHP的网站
    上说sybase_connect()有第四个参数可以设定Client的字符集,
    调用方法为sybase_connect(ServerName,UserName,Password[,CharSet]),但是无论我
    怎么试都提示\"参数数目不正确\",经过和该函数的作者联系得知:
    该函数只支持sybase-DB,不支持sybase-CT。
    -------------------------------------------------
    ********************* 启动Apache服务器 *********************
    如果要让Apache监听80端口,必须以root启动httpd服务。
    首先修改环境变量,使root具备sybase启动需要的环境:
    #cd
    #vi .profile
    在export PATH后面加入以下一行
    . /opt/sybase12/SYBASE.sh
    存盘退出。
    #exit
    以root重新登录,执行
    #/opt/soft/apache/bin/apachectl start (启动Apache服务器)
    然后在/opt/soft/apache/htdocs目录下建立一个文件index.php
    内容为:

    存盘退出。
    #chown nobody index.php
    #chgrp nobody index.php
    打这个网址测试一下:http://ServerName
    (ServerName即为httpd.conf中的ServerName)。
    -------------------------------------------------
    ********************* 测试sybase数据库 *********************
    以webmaster的权限登录,编辑一个文件/opt/soft/apache/htdocs/test.php进行测试,
    内容如下:
    $servername = \"SYBASE12\";
    $username = \"sa\";
    $password = \"\";
    $table = \"chat\";
    $dbName = \"www\";
    sybase_min_server_severity(50);
    $dbHandle = sybase_connect($servername, $username, $password)
    or die(\"连接数据库失败\");
    sybase_select_db(\"$dbName\") or die( \"在服务器上找不到相应数据库。\");
    $query = sprintf(\"select * from %s\",$table);
    $result = sybase_query($query);
    if(!$result)die(\"查询数据库失败!\");
    while($field = sybase_fetch_array($result))
    {
    printf(\"Database:%s
    \",\"www\");
    printf(\"Table:%s
    \",\"chat\");
    printf(\"Name:%s
    \",$field[name]);
    printf(\"Date:%s
    \",$field[date]);
    printf(\"Msg:%s

    \",$field[msg]);
    }
    sybase_close($dbHandle);

    //测试非数据库环境下的中文显示。
    echo \"蒙古包的缕缕炊烟,轻轻地飘向蓝天,茫茫的绿草地,是我生长的摇篮。
    \";
    ?>
    数据库的结构如下:
    CREATE TABLE dbo.chat (
    name varchar(15) NULL,
    date datetime NULL,
    msg varchar(200) NULL
    )
    -------------------------------------------------
    ********************* 测试GD库 *********************
    以webmaster的权限登录,编辑一个文件/opt/soft/apache/htdocs/gd.php进行测试,
    内容如下:
    Header(\"Content-type: image/png\");
    $im = imagecreate(400,30);
    $black = ImageColorAllocate($im, 0,0,0);
    $white = ImageColorAllocate($im, 255,255,255);
    imageline($im, 1, 1, 350, 25, $black);
    imagearc($im, 200, 15, 20, 20, 35, 190, $white);
    imagestring($im, 5, 4, 10, \"Graph TEST!!\", $white);
    Imagepng($im);
    ImageDestroy($im);
    ?>
    1.6.2 版以前的 GD库有支持 GIF 格式的功能,但因为 GIF 格式使用的 LZW 演算法牵
    涉到 Unisys 的专利权,因此在1.6.2版之后的 GD 库不再支持 GIF 的格式。本文使用
    的是1.8.3版的GD库,因此对GIF格式不支持。

    安装配置SYBASE12.0不在本文讨论范围之内,请参考相关文章。
    ======================== The End =======================


    发布人:Crystal 来自:悟思通网站