分类 Linux 下的文章

写个程序,需要用到ldap的功能,发现报错,虽然php.ini打开了ldap的模块,但phpinfo中没有发现ldap扩展
搜索一番,发现,win下面还需要apache强制加载两个依赖库libeay32.dll和ssleay32.dll,
修改apache的配置文件,强制加载着两个扩展:

LoadFile "C:/PHP/ext/ssleay32.dll"
LoadFile "C:/PHP/ext/libeay32.dll"

重启即可。

GLPI是非常优秀开源IT管理系统,包括资产统计、helpdesk等等功能,配合OCSNG还可以实现自动采集客户端软硬件信息。
虽然这套软件也有Windows版的,但Linux下的更加稳定,推荐在Linux上安装,本人之前写过一篇安装文章,那个时候为了收集中日文的计算机信息,还需要第三方的程序和修改glpi代码才能实现,现在这两个软件官方原生已经支持UTF8,不需要我们折腾了,不过安装过程依然不那么简单,呵呵
好了,先安装基本的Linux系统,本例使用的是CentOS6.0,GLPI版本0.84.5,OCSNG版本是2.1.1。

这里说一下默认光盘安装的CentOS6,有几个需要注意的地方,第一建议关闭防火墙和selinux,第二,配制好网卡,默认情况下,网卡开机是不启用的,需要修改配置文件

vi /etc/sysconfig/network-scripts/ifcfg-eth0
把
ONBOOT=no
改为
ONBOOT=yes

然后开始安装基础软件httpd,php,mysql,还需要下载一些软件

 glpi-0.84.6.tar.gz
 json-1.2.1.tar
 OCSNG_UNIX_SERVER-2.1.1.tar.gz
 OCSNG-Windows-Agent-2.1.1.zip
 OCSNG-Windows-Packager-2.1RC1.zip

安装OCSNG服务端

tar zxvf OCSNG_UNIX_SERVER-2.1.1.tar.gz
 cd OCSNG_UNIX_SERVER-2.1.1
 ./setup.sh

接下来一路回车,你会依次看到如下的选择提示

Do you wish to continue ([y]/n)?
 Which host is running database server [localhost] ?
 On which port is running database server [3306] ?
 Where is Apache daemon binary [/usr/sbin/httpd] ?
 Where is Apache main configuration file [/etc/httpd/conf/httpd.conf] ?
 Which user account is running Apache web server [apache] ?
 Which user group is running Apache web server [apache] ?
 Where is Apache Include configuration directory [/etc/httpd/conf.d/] ?
 Where is PERL Intrepreter binary [/usr/bin/perl] ?
 Do you wish to setup Communication server on this computer ([y]/n)?
 Where to put Communication server log directory [/var/log/ocsinventory-server] ?
 Communication server need a directory for plugins configuration files.
 Where to put Communication server plugins configuration files [/etc/ocsinventory-server/plugins] ?
 Communication server need a directory for plugins Perl modules files.
 Where to put Communication server plugins Perl modules files [/etc/ocsinventory-server/perl] ?

然后我这里会出现如下错误提示,根据提示安装对应的软件

+----------------------------------------------------------+
 | Checking for required Perl Modules... |
 +----------------------------------------------------------+

 Checking for DBI PERL module...
 Found that PERL module DBI is available.
 Checking for Apache::DBI PERL module...
 *** ERROR: PERL module Apache::DBI is not installed !
 Checking for DBD::mysql PERL module...
 Found that PERL module DBD::mysql is available.
 Checking for Compress::Zlib PERL module...
 Found that PERL module Compress::Zlib is available.
 Checking for XML::Simple PERL module...
 *** ERROR: PERL module XML::Simple is not installed !
 Checking for Net::IP PERL module...
 *** ERROR: PERL module Net::IP is not installed !
 *** ERROR: There is one or more required PERL modules missing on your computer !
 Please, install missing PERL modules first.

 OCS setup.sh can install perl module from packages for you
 The script will use the native package from your operating system like apt or rpm
 Do you wish to continue (y/[n])?

下载perl-Apache-DBI-1.09-1.el6.noarch.rpm,并安装
我这里提示

rpm -i perl-Apache-DBI-1.09-1.el6.noarch.rpm
 warning: perl-Apache-DBI-1.09-1.el6.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
 error: Failed dependencies:
perl(Digest::SHA1) is needed by perl-Apache-DBI-1.09-1.el6.noarch

还需要安装依赖perl-Digest-SHA1

yum install perl-Digest-SHA1
rpm -i perl-Apache-DBI-1.09-1.el6.noarch.rpm

继续安装依赖包

yum install perl-XML-Simple perl-Net-IP

