【原】如何构建图度云办公平台

图度云办公平台:图度工作管理系统首创将论坛、邮箱、即时通讯三大功能融合为一体。为企业、项目组以及任何需要协同工作的大中小型工作团体等提供易操作、可视化、安全的工作管理服务。图度工作管理系统的任务管理模式便于管理者多维度地对任务进行监控跟踪、偏差分析。包括图度工作管理平台和图度talk。——来源“百度百科”

在网上搜了好久,没有搜到一个完整的安装文档,官方提供的文档,也只是大体步骤(当然除了centos5.X版本)。自己构建的时候,出现各种问题,在此写下来,给大家提个醒。

架设环境:RHEL5.4,LNMP

下载需要的包:

memcache-3.0.8.tgz

libpng-1.2.8-config.tar.gz

eaccelerator-eaccelerator-42067ac.tar.gz

freetype-2.1.10.tar.gz

gd-2.0.33.tar.gz

httpsqs-1.7.tar.gz

jpegsrc.v6b.tar

libevent-2.0.12-stable.tar.gz

nginx-1.5.8.tar.gz

php-5.3.20.tar.bz2

tokyocabinet-1.4.47.tar.gz

zlib-1.2.8.tar.gz

tudu-web-master.zip

以上均是源码安装包,下载方式就不一一列出了,百度我在百度盘上传了,地址如下:http://pan.baidu.com/s/1kTE2MlL(密码:dcch)

当然,我们还缺少#yum install mysql mysql-server mysql-devel这步,没有mysql怎么玩 – –

好,我们开始:—————————————分割线—————————————

第一、#yum remove php  (建议卸载php,否则后面源码安装的时候,容易犯一个错误)

第二、创建一个mysql用户以及数据库,将用户赋予权限。

#mysql -u root -p

mysql>insert into mysql.user(Host,User,Password) values (‘localhost’,’tudu’,password(‘tudu’));

    mysql>flush privileges;
    mysql>create database tudu_db;
    mysql>grant all privileges on tudu_db.* to tudu@localhost identified by ‘tudu’;
    mysql>flush privileges;

第三、进入tudu-web-master/install/sql目录,依次执行:

#mysql -u root -p tudu_db < 1.sql

#mysql -u root -p tudu_db < 2.sql

………………

#mysql -u root -p tudu_db < 6.sql

注意:第6个sql文件,很大,时间很长。

第四、编译安装jpeg-6b,编译如下:

    #./configure –-prefix=/usr/local/jpeg6 –enable-shared –enable-static
    #make && make install
注意:这一步可能出现很多问题,那么请执行以下操作后,重新编译安装。
    #mkdir /usr/local/jpeg6
    #mkdir /usr/local/jpeg6/lib
    #mkdir /usr/local/jpeg6/include
    #make install-lib
    #make install
    #mkdir /usr/local/jpeg6/bin
    #mkdir /usr/local/jpeg6/man
    #mkdir /usr/local/jpeg6/man/man1
第五、编译安装freetype:
    #./configure –prefix=/usr/local/freetype
    #make && make install
第六、编译安装zlib:
    #./configure
    #make && make install
第七、编译安装libpng:
    #./configure –prefix=/usr/local/libpng
    #make && make install
第八、编译安装fontconfig以及GD库:
    进入fontconfig目录:#./configure –with-freetype-config=/usr/local/freetype/bin/freetype-config –prefix=/usr/local/fontconfig
    进入GD目录:#./configure –prefix=/usr/local/gd –with-jpeg=/usr/local/jpeg6 –with-png-dir=/usr/local/libpng –with-zlib –with-freetype=/usr/local/modules/freetype –with-fontconfig=/usr/local/fontconfig
    #make && make install
第九、编译安装PHP:
    #./configure –prefix=/usr/local/php –enable-xml –with-bz2 –enable-zip –enable-fpm –with-openssl –with-mysql –with-gd –with-jpeg-dir=/usr/local/jpeg6 –enable-gd-native-ttf –enable-pdo –with-pdo-mysql –with-gd=/usr/local/gd –with-freetype-dir=/usr/local/freetype/ –with-zlib –with-curl –enable-force-cgi-redirect –enable-xml –enable-safe-mode –with-config-file-path=/usr/local/php/etc –enable-mbstring
