为了账号安全,请及时绑定邮箱和手机立即绑定

定制zabbix的rpm包---spec文件的书写

标签:
MySQL


 定制zabbix的rpm包

#

%define zabbix_group zabbix 

%define zabbix_user zabbix 

 

Name:           zabbix   

Version:    2.0.4 

Release:    1%{?dist}.zbx 

Summary:    zabbix monitor 

Vendor:         itnihao@qq.com 

 

Group:          System Environment/Daemons   

License:    GPL 

URL:        http://www.zabbix.com 

Source0:    http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.0.4/zabbix-2.0.4.tar.gz 

Source1:        zabbix_custom.tar.gz 

Source2:        zabbix-web.conf 

#BuildRoot: %{_tmppath}/%{name}-%{version} 

BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root 

 

BuildRequires:  gcc 

BuildRequires:  make 

 

Requires(pre):gcc 

Requires(post):chkconfig     

Provides:Monitor 

 

%description 

 Zabbix is the ultimate open source availability and performance monitoring solution. Zabbix offers advanced monitoring, alerting, and visualization features today which are missing in other monitoring systems, even some of the best commercial ones 

 

%package server 

Summary:server version of zabbix 

Group: System Environment/Daemons 

Requires(post):      /sbin/chkconfig 

Requires(preun):     /sbin/chkconfig 

Requires(preun):     /sbin/service 

Requires(postun):    /sbin/service 

 

%description server 

Zabbix server common files 

 

%package agentd 

Summary:             Zabbix Agent 

Group:               Applications/Internet 

Requires(pre):       shadow-utils 

Requires(post):      /sbin/chkconfig 

Requires(preun):     /sbin/chkconfig 

Requires(preun):     /sbin/service 

Requires(postun):    /sbin/service 

 

%description agentd 

The Zabbix client agent, to be installed on monitored systems. 

 

 

%package proxy 

Summary:             Zabbix Proxy 

Group:               Applications/Internet 

Requires(pre):       shadow-utils 

Requires(post):      /sbin/chkconfig 

Requires(preun):     /sbin/chkconfig 

Requires(preun):     /sbin/service 

Requires(postun):    /sbin/service 

Requires:            fping 

 

%description proxy 

The Zabbix proxy 

 

 

%package web 

Summary:             Zabbix Web 

Group:               Applications/Internet 

BuildArch:           noarch 

Requires(pre):       shadow-utils 

Requires(post):      /sbin/chkconfig 

Requires(preun):     /sbin/chkconfig 

Requires(preun):     /sbin/service 

Requires(postun):    /sbin/service 

Requires:            dejavu-sans-fonts 

 

%description web 

The Zabbix web 

 

 

%prep 

%setup -q 

 

%build 

common_flags=" 

     --enable-dependency-tracking 

     --enable-proxy   

     --enable-agent  

     --enable-ipv6 

     --with-net-snmp 

     --with-libcurl 

     --disable-java 

     --sysconfdir=%{_sysconfdir}/zabbix 

     --datadir=%{_sharedstatedir} 

     " 

%configure $common_flags --enable-server --with-mysql  --with-cc-opt="%{optflags} $(pcre-config --cflags)" 

make %{?_smp_mflags} 

 

 

#./configure --prefix=/usr/local --sysconfdir=/etc/zabbix --libdir=/usr/lib --mandir=/usr/share/man   --enable-proxy  --enable-agent --with-sqlite3 

#make %{?_smp_mflags} 

 

 

%install 

%{__rm} -rf $RPM_BUILD_ROOT 

[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot} 

#%{__make} DESTDIR=%{buildroot} install 

 

%{__install} -d %{buildroot}%{_sbindir} 

%{__install} -d %{buildroot}%{_sysconfdir}/rc.d/init.d 

%{__install} -d %{buildroot}%{_datadir}/%{name} 

%{__install} -d %{buildroot}%{_sysconfdir}/%{name}/scripts 

%{__install} -d %{buildroot}%{_sysconfdir}/%{name}/zabbix_agentd.conf.d 

%{__install} -d %{buildroot}%{_mandir}/man1/ 

%{__install} -d %{buildroot}%{_mandir}/man8/ 

%{__install} -d %{buildroot}%{_localstatedir}/log/%{name} 

