将通达OA2009转移至LNMP平台

LNMP=Linux+Nginx+Mysql+PHP(本文是部署在Debian5.0.2平台上)

Nginx 的中文维基:http://wiki.nginx.org/NginxChs

通达OA:http://www.tongda2000.com/download/index.php

具体如何搭建LNMP平台请参考此文:Nginx 0.7.x + PHP 5.2.10(FastCGI)搭建胜过Apache十倍的Web服务器(第5版)

下面主要记录如何将通达OA2009转移至LNMP平台,以及在Linux下的一些注意事项

1、去通达官网下载最新的OA2009安装包,找一台win主机一路next安装好后,停掉除office_task外的其它服务,在把webroot目录打包之前,记得先把\general\mytable目录下的所有以中文命名的模块全部改为英文,这会解决登录OA后桌面不显示的问题,在Apache下则没有这个问题。

2、将打包的webroot在Debian中解压,我是直接放到/home/wwwroot目录下了,注意设置好update、inc、logs和attachment目录的可写权限。

3、在win下将OA数据库整个导出,再在debian中导入,这里需要将所有的表名由小写转为大写,将下面这段代码存为table.php并放到wwwroot目录下运行之即可

<?
 include_once(“inc/conn.php”);
 $connection = OpenConnection();
 $FILE_CONTENT=””;
 $TABLE_ARRAY = mysql_list_tables($MYSQL_DB);
  while($TABLE = mysql_fetch_row($TABLE_ARRAY))
    {
       $TABLE_NAME = $TABLE[0];
       $TABLE_NAME1 = strtoupper($TABLE_NAME);
       $query=”ALTER TABLE $TABLE_NAME RENAME $TABLE_NAME1;”;
       echo $query.”<br>”;
       exequery($connection,$query);
     }
 echo “OK!”;
?>

4、修改inc/oa_config.php,有两处

//– 附件路径配置(Windows) —
//$ATTACH_PATH=$ROOT_PATH.”attachment/”;
//$ATTACH_PATH2=realpath($ROOT_PATH.”../”).”/attach/”;
 
//– 附件路径配置(Unix/Linux) —
//$ATTACH_PATH=”/myoa/attachment/”;
//$ATTACH_PATH2=”/myoa/attach/”;
$ATTACH_PATH=”/home/wwwroot/attachment/”;
$ATTACH_PATH2=”/home/wwwroot/attach/”;

//连接OfficeTask服务的地址和端口
$MYOA_TASK_ADDR = “192.168.1.8”; //这里填运行office_task的那台机子的IP
$MYOA_TASK_PORT = 2397;

另外还得在win主机上修改office_task的“定时任务关联地址”及“mysql主机”为debian的IP,并确保office_task能够正常连接到mysql数据库。至此好像是已经完成了,目前运行下来所有功能均正常使用,就天气预报没法显示,一直提示:“error:解析天气数据失败”,不知道是哪里的问题了。

oa2009

 

5、一些注意事项

php.ini中要设置include_path=”.:/home/wwwroot”,要不然登录后会报Failed opening ‘inc/auth.php’ for inclusion (include_path…..之类的错误

编译PHP时,在make之前特别注意,应该编辑Makefile文件 在 EXTRA_LIBS = ….. -lcrypt 这一行加上 -liconv 否则就会发生undefined reference to `libiconv_open’等一系列错误。

修改/usr/local/nginx/conf/nginx.conf 文件,在设定的虚拟主机字段内加上一句:charset gb2312;否则OA有个别页面会乱码。

============2009.9.27更新=========

天气及资讯问题圆满得到解决,原来是gbk编码的问题,看来通达是得考虑全面转为utf-8编码了,毕竟兼容性更好啊。

转换linux系统默认编码:vi /etc/sysconfig/i18n

将内容更改为:

LANG=”zh_CN.GB18030″
LANGUAGE=”zh_CN.GB18030:zh_CN.GB2312:zh_CN”
SUPPORTED=”zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en”
SYSFONT=”lat0-sun16″

编辑php.ini:vi /usr/local/php/etc/php.ini,将default_charset 改为default_charset = “gb2312″,重启机器后,再登陆OA,右上角久违的天气预报终于正常显示了,打开今日资讯也不再显示一块白板了。

我的php编译参数

./configure –prefix=/usr/local/php –with-config-file-path=/usr/local/php/etc –with-mysql –with-mysqli –with-iconv-dir=/usr/local –with-freetype-dir –with-jpeg-dir –with-png-dir –with-zlib –with-libxml-dir=/usr –enable-xml –disable-rpath –enable-discard-path –enable-safe-mode –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –with-curl –with-curlwrappers –enable-mbregex –enable-fastcgi –enable-fpm –enable-force-cgi-redirect –enable-mbstring –with-mcrypt –with-gd –enable-gd-native-ttf –with-openssl –with-mhash –enable-pcntl –enable-sockets –with-xmlrpc –enable-zip –enable-ftp –enable-exif –without-pear
make ZEND_EXTRA_LIBS=’-liconv’
make install