重新运行OCSNG安装程序
之后有提示还缺一些SOAP相关的包,直接忽略就行了,不需要这个功能

配置数据库安全
mysql_secure_installation
设置root密码,关闭root远程访问,移出不必要的数据库
/etc/my.cnf中找到[client]和[mysqld],然后在它们下面均加上default-character-set=utf8就可以了。别忘了重启下mysql服务
创建ocsng和glpi的数据库和用户

 mysql -u root -p
 create database glpi;
 create database ocsweb;
 grant all privileges on glpi.* to glpi@localhost identified by 'password';
 grant all privileges on ocsweb.* to ocs@localhost identified by 'password';
 set global max_allowed_packet = 2*1024*1024*10
 exit

配置ocsng的web界面(以下地址请将192.168.1.11替换为你自己的服务器IP)
进入http://192.168.1.11/ocsreports
输入上面设置的password密码,提交即可
再删掉安装文件 /usr/share/ocsinventory-reports/ocsreports/install.php
用admin/admin登陆进ocsng的web界面后更改下默认密码即可

下面安装glpi,由于glpi需要json,新版本的php如果要编译json必须修改代码

tar xvf json-1.2.1.tar
 cd json-1.2.1
 vi JSON_parser.c
添加#define ZVAL_DELREF Z_DELREF_P 
 phpize
 ./configure
 make 
 make install 
 echo "; Enable json extension module" > /etc/php.d/json.ini 
 echo "extension=json.so" >> /etc/php.d/json.ini 
 /etc/init.d/httpd restart
 tar zxvf glpi-0.84.6.tar.gz
 mv glpi /var/www/html/
 chown apache.apache /var/www/html/glpi/ -R

输入http://192.168.5.11/glpi 直接跳转到安装界面
选择语言,提交,一路下一步即可
删除/var/www/html/glpi/install/install.php
修改密码后完成glpi的安装

配置glpi的插件ocsng
之前的老版本,glpi中直接集成了ocsng的连接组件,新版本中变为了插件方式,到glpi网站下载插件glpi-ocsinventoryng-1.0.2.tar.gz

tar zxvf glpi-ocsinventoryng-1.0.2.tar.gz
mv ocsinventoryng /var/www/html/glpi/plugins/

去插件中启用就可以了

配置域整合

 名称
yourdc.local
 Server
 192.168.1.200
 Basedn
 DC=yourdc,DC=LOCAL
 rootdn (非匿名)
ldapconnect@yourdc.local
 Login Field
 samaccountname