%{__install} -d %{buildroot}%{_localstatedir}/run/%{name} 

%{__install} -d %{buildroot}%{_sysconfdir}/%{name}/externalscripts 

%{__install} -d %{buildroot}%{_sysconfdir}/%{name}/alertscripts 

%{__install} -d %{buildroot}%{_datadir}/%{name} 

 

%{__make} DESTDIR=$RPM_BUILD_ROOT install 

 

 

#%{__mkdir} -p $RPM_BUILD_ROOT%{_initrddir} 

%{__install} -m 755 misc/init.d/fedora/core/zabbix_agentd   $RPM_BUILD_ROOT%{_initrddir}/zabbix_agentd 

%{__install} -m 755 misc/init.d/fedora/core/zabbix_server   $RPM_BUILD_ROOT%{_initrddir}/zabbix_server 

%{__install} -m 755 misc/init.d/fedora/core/zabbix_server    $RPM_BUILD_ROOT%{_initrddir}/zabbix_proxy 

%{__mv}  frontends/php $RPM_BUILD_ROOT/%{_datadir}/zabbix 

%{__sed} -i "s@BINARY_NAME=zabbix_server@BINARY_NAME=zabbix_proxy@g" $RPM_BUILD_ROOT%{_initrddir}/zabbix_proxy 

%{__sed} -i "s@BASEDIR=/usr/local@BASEDIR=/usr@g" $RPM_BUILD_ROOT%{_initrddir}/zabbix_server 

%{__sed} -i "s@BASEDIR=/usr/local@BASEDIR=/usr@g" $RPM_BUILD_ROOT%{_initrddir}/zabbix_agentd 

%{__sed} -i "s@BASEDIR=/usr/local@BASEDIR=/usr@g" $RPM_BUILD_ROOT%{_initrddir}/zabbix_proxy 

 

install -m 0755 -p src/zabbix_server/zabbix_server $RPM_BUILD_ROOT%{_sbindir}/ 

install -m 0755 -p src/zabbix_proxy/zabbix_proxy $RPM_BUILD_ROOT%{_sbindir}/ 

install -m 0755 -p src/zabbix_get/zabbix_get $RPM_BUILD_ROOT%{_sbindir}/ 

install -m 0755 -p src/zabbix_sender/zabbix_sender $RPM_BUILD_ROOT%{_sbindir}/ 

install -m 0755 -p src/zabbix_agent/zabbix_agent $RPM_BUILD_ROOT%{_sbindir}/ 

install -m 0755 -p src/zabbix_agent/zabbix_agentd $RPM_BUILD_ROOT%{_sbindir}/ 

install -m 0644 -p conf/zabbix_server.conf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/ 

install -m 0644 -p conf/zabbix_agent.conf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/ 

install -m 0644 -p conf/zabbix_agentd.conf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/ 

install -m 0644 -p conf/zabbix_proxy.conf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/ 

install -m 0644 -p man/zabbix_agentd.man  $RPM_BUILD_ROOT%{_mandir}/man8/zabbix_agentd.8 

install -m 0644 -p man/zabbix_server.man $RPM_BUILD_ROOT%{_mandir}//man8/zabbix_server.8 

install -m 0644 -p man/zabbix_proxy.man  $RPM_BUILD_ROOT%{_mandir}/man8/zabbix_proxy.8 

install -m 0644 -p man/zabbix_get.man    $RPM_BUILD_ROOT%{_mandir}/man1/zabbix_get.1 

install -m 0644 -p man/zabbix_sender.man $RPM_BUILD_ROOT%{_mandir}/man1/zabbix_sender.1 

 

%{__tar} xf %{SOURCE1} -C $RPM_BUILD_ROOT%{_sysconfdir}/%{name} 

install -m 0644 -p %{SOURCE2}  $RPM_BUILD_ROOT/%{_datadir}/%{name} 

install -d $RPM_BUILD_ROOT/%{_datadir}/%{name}/database/mysql/ 