make && make install
在此列出几个我编译出现的几个问题:
     ①configure: error: mysql configure failed.通过查看config.log日志,有以下几行:
/usr/bin/ld: skipping incompatible /usr/lib/mysql/libmysqlclient.a when searching for -lmysqlclient

/usr/bin/ld: cannot find -lmysqlclient

collect2: ld returned 1 exit status

configure: failed program was:

#line 59854 “configure”

#include “confdefs.h”

    解决方式:#export LDFLAGS=-L/usr/lib64/mysql 或者修改Makefile文件,-L/usr/lib/mysql改为-L/usr/lib64/mysql即可。
    ②Cannot find MySQL header files.
    解决方式:路径出了问题,因为刚开始YUM安装mysql-devel了,所以执行#find / -name mysql.h查找mysql.h的位置,然后在编译PHP的时候,参数–with-mysql=mysql.h路径
    ③In file included from /kk/php-5.4.0/ext/gd/gd.c:103:
    ……省略

查看后,应该是没有data成员。

解决方式:vim /usr/local/gd/include/gd.io.h

在结构体gdIOCtx中添加“void *data;”即可

第十、编译安装libevent:

#./configure –prefix=/usr/local/libevent-2.0.12-stable/

#make && make install

第十一、编译安装memcache:

切换到memcache解压目录,未发现有configure文件,在当前目录下执行/usr/local/php/bin/phpize生成configure文件。

#./configure –with-php-config=/usr/local/php/bin/php-config –enable-memcache

#make && make install

安装完成后,记住Installing shared extensions:后面的路径。

第十二、编译安装eaccelerator:

#./configure –enable-eaccelerator –with-php-config=/usr/local/php/bin/php-config

#make && make install

安装完成后,再记住Installing shared extensions:后面的路径。

第十三、通过参考tudu-web-master/install/conf/php.ini文件,修改/usr/local/php/etc/php.ini文件(也可以完全复制过去),修改/usr/local/php/etc/php.ini下的extension_dir=第十步记下的路径;zend_extension=第十一步记下的路径。

第十四、进入/usr/local/php/bin/目录,执行./php -m查看模块,查看memcache以及mbstring模块是否被支持。

    注意:若直接执行php -m,由于未修改环境变量,将会显示之前YUM安装的php信息,二者不同。

第十五、修改tudu-web-master/install/conf/php-fpm.conf文件,主要修改[www]组内信息,如:web服务执行的用户以及组;完成后,拷贝到/usr/local/php/etc/目录下。

第十六、编译安装nginx文件:

#./configure –prefix=/usr/local/nginx

#make && nake install

第十七、进入tudu-web-master/install/conf目录,通过nginx.conf以及nginx-tudu.conf配置文件,修改/usr/local/nginx/conf/nginx.conf,根据需求更改里面的内容,为了方便向下叙述,user www  www,name_server要设置。完成后,可以执行/usr/local/nginx/sbin/nginx进行测试。(若出现问题,则请把tudu-web-master下的所有内容拷贝到在nginx.conf文件中指定的工作目录即可。)

第十八、进入/usr/local/php/,执行mkdir logs;然后进入sbin目录,执行./php-fpm。

第十九、chown www:www  NGINX工作目录,输入域名进行访问测试。下一步,进行环境检查。

第二十、编译安装httpsqs服务:

因为httpsqs服务依赖于libevent和tokyocabinet,而libevent在第十步的时候安装了,所以在此只安装tokyocabinet,编译方式如下:

#./configure –prefix=/usr/local/tokyocabinet-1.4.47/

注意:在32位Linux操作系统上编译tokyocabinet,使用#./configure –enable-off64代替#./configure,可以使数据库文件突破2GB的限制。如:#./configure –enable-off64 –prefix=/usr/local/tokyocabinet-1.4.47/

make && make install

接下来配置httpsqs服务,首先#cd httpsqs-1.7/