连接过滤器
(&(objectClass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
然后配置导入信息即可

这里发现一个bug,以前在0.7x版本上是没问题的,现在升级到0.8x以后ldap连接测试可以通过,但是无法导入用户,打开调试模式得到如下错误

PHP Warning: ldap_search(): Search: Operations error in /var/www/html/glpi/inc/authldap.class.php at line 1400

经过研究代码和数据库发现,rootdn_passwd这个密码并没有真正写入数据库,而直接在数据库中修改此项也没生效,只好改ldap连接代码了,本人非php专家,所以改成可以满足自己应用就好了,修复bug没那个精力。。。

vi /var/www/html/glpi/inc/authldap.class.php

找到

static function connectToServer($host, $port, $login="", $password="", $use_tls=false,
$deref_options) {

这个函数,在下面添加即可

$password="yourdnpasswd";

最后重新进入导入用户界面就可以看到亲切的域帐号了。。。

以前写过,这次做个记录

需求是这样的,首先网站文件和数据库需要每天自动备份,然后备份目录超过一定时间的删除,比如保留最近14天地备份

刚好vps是redhat,里面默认居然没有装crond的服务,输入以下命令安装

yum install cronie

创建备份脚本

vi /root/bakweb.sh

编辑并输入以下内容

#!/bin/bash

 find /home/bak/ -name '*' -type f -mtime +14 -exec rm {} \;
 tar zcvf /home/bak/www.penglei.name_$(date +%F).tar.gz /var/www/html
 mysqldump -u root --password=PASSWORD DBNAME > /home/bak/sql.penglei.name_$(date +%F).sql

 exit 0

输入:wq保存退出。
该脚本的意思是首先选择/home/bak作为网站备份目录。
第一步,先删除/home/bak下超过14天的文件;
第二步,按www.penglei.name_+日期为文件名备份网站目录/var/www/html;
第三步,按sql.penglei.name_+日期为文件名导出数据库,PASSWORD和DBNAME替换为你自己的root密码和数据库名。
最后创建crond脚本,每天早上5点自动运行该脚本即可
创建crond文件

vi /etc/cron.d/bakweb

编辑并输入以下内容

0 5 * * * root /root/bakweb.sh

一直用nagios做网络监控报警,最近才知道还有个SmokePing,一看作者是RRD的作者,于是决定下来试用一下。
首先系统安装环境,虚拟机下安装CentOS6.3,32位的,SmokePing从官网下载的2.6.8,旧版本拷贝就能用,新版本已经变成需要安装的了,不过也更简单容易了。
安装系统的时候直接把apache和编译工具都装了,省得再装了,如果没装的需要再装一下,反正也就一条命令。
首先先安装一些依赖包,输入以下命令

yum -y install httpd-devel libxml2-devel libpng-devel glib pango pango-devel freetype freetype-devel fontconfig cairo cairo-devel libart_lgpl libart_lgpl-devel

安装rrdtool 1.4.7

 wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.7.tar.gz
 tar zxvf rrdtool-1.4.7.tar.gz
 cd rrdtool-1.4.7
 ./configure --prefix=/usr/local/rrdtool
 make && make install

安装cgilib

 wget http://down1.chinaunix.net/distfiles/cgilib-0.5.tar.gz
 tar zxvf cgilib-0.5.tar.gz
 cd cgilib-0.5
 make
 cp libcgi.a /usr/local/lib
 cp cgi.h /usr/include

安装fping-2.4b2_to

 wget http://fping.sourceforge.net/download/fping.tar.gz
 tar zxvf fping.tar.gz
 cd fping-2.4b2_to
 ./configure
 make
 make check
 make install

安装echoping

wget http://jaist.dl.sourceforge.net/project/echoping/echoping/6.0.0/echoping-6.0.0.tar.gz
tar zxvf echoping-6.0.0.tar.gz
cd echoping-6.0.0
./configure --without-libidn
make
make test #遇到测试不成功等信息也没关系,直接ctrl+c回到命令行
make install

安装FCGI

 wget http://cpan.communilink.net/authors/id/F/FL/FLORA/FCGI-0.74.tar.gz
 tar zxvf FCGI-0.74.tar.gz
 cd FCGI-0.74
 perl Makefile.PL
 make && make install

安装mod_fastcgi,dso方式

 wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.6.tar.gz
 tar zxvf mod_fastcgi-2.4.6.tar.gz
 cd mod_fastcgi-2.4.6
 apxs -o mod_fastcgi.so -c *.c
 apxs -i -a -n fastcgi .libs/mod_fastcgi.so

修改apache配置文件,确认有如下一行,没有则添加

LoadModule fastcgi_module modules/mod_fastcgi.so

安装SMokePing

wget http://oss.oetiker.ch/smokeping/pub/smokeping-2.6.8.tar.gz
tar zxvf smokeping-2.6.8.tar.gz
./configure --prefix=/usr/local/smokeping

在这里会得到类似如下错误提示,需要安装perl一些依赖包

 checking checking for perl module 'RRDs'... Failed
 checking checking for perl module 'FCGI'... Ok
 checking checking for perl module 'CGI'... Ok
 checking checking for perl module 'CGI::Fast'... Ok
 checking checking for perl module 'Config::Grammar'... Failed
 checking checking for perl module 'Digest::HMAC_MD5'... Failed
 checking checking for perl module 'LWP'... Ok

 ** Aborting Configure ******************************

 If you know where perl can find the missing modules, set
 the PERL5LIB environment variable accordingly.

 FIRST though, make sure that 'perl' starts the perl
 binary you want to use for SmokePing.

 Now you can install local copies of the missing modules
 by running

 ./setup/build-perl-modules.sh /usr/local/smokeping/thirdparty

 The RRDs perl module is part of RRDtool. Either use the rrdtool
 package provided by your OS or install rrdtool from source.
 If you install from source, the RRDs module is located
 PREFIX/lib/perl

先解决”checking checking for perl module ‘RRDs’… Failed”的问题,由于我们是编译安装的rrdtool,所以perl没找到默认路径下它的模块,需要手工拷贝过去

cp /usr/local/rrdtool/lib/perl/5.10.1/i386-linux-thread-multi/RRDs.pm /usr/lib/perl5/
cp /usr/local/rrdtool/lib/perl/5.10.1/i386-linux-thread-multi/auto/RRDs/RRDs.so /usr/lib/perl5/

如果你是CentOS5.9,就是下面的命令,perl版本不同

cp /usr/local/rrdtool/lib/perl/5.8.8/i386-linux-thread-multi/RRDs.pm /usr/lib/perl5/5.8.8/i386-linux-thread-multi/
cp /usr/local/rrdtool/lib/perl/5.8.8/i386-linux-thread-multi/auto/RRDs/RRDs.so /usr/lib/perl5/5.8.8/i386-linux-thread-multi/

下面的几个模块在错误提示中已经提到解决办法,运行以下指令就会自动下载安装了

./setup/build-perl-modules.sh /usr/local/smokeping/thirdparty

装完之后,重新运行下面指令

./configure --prefix=/usr/local/smokeping
gmake install

配置smokeping

 cd /usr/local/smokeping/
 mkdir cache data var
 chown apache.apache cache data var
 cd /usr/local/smokeping/htdocs/
 cp smokeping.fcgi.dist smokeping.fcgi
 cd /usr/local/smokeping/etc/
 cp config.dist config
 chmod 400 /usr/local/smokeping/etc/smokeping_secrets.dist
 ln -s /usr/local/smokeping/cache /usr/local/smokeping/htdocs/cache

修改/usr/local/smokeping/etc/config

vi /usr/local/smokeping/etc/config
找到binary = /usr/sbin/fping
修改为binary = /usr/local/sbin/fping
 /usr/local/sbin/fping

修改/usr/local/smokeping/bin/smokeping

vi /usr/local/smokeping/bin/smokeping
找到:use lib qw(); # PERL5LIB
修改为:use lib qw(/usr/local/rrdtool/lib/perl); # PERL5LIB

修改主机配置文件,增加自己的主机,如果只想测试就把host改成自己要检测的IP就行了

+ Test
 menu= Targets
 #parents = owner:/Test/James location:/

 ++ James

 menu = James
 title =James
 alerts = someloss
 slaves = boomer slave2
 host = james.address

 ++ MultiHost

 menu = Multihost
 title = James and James as seen from Boomer
 host = /Test/James /Test/James~boomer

创建开机自动运行脚本
vi /etc/rc.local
写入如下内容

nohup /usr/local/smokeping/bin/smokeping --logfile=/var/log/smokeping.log 2>&1 &

修改apache配置文件

Alias /smokeping/ "/usr/local/smokeping/htdocs/"
AllowOverride None Options All AddHandler cgi-script .fcgi .cgi Order allow,deny Allow from all DirectoryIndex smokeping.fcgi 

最后重器apache服务,运行

nohup /usr/local/smokeping/bin/smokeping –logfile=/var/log/smokeping.log 2>&1 &

打开浏览器输入http://smokeping-ip/smokeping/即可访问

自从VMware收购了Zimbra以后,一直想找时间研究研究Zimbra,最近终于有时间可以装一个看看了。服务器安装的ESXi5,话说现在5的免费序列号功能少的可怜。。。

在ESXi上创建虚拟机来安装CentOS6×64版本,自然是pxe网络安装,不过貌似从6.0开始直接解压iso的内容已经不能直接当成本地yum源了,图省事把官方源上repodata文件夹抓过来用。

一路默认安装就可以了,关闭iptables规则和selinux,再到这里去下载开源版本http://www.zimbra.com/downloads/os-downloads.html

我下载的是zcs-7.1.2_GA_3268.RHEL6_64.20110804131406.tgz(7.1.2对应Redhat6×64的版本),拷贝这个文件到CentOS中

先关闭系统自带的MTA服务,安装一些依赖包

chkconfig postfix off
yum install fprintd-pam libstdc++.i686 nc file sysstat

运行以下命令解压,进入目录进行安装

 tar zxvf zcs-7.1.2_GA_3268.RHEL6_64.20110804131406.tgz
 cd zimbra zcs-7.1.2_GA_3268.RHEL6_64.20110804131406
 ./install.sh --platform-override

上面–platform-override参数的含义是由于我们下载的是Redhat版本的,CentOS上需要忽略这个系统版本检查。
在之后的向导中基本都默认或者输入Y就可以了,如果你像我一样操作,你会得到一个错误

Initializing ldap...failed. (28416)

 ERROR

 Configuration failed

 Please address the error and re-run /opt/zimbra/libexec/zmsetup.pl to
 complete the configuration.

 Errors have been logged to /tmp/zmsetup.09222011-191629.log

不过没关系,修改一个文件就可以了,运行visudo,找到Defaults requiretty这行,在前面加上#号,保存退出即可,接下来运行如下命令即可

/opt/zimbra/libexec/zmsetup.pl

在等待一大堆配置提示和确认后,安装就算基本完成了。
用户访问地址是http://yourhost/
后台管理控制台地址是https://yourhost:7071/

常用的几个用法:

1、怎样重置Zimbra管理员账户的密码

su – zimbra
zmprov sp admin@test.com 123456

这样就把admin@test.com的密码改成123456了,当然同样适用于修改其他用户的密码。

2、查看管理员帐户清单

su - zimbra
zmprov gaaa