install -m 0644 -p database/mysql/*  $RPM_BUILD_ROOT/%{_datadir}/%{name}/database/mysql/ 

sed -i \ 

    -e 's|# PidFile=.*|PidFile=%{_localstatedir}/run/%{name}/zabbix_agentd.pid|g' \ 

    -e 's|^LogFile=.*|LogFile=%{_localstatedir}/log/%{name}/zabbix_agentd.log|g' \ 

    -e '/# UnsafeUserParameters=0/aUnsafeUserParameters=1\n' \ 

    -e '/# Include.*zabbix_agentd.conf.d\//aInclude=\/etc\/zabbix\/zabbix_agentd.conf.d\/\n' \ 

    -e 's|# LogFileSize=.*|LogFileSize=0|g' \ 

    -e 's|/usr/local|/usr|g' \ 

     $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/zabbix_agentd.conf 

 

sed -i \ 

    -e 's|/usr/local|/usr|g' \ 

    -e '/# UnsafeUserParameters=0/aUnsafeUserParameters=1\n' \ 

    -e 's@# Include=/usr/etc/zabbix_agentd.conf.d@Include=/etc/zabbix/zabbix_agentd.conf.d@g' \ 

     $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/zabbix_agent.conf 

 

sed -i \ 

    -e 's|# PidFile=.*|PidFile=%{_localstatedir}/run/%{name}/zabbix_server.pid|g' \ 

    -e 's|^LogFile=.*|LogFile=%{_localstatedir}/log/%{name}/zabbix_server.log|g' \ 

    -e 's|# LogFileSize=.*|LogFileSize=0|g' \ 

    -e 's|^DBUser=root|DBUser=zabbix|g' \ 

    -e '/# DBPassword=/aDBPassword=zabbix\n' \ 

    -e 's|# DBSocket=/tmp/mysql.sock|DBSocket=%{_sharedstatedir}/mysql/mysql.sock|g' \ 

    -e 's|# ExternalScripts=\${datadir}/zabbix/externalscripts|ExternalScripts=%{_sysconfdir}/%{name}/externalscripts|' \ 

    -e 's|/usr/local|/usr|g' \ 

     $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/zabbix_server.conf 

 

sed -i \ 

    -e 's|# PidFile=.*|PidFile=%{_localstatedir}/run/%{name}/zabbix_proxy.pid|g' \ 

    -e 's|^LogFile=.*|LogFile=%{_localstatedir}/log/%{name}/zabbix_proxy.log|g' \ 

    -e 's|# LogFileSize=.*|LogFileSize=0|g' \ 

    -e 's|^DBUser=root|DBUser=zabbix|g' \ 

    -e '/# DBPassword=/aDBPassword=zabbix\n' \ 

    -e 's|# DBSocket=/tmp/mysql.sock|DBSocket=%{_sharedstatedir}/mysql/mysql.sock|g' \ 

    -e 's|# ExternalScripts=\${datadir}/zabbix/externalscripts|ExternalScripts=%{_sysconfdir}/%{name}/externalscripts|' \ 

    -e 's|/usr/local|/usr|g' \ 

     $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/zabbix_proxy.conf 

 

%clean 

%{__rm} -rf $RPM_BUILD_ROOT 

 

 

%files server 

%defattr(-,root,root,-) 

%doc 

%attr(0755,zabbix,zabbix) %dir %{_localstatedir}/log/%{name} 

%attr(0775,root,zabbix)   %dir %{_localstatedir}/run/%{name} 

%config(noreplace)  %{_sysconfdir}/%{name}/zabbix_server.conf 

%config(noreplace)  %{_sysconfdir}/%{name}/scripts 

%{_sbindir}/zabbix_sender 

%{_sbindir}/zabbix_server 

%{_sbindir}/zabbix_get 

 

%{_initrddir}/zabbix_server 

 

%config(noreplace) %{_sysconfdir}/%{name}/externalscripts 

%config(noreplace) %{_sysconfdir}/%{name}/alertscripts 

 

%{_mandir}/man8/zabbix_server.8* 

%{_mandir}/man1/zabbix_get.1* 

%{_mandir}/man1/zabbix_sender.1* 

 

%files agentd 

%defattr(-,root,root,-) 

%doc 

%attr(0755,zabbix,zabbix) %dir %{_localstatedir}/log/%{name} 

%attr(0775,root,zabbix) %dir %{_localstatedir}/run/%{name} 

%attr(0775,root,zabbix) %dir %{_sysconfdir}/%{name}/zabbix_agentd.conf.d 

%config(noreplace)  %{_sysconfdir}/%{name}/zabbix_agent.conf 

%config(noreplace)  %{_sysconfdir}/%{name}/zabbix_agentd.conf 

%config(noreplace)  %{_sysconfdir}/%{name}/scripts 

%{_sbindir}/zabbix_sender 

%{_sbindir}/zabbix_agent 

%{_sbindir}/zabbix_agentd 

%{_sbindir}/zabbix_get 

%attr(0755,root,zabbix) %{_sysconfdir}/%{name}/scripts/* 

%attr(0755,root,zabbix) %{_sysconfdir}/%{name}/zabbix_agentd.conf.d/* 

 

%{_initrddir}/zabbix_agentd 

 

#%{_localstatedir}/run/%{name} 

#%{_localstatedir}/log/%{name} 

%config(noreplace) %{_sysconfdir}/%{name}/zabbix_agentd.conf.d 

 

%{_mandir}/man8/zabbix_agentd.8* 

%{_mandir}/man1/zabbix_get.1* 

%{_mandir}/man1/zabbix_sender.1* 

 

 

%files proxy 

%defattr(-,root,root,-) 

%doc 

%attr(0755,zabbix,zabbix) %dir %{_localstatedir}/log/%{name} 

%attr(0775,root,zabbix)   %dir %{_localstatedir}/run/%{name} 

%config(noreplace)  %{_sysconfdir}/%{name}/zabbix_proxy.conf 

%config(noreplace)  %{_sysconfdir}/%{name}/scripts 

%{_sbindir}/zabbix_proxy 

%{_initrddir}/zabbix_proxy 

%{_mandir}/man8/zabbix_proxy.8* 

#%{_localstatedir}/run/%{name} 

#%{_localstatedir}/log/%{name} 

%config(noreplace) %{_sysconfdir}/%{name}/externalscripts 

%config(noreplace) %{_sysconfdir}/%{name}/alertscripts 

 

%files web 

%defattr(-,root,root,-) 

%config(noreplace) %{_datadir}/%{name}/* 

 

%post server 

if [ $1 -eq 1 ]; then 

/sbin/chkconfig zabbix_server on 

fi 

 

%post agentd 

if [ $1 -eq 1 ]; then 

sed -i "s@Hostname=Zabbix server@Hostname=$HOSTNAME@g" /etc/zabbix/zabbix_agentd.conf 

getent group zabbix >/dev/null || groupadd -r  zabbix 

getent passwd zabbix >/dev/null || useradd -r -g zabbix -d %{_sharedstatedir}/zabbix -s   /sbin/nologin  -c "zabbix user" zabbix 

/sbin/chkconfig zabbix_agentd on 

/sbin/service zabbix_agentd start 

chown root:zabbix /bin/netstat 

chmod 4755 /bin/netstat 

fi 

 

%post proxy 

if [ $1 -eq 1 ]; then 

/sbin/chkconfig zabbix_proxy on 

fi 

 

%post web 

mv %{_datadir}/%{name}/php/* %{_datadir}/%{name} 

rm -rf %{_datadir}/%{name}/php 

 

[ -d "/etc/http/conf.d" ] &&  cp %{_datadir}/%{name}/conf/zabbix-web.conf /etc/http/conf.d &&chown -R apache.apache  %{_datadir}/%{name} && cat <<EOF 

-------------------------------------------------------- 

   you installed Apache Server,the zabbix-web.conf configuration file in /etc/http/conf.d 

-------------------------------------------------------- 

EOF 

[ -d "/etc/http/conf.d" ] || cat <<EOF 

------------------------------------------------------------------------------------------- 

   you should configure Web Server,the web file in %{_datadir}/%{name} 

------------------------------------------------------------------------------------------- 

EOF 

#then 

#mv %{_datadir}/%{name} /var/www/html/  

 cat <<EOF 

--------------------------------------------------------------------------------------------- 

   Author:itnihao    Mail:itnihao@qq.com    Blog: http://itnihao.blog.51cto.com 

   you can configure web server on directory /usr/share/zabbix 

   if your web server is Apache,you can use the /etc/httpd/conf.d/zabbix-web.conf file to  

   start your web server,and others you must configure your web server 

   to running the server and web, you will install packages; 

   yum  install httpd php mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-bcmath mysql-connector-odbc mysql-devel libdbi-dbd-mysql net-snmp-devel curl-devel 

    #setting /etc/php.ini for zabbix 

    sed -i "s/;date.timezone =/date.timezone = Asia\/Shanghai/g"        /etc/php.ini 

    sed -i "s#max_execution_time = 30#max_execution_time = 300#g"       /etc/php.ini 

    sed -i "s#post_max_size = 8M#post_max_size = 32M#g"                 /etc/php.ini 

    sed -i "s#max_input_time = 60#max_input_time = 300#g"               /etc/php.ini 

    sed -i "s#memory_limit = 128M#memory_limit = 128M#g"                /etc/php.ini 

    sed -i "/;mbstring.func_overload = 0/ambstring.func_overload = 2\n" /etc/php.ini 

    #config apache 

    sed -i "s/DirectoryIndex index.html index.html.var/DirectoryIndex index.php index.html index.html.var/g" /etc/httpd/conf/httpd.conf 

    sed -i "s/ServerTokens OS/ServerTokens Prod/g"  /etc/httpd/conf/httpd.conf 

    #create mysql database to zabbix 

    service mysqld start 

    chkconfig mysqld on 

    mysqladmin -u root password  'mysqlpass' 

    mysql -uroot -pmysqlpass -e "create database zabbix character set utf8" 

    mysql -uroot -pmysqlpass -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'" 

    mysql -uroot -pmysqlpass -e "flush privileges" 

 

    #source zabbix database 

    cd /usr/share/zabbix 

    mysql -uzabbix -pzabbix zabbix < ./database/mysql/schema.sql 

    mysql -uzabbix -pzabbix zabbix < ./database/mysql/images.sql 

    mysql -uzabbix -pzabbix zabbix < ./database/mysql/data.sql 

---------------------------------------------------------------------------------------------- 

EOF 

#fi 

 

 

%pre server 

#add zabbix to services 

grep zabbix /etc/services 

[ "$?" != 0 ] && cat >> /etc/services <<EOF 

zabbix-agent    10050/tcp               #Zabbix Agent 

zabbix-agent    10050/udp               #Zabbix Agent  

zabbix-trapper  10051/tcp               #Zabbix Trapper  

zabbix-trapper  10051/udp               #Zabbix Trapper 

EOF 

# Add the "zabbix" user 

getent group zabbix >/dev/null || groupadd -r  zabbix 

getent passwd zabbix >/dev/null || useradd -r -g zabbix -d %{_sharedstatedir}/zabbix -s   /sbin/nologin  -c "zabbix user" zabbix 

 

%pre agentd 

#add zabbix to services 

grep zabbix /etc/services 

[ "$?" != 0 ] && cat >> /etc/services <<EOF 

zabbix-agent    10050/tcp               #Zabbix Agent 

zabbix-agent    10050/udp               #Zabbix Agent  

zabbix-trapper  10051/tcp               #Zabbix Trapper  

zabbix-trapper  10051/udp               #Zabbix Trapper 

EOF 

# Add the "zabbix" user 

getent group zabbix >/dev/null || groupadd -r  zabbix 

getent passwd zabbix >/dev/null || useradd -r -g zabbix -d %{_sharedstatedir}/zabbix -s   /sbin/nologin  -c "zabbix user" zabbix 

 

 

%preun server 

if [ "$1" = 0 ] 

then 

  /sbin/service zabbix_server stop >/dev/null 2>&1 

  /sbin/chkconfig --del zabbix_server 

fi 

 

%preun proxy 

if [ "$1" = 0 ] 

then 

  /sbin/service zabbix_proxy stop >/dev/null 2>&1 

  /sbin/chkconfig --del zabbix_proxy 

fi 

 

%preun agentd 

if [ "$1" = 0 ] 

then 

  /sbin/service zabbix_agentd stop >/dev/null 2>&1 

  /sbin/chkconfig --del zabbix_agentd 

fi 

 

%changelog 

* Fri Jan 25 2013  First version is build ok <itnihao@qq.com> 

- 2.0.4 

待续

©著作权归作者所有:来自51CTO博客作者吴兆松的原创作品,如需转载,请注明出处,否则将追究法律责任

rpmzabbixspec文件zabbix监控


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消