make && make install

此时,#httpsqs -h 会返回帮助信息。解释如下:

-l 监听的IP地址,默认值为 0.0.0.0

-p 监听的TCP端口(默认值:1218)

-x 数据库目录,目录不存在会自动创建(例如:/opt/httpsqs/data)

-t HTTP请求的超时时间(默认值:3)

-s 同步内存缓冲区内容到磁盘的间隔秒数(默认值:5)

-c 内存中缓存的最大非叶子节点数(默认值:1024)

-m 数据库内存缓存大小,单位:MB(默认值:100)

-i 保存进程PID到文件中(默认值:/tmp/httpsqs.pid)

-a 访问HTTPSQS的验证密码(例如:mypass123)

-d 以守护进程运行

-h 显示这个帮助

此时,我们需要执行:

#httpsqs -l 192.168.196.80 -p 1218 -x /var/httpsqs_data -m 300 -i /var/run/httpsqs.pid -d

第二十一、编译安装memcached服务:

#./configure –prefix=/usr/local/memcached

#make && make install

安装完成后,建立一个memcached的缓存目录,如:#mkdir /var/run/memcached

执行#/usr/local/memcached/bin/memcached -p 12000 -l 192.168.196.80 -d -u root -P /var/run/memcached/memcached.pid -m 512 -c 1024

几个参数的解释如下:

-p memcached监听的TCP端口

-l 监听的ip地址,192.168.196.80是我服务器的IP地址,如果你需要多个服务器都能够读取这台memcached的缓存数据,那么就必须设定这个ip

-d 以daemon方式运行,将程序放入后台,守护程序

-u memcached的运行用户,我设定的是root

-P memcached的pid文件路径

-m memcached可以使用的最大内存数量

-c memcached同时可以接受的最大的连接数

如果你希望以socket方式来访问memcached,那么在启动的时候就必须去掉 -l和-p参数,并加上-s参数:

-s memcached的socket文件路径

第二十二、添加第二十步和第二十一步执行的命令于/etc/rc.local下,否则下次重启计算机后,memcached以及httpsqs服务未启动。

第二十三、环境检查通过后,填写httpsqs以及memcached的端口和IP地址以及MySQL数据库信息,开始使用图度。

———————————————基本的图度架设已结束,接下来,汇总了一些memcached、httpsqs以及eaccelerator等介绍————————————–

一、关于httpsqs:

HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key/Value 数据库来做数据的持久化存储。

  • 非常简单,基于 HTTP GET/POST 协议。PHP、Java、Perl、Shell、Python、Ruby等支持HTTP协议的编程语言均可调用。
  • 非常快速,入队列、出队列速度超过10000次/秒。
  • 高并发,支持上万的并发连接,C10K不成问题。
  • 支持多队列。
  • 单个队列支持的最大队列数量高达10亿条。
  • 低内存消耗,海量数据存储,存储几十GB的数据只需不到100MB的物理内存缓冲区。
  • 可以在不停止服务的情况下便捷地修改单个队列的最大队列数量。
  • 可以实时查看队列状态(入队列位置、出队列位置、未读队列数量、最大队列数量)。
  • 可以查看指定队列ID(队列点)的内容,包括未出、已出的队列内容。
  • 查看队列内容时,支持多字符集编码。
  • 源代码不超过800行,适合二次开发。

具体信息,推荐在此查看:http://blog.s135.com/httpsqs/7/1/

二、关于memcache:

memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等等。简单来说,就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。memcached是以守护程序方式运行于一个或者多个服务器中,随时会接收客户端的连接和操作。

三、关于eaccelerator:

eaccelerator是一个自由开源的php加速器,优化和动态内容缓存,提高了php脚本的缓存性能,使得php脚本在编译的状态下,对服务器的开销几乎完全消除。它还有对脚本起优化作用,以加快其执行效率。使php程序代码执行效率提高1-10倍。

四、关于tokyocabinet:

Tokyo Cabinet是一个DBM的实现。这里的数据库由一些列key-value对的记录构成。key和value都可以是任意长度的字节序。