定制zabbix的rpm包

  1. #
  2. %define zabbix_group zabbix 
  3. %define zabbix_user zabbix 
  4.  
  5. Name:           zabbix   
  6. Version:    2.0.4 
  7. Release:    1%{?dist}.zbx 
  8. Summary:    zabbix monitor 
  9. Vendor:         itnihao@qq.com 
  10.  
  11. Group:          System Environment/Daemons   
  12. License:    GPL 
  13. URL:        http://www.zabbix.com 
  14. Source0:    http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.0.4/zabbix-2.0.4.tar.gz 
  15. Source1:        zabbix_custom.tar.gz 
  16. Source2:        zabbix-web.conf 
  17. #BuildRoot: %{_tmppath}/%{name}-%{version} 
  18. BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root 
  19.  
  20. BuildRequires:  gcc 
  21. BuildRequires:  make 
  22.  
  23. Requires(pre):gcc 
  24. Requires(post):chkconfig     
  25. Provides:Monitor 
  26.  
  27. %description 
  28.  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 
  29.  
  30. %package server 
  31. Summary:server version of zabbix 
  32. Group: System Environment/Daemons 
  33. Requires(post):      /sbin/chkconfig 
  34. Requires(preun):     /sbin/chkconfig 
  35. Requires(preun):     /sbin/service 
  36. Requires(postun):    /sbin/service 
  37.  
  38. %description server 
  39. Zabbix server common files 
  40.  
  41. %package agentd 
  42. Summary:             Zabbix Agent 
  43. Group:               Applications/Internet 
  44. Requires(pre):       shadow-utils 
  45. Requires(post):      /sbin/chkconfig 
  46. Requires(preun):     /sbin/chkconfig 
  47. Requires(preun):     /sbin/service 
  48. Requires(postun):    /sbin/service 
  49.  
  50. %description agentd 
  51. The Zabbix client agent, to be installed on monitored systems. 
  52.  
  53.  
  54. %package proxy 
  55. Summary:             Zabbix Proxy 
  56. Group:               Applications/Internet 
  57. Requires(pre):       shadow-utils 
  58. Requires(post):      /sbin/chkconfig 
  59. Requires(preun):     /sbin/chkconfig 
  60. Requires(preun):     /sbin/service 
  61. Requires(postun):    /sbin/service 
  62. Requires:            fping 
  63.  
  64. %description proxy 
  65. The Zabbix proxy 
  66.  
  67.  
  68. %package web 
  69. Summary:             Zabbix Web 
  70. Group:               Applications/Internet 
  71. BuildArch:           noarch 
  72. Requires(pre):       shadow-utils 
  73. Requires(post):      /sbin/chkconfig 
  74. Requires(preun):     /sbin/chkconfig 
  75. Requires(preun):     /sbin/service 
  76. Requires(postun):    /sbin/service 
  77. Requires:            dejavu-sans-fonts 
  78.  
  79. %description web 
  80. The Zabbix web 
  81.  
  82.  
  83. %prep 
  84. %setup -q 
  85.  
  86. %build 
  87. common_flags=" 
  88.      --enable-dependency-tracking 
  89.      --enable-proxy   
  90.      --enable-agent  
  91.      --enable-ipv6 
  92.      --with-net-snmp 
  93.      --with-libcurl 
  94.      --disable-java 
  95.      --sysconfdir=%{_sysconfdir}/zabbix 
  96.      --datadir=%{_sharedstatedir} 
  97.      " 
  98. %configure $common_flags --enable-server --with-mysql  --with-cc-opt="%{optflags} $(pcre-config --cflags)" 
  99. make %{?_smp_mflags} 
  100.  
  101.  
  102. #./configure --prefix=/usr/local --sysconfdir=/etc/zabbix --libdir=/usr/lib --mandir=/usr/share/man   --enable-proxy  --enable-agent --with-sqlite3 
  103. #make %{?_smp_mflags} 
  104.  
  105.  
  106. %install 
  107. %{__rm} -rf $RPM_BUILD_ROOT 
  108. [ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot} 
  109. #%{__make} DESTDIR=%{buildroot} install 
  110.  
  111. %{__install} -d %{buildroot}%{_sbindir} 
  112. %{__install} -d %{buildroot}%{_sysconfdir}/rc.d/init.d 
  113. %{__install} -d %{buildroot}%{_datadir}/%{name} 
  114. %{__install} -d %{buildroot}%{_sysconfdir}/%{name}/scripts 
  115. %{__install} -d %{buildroot}%{_sysconfdir}/%{name}/zabbix_agentd.conf.d 
  116. %{__install} -d %{buildroot}%{_mandir}/man1/ 
  117. %{__install} -d %{buildroot}%{_mandir}/man8/ 
  118. %{__install} -d %{buildroot}%{_localstatedir}/log/%{name} 
  119. %{__install} -d %{buildroot}%{_localstatedir}/run/%{name} 
  120. %{__install} -d %{buildroot}%{_sysconfdir}/%{name}/externalscripts 
  121. %{__install} -d %{buildroot}%{_sysconfdir}/%{name}/alertscripts 
  122. %{__install} -d %{buildroot}%{_datadir}/%{name} 
  123.  
  124. %{__make} DESTDIR=$RPM_BUILD_ROOT install 
  125.  
  126.  
  127. #%{__mkdir} -p $RPM_BUILD_ROOT%{_initrddir} 
  128. %{__install} -m 755 misc/init.d/fedora/core/zabbix_agentd   $RPM_BUILD_ROOT%{_initrddir}/zabbix_agentd 
  129. %{__install} -m 755 misc/init.d/fedora/core/zabbix_server   $RPM_BUILD_ROOT%{_initrddir}/zabbix_server 
  130. %{__install} -m 755 misc/init.d/fedora/core/zabbix_server    $RPM_BUILD_ROOT%{_initrddir}/zabbix_proxy 
  131. %{__mv}  frontends/php $RPM_BUILD_ROOT/%{_datadir}/zabbix 
  132. %{__sed} -i "s@BINARY_NAME=zabbix_server@BINARY_NAME=zabbix_proxy@g" $RPM_BUILD_ROOT%{_initrddir}/zabbix_proxy 
  133. %{__sed} -i "s@BASEDIR=/usr/local@BASEDIR=/usr@g" $RPM_BUILD_ROOT%{_initrddir}/zabbix_server 
  134. %{__sed} -i "s@BASEDIR=/usr/local@BASEDIR=/usr@g" $RPM_BUILD_ROOT%{_initrddir}/zabbix_agentd 
  135. %{__sed} -i "s@BASEDIR=/usr/local@BASEDIR=/usr@g" $RPM_BUILD_ROOT%{_initrddir}/zabbix_proxy 
  136.  
  137. install -m 0755 -p src/zabbix_server/zabbix_server $RPM_BUILD_ROOT%{_sbindir}/ 
  138. install -m 0755 -p src/zabbix_proxy/zabbix_proxy $RPM_BUILD_ROOT%{_sbindir}/ 
  139. install -m 0755 -p src/zabbix_get/zabbix_get $RPM_BUILD_ROOT%{_sbindir}/ 
  140. install -m 0755 -p src/zabbix_sender/zabbix_sender $RPM_BUILD_ROOT%{_sbindir}/ 
  141. install -m 0755 -p src/zabbix_agent/zabbix_agent $RPM_BUILD_ROOT%{_sbindir}/ 
  142. install -m 0755 -p src/zabbix_agent/zabbix_agentd $RPM_BUILD_ROOT%{_sbindir}/ 
  143. install -m 0644 -p conf/zabbix_server.conf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/ 
  144. install -m 0644 -p conf/zabbix_agent.conf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/ 
  145. install -m 0644 -p conf/zabbix_agentd.conf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/ 
  146. install -m 0644 -p conf/zabbix_proxy.conf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/ 
  147. install -m 0644 -p man/zabbix_agentd.man  $RPM_BUILD_ROOT%{_mandir}/man8/zabbix_agentd.8 
  148. install -m 0644 -p man/zabbix_server.man $RPM_BUILD_ROOT%{_mandir}//man8/zabbix_server.8 
  149. install -m 0644 -p man/zabbix_proxy.man  $RPM_BUILD_ROOT%{_mandir}/man8/zabbix_proxy.8 
  150. install -m 0644 -p man/zabbix_get.man    $RPM_BUILD_ROOT%{_mandir}/man1/zabbix_get.1 
  151. install -m 0644 -p man/zabbix_sender.man $RPM_BUILD_ROOT%{_mandir}/man1/zabbix_sender.1 
  152.  
  153. %{__tar} xf %{SOURCE1} -C $RPM_BUILD_ROOT%{_sysconfdir}/%{name} 
  154. install -m 0644 -p %{SOURCE2}  $RPM_BUILD_ROOT/%{_datadir}/%{name} 
  155. install -d $RPM_BUILD_ROOT/%{_datadir}/%{name}/database/mysql/ 
  156. install -m 0644 -p database/mysql/*  $RPM_BUILD_ROOT/%{_datadir}/%{name}/database/mysql/ 
  157. sed -i \ 
  158.     -e 's|# PidFile=.*|PidFile=%{_localstatedir}/run/%{name}/zabbix_agentd.pid|g' \ 
  159.     -e 's|^LogFile=.*|LogFile=%{_localstatedir}/log/%{name}/zabbix_agentd.log|g' \ 
  160.     -e '/# UnsafeUserParameters=0/aUnsafeUserParameters=1\n' \ 
  161.     -e '/# Include.*zabbix_agentd.conf.d\//aInclude=\/etc\/zabbix\/zabbix_agentd.conf.d\/\n' \ 
  162.     -e 's|# LogFileSize=.*|LogFileSize=0|g' \ 
  163.     -e 's|/usr/local|/usr|g' \ 
  164.      $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/zabbix_agentd.conf 
  165.  
  166. sed -i \ 
  167.     -e 's|/usr/local|/usr|g' \ 
  168.     -e '/# UnsafeUserParameters=0/aUnsafeUserParameters=1\n' \ 
  169.     -e 's@# Include=/usr/etc/zabbix_agentd.conf.d@Include=/etc/zabbix/zabbix_agentd.conf.d@g' \ 
  170.      $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/zabbix_agent.conf 
  171.  
  172. sed -i \ 
  173.     -e 's|# PidFile=.*|PidFile=%{_localstatedir}/run/%{name}/zabbix_server.pid|g' \ 
  174.     -e 's|^LogFile=.*|LogFile=%{_localstatedir}/log/%{name}/zabbix_server.log|g' \ 
  175.     -e 's|# LogFileSize=.*|LogFileSize=0|g' \ 
  176.     -e 's|^DBUser=root|DBUser=zabbix|g' \ 
  177.     -e '/# DBPassword=/aDBPassword=zabbix\n' \ 
  178.     -e 's|# DBSocket=/tmp/mysql.sock|DBSocket=%{_sharedstatedir}/mysql/mysql.sock|g' \ 
  179.     -e 's|# ExternalScripts=\${datadir}/zabbix/externalscripts|ExternalScripts=%{_sysconfdir}/%{name}/externalscripts|' \ 
  180.     -e 's|/usr/local|/usr|g' \ 
  181.      $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/zabbix_server.conf 
  182.  
  183. sed -i \ 
  184.     -e 's|# PidFile=.*|PidFile=%{_localstatedir}/run/%{name}/zabbix_proxy.pid|g' \ 
  185.     -e 's|^LogFile=.*|LogFile=%{_localstatedir}/log/%{name}/zabbix_proxy.log|g' \ 
  186.     -e 's|# LogFileSize=.*|LogFileSize=0|g' \ 
  187.     -e 's|^DBUser=root|DBUser=zabbix|g' \ 
  188.     -e '/# DBPassword=/aDBPassword=zabbix\n' \ 
  189.     -e 's|# DBSocket=/tmp/mysql.sock|DBSocket=%{_sharedstatedir}/mysql/mysql.sock|g' \ 
  190.     -e 's|# ExternalScripts=\${datadir}/zabbix/externalscripts|ExternalScripts=%{_sysconfdir}/%{name}/externalscripts|' \ 
  191.     -e 's|/usr/local|/usr|g' \ 
  192.      $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/zabbix_proxy.conf 
  193.  
  194. %clean 
  195. %{__rm} -rf $RPM_BUILD_ROOT 
  196.  
  197.  
  198. %files server 
  199. %defattr(-,root,root,-) 
  200. %doc 
  201. %attr(0755,zabbix,zabbix) %dir %{_localstatedir}/log/%{name} 
  202. %attr(0775,root,zabbix)   %dir %{_localstatedir}/run/%{name} 
  203. %config(noreplace)  %{_sysconfdir}/%{name}/zabbix_server.conf 
  204. %config(noreplace)  %{_sysconfdir}/%{name}/scripts 
  205. %{_sbindir}/zabbix_sender 
  206. %{_sbindir}/zabbix_server 
  207. %{_sbindir}/zabbix_get 
  208.  
  209. %{_initrddir}/zabbix_server 
  210.  
  211. %config(noreplace) %{_sysconfdir}/%{name}/externalscripts 
  212. %config(noreplace) %{_sysconfdir}/%{name}/alertscripts 
  213.  
  214. %{_mandir}/man8/zabbix_server.8* 
  215. %{_mandir}/man1/zabbix_get.1* 
  216. %{_mandir}/man1/zabbix_sender.1* 
  217.  
  218. %files agentd 
  219. %defattr(-,root,root,-) 
  220. %doc 
  221. %attr(0755,zabbix,zabbix) %dir %{_localstatedir}/log/%{name} 
  222. %attr(0775,root,zabbix) %dir %{_localstatedir}/run/%{name} 
  223. %attr(0775,root,zabbix) %dir %{_sysconfdir}/%{name}/zabbix_agentd.conf.d 
  224. %config(noreplace)  %{_sysconfdir}/%{name}/zabbix_agent.conf 
  225. %config(noreplace)  %{_sysconfdir}/%{name}/zabbix_agentd.conf 
  226. %config(noreplace)  %{_sysconfdir}/%{name}/scripts 
  227. %{_sbindir}/zabbix_sender 
  228. %{_sbindir}/zabbix_agent 
  229. %{_sbindir}/zabbix_agentd 
  230. %{_sbindir}/zabbix_get 
  231. %attr(0755,root,zabbix) %{_sysconfdir}/%{name}/scripts/* 
  232. %attr(0755,root,zabbix) %{_sysconfdir}/%{name}/zabbix_agentd.conf.d/* 
  233.  
  234. %{_initrddir}/zabbix_agentd 
  235.  
  236. #%{_localstatedir}/run/%{name} 
  237. #%{_localstatedir}/log/%{name} 
  238. %config(noreplace) %{_sysconfdir}/%{name}/zabbix_agentd.conf.d 
  239.  
  240. %{_mandir}/man8/zabbix_agentd.8* 
  241. %{_mandir}/man1/zabbix_get.1* 
  242. %{_mandir}/man1/zabbix_sender.1* 
  243.  
  244.  
  245. %files proxy 
  246. %defattr(-,root,root,-) 
  247. %doc 
  248. %attr(0755,zabbix,zabbix) %dir %{_localstatedir}/log/%{name} 
  249. %attr(0775,root,zabbix)   %dir %{_localstatedir}/run/%{name} 
  250. %config(noreplace)  %{_sysconfdir}/%{name}/zabbix_proxy.conf 
  251. %config(noreplace)  %{_sysconfdir}/%{name}/scripts 
  252. %{_sbindir}/zabbix_proxy 
  253. %{_initrddir}/zabbix_proxy 
  254. %{_mandir}/man8/zabbix_proxy.8* 
  255. #%{_localstatedir}/run/%{name} 
  256. #%{_localstatedir}/log/%{name} 
  257. %config(noreplace) %{_sysconfdir}/%{name}/externalscripts 
  258. %config(noreplace) %{_sysconfdir}/%{name}/alertscripts 
  259.  
  260. %files web 
  261. %defattr(-,root,root,-) 
  262. %config(noreplace) %{_datadir}/%{name}/* 
  263.  
  264. %post server 
  265. if [ $1 -eq 1 ]; then 
  266. /sbin/chkconfig zabbix_server on 
  267. fi 
  268.  
  269. %post agentd 
  270. if [ $1 -eq 1 ]; then 
  271. sed -i "s@Hostname=Zabbix server@Hostname=$HOSTNAME@g" /etc/zabbix/zabbix_agentd.conf 
  272. getent group zabbix >/dev/null || groupadd -r  zabbix 
  273. getent passwd zabbix >/dev/null || useradd -r -g zabbix -d %{_sharedstatedir}/zabbix -s   /sbin/nologin  -c "zabbix user" zabbix 
  274. /sbin/chkconfig zabbix_agentd on 
  275. /sbin/service zabbix_agentd start 
  276. chown root:zabbix /bin/netstat 
  277. chmod 4755 /bin/netstat 
  278. fi 
  279.  
  280. %post proxy 
  281. if [ $1 -eq 1 ]; then 
  282. /sbin/chkconfig zabbix_proxy on 
  283. fi 
  284.  
  285. %post web 
  286. mv %{_datadir}/%{name}/php/* %{_datadir}/%{name} 
  287. rm -rf %{_datadir}/%{name}/php 
  288.  
  289. [ -d "/etc/http/conf.d" ] &&  cp %{_datadir}/%{name}/conf/zabbix-web.conf /etc/http/conf.d &&chown -R apache.apache  %{_datadir}/%{name} && cat <<EOF 
  290. -------------------------------------------------------- 
  291.    you installed Apache Server,the zabbix-web.conf configuration file in /etc/http/conf.d 
  292. -------------------------------------------------------- 
  293. EOF 
  294. [ -d "/etc/http/conf.d" ] || cat <<EOF 
  295. ------------------------------------------------------------------------------------------- 
  296.    you should configure Web Server,the web file in %{_datadir}/%{name} 
  297. ------------------------------------------------------------------------------------------- 
  298. EOF 
  299. #then 
  300. #mv %{_datadir}/%{name} /var/www/html/  
  301.  cat <<EOF 
  302. --------------------------------------------------------------------------------------------- 
  303.    Author:itnihao    Mail:itnihao@qq.com    Blog: http://itnihao.blog.51cto.com 
  304.    you can configure web server on directory /usr/share/zabbix 
  305.    if your web server is Apache,you can use the /etc/httpd/conf.d/zabbix-web.conf file to  
  306.    start your web server,and others you must configure your web server 
  307.    to running the server and web, you will install packages; 
  308.    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 
  309.     #setting /etc/php.ini for zabbix 
  310.     sed -i "s/;date.timezone =/date.timezone = Asia\/Shanghai/g"        /etc/php.ini 
  311.     sed -i "s#max_execution_time = 30#max_execution_time = 300#g"       /etc/php.ini 
  312.     sed -i "s#post_max_size = 8M#post_max_size = 32M#g"                 /etc/php.ini 
  313.     sed -i "s#max_input_time = 60#max_input_time = 300#g"               /etc/php.ini 
  314.     sed -i "s#memory_limit = 128M#memory_limit = 128M#g"                /etc/php.ini 
  315.     sed -i "/;mbstring.func_overload = 0/ambstring.func_overload = 2\n" /etc/php.ini 
  316.     #config apache 
  317.     sed -i "s/DirectoryIndex index.html index.html.var/DirectoryIndex index.php index.html index.html.var/g" /etc/httpd/conf/httpd.conf 
  318.     sed -i "s/ServerTokens OS/ServerTokens Prod/g"  /etc/httpd/conf/httpd.conf 
  319.     #create mysql database to zabbix 
  320.     service mysqld start 
  321.     chkconfig mysqld on 
  322.     mysqladmin -u root password  'mysqlpass' 
  323.     mysql -uroot -pmysqlpass -e "create database zabbix character set utf8" 
  324.     mysql -uroot -pmysqlpass -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'" 
  325.     mysql -uroot -pmysqlpass -e "flush privileges" 
  326.  
  327.     #source zabbix database 
  328.     cd /usr/share/zabbix 
  329.     mysql -uzabbix -pzabbix zabbix < ./database/mysql/schema.sql 
  330.     mysql -uzabbix -pzabbix zabbix < ./database/mysql/p_w_picpaths.sql 
  331.     mysql -uzabbix -pzabbix zabbix < ./database/mysql/data.sql 
  332. ---------------------------------------------------------------------------------------------- 
  333. EOF 
  334. #fi 
  335.  
  336.  
  337. %pre server 
  338. #add zabbix to services 
  339. grep zabbix /etc/services 
  340. [ "$?" != 0 ] && cat >> /etc/services <<EOF 
  341. zabbix-agent    10050/tcp               #Zabbix Agent 
  342. zabbix-agent    10050/udp               #Zabbix Agent  
  343. zabbix-trapper  10051/tcp               #Zabbix Trapper  
  344. zabbix-trapper  10051/udp               #Zabbix Trapper 
  345. EOF 
  346. # Add the "zabbix" user 
  347. getent group zabbix >/dev/null || groupadd -r  zabbix 
  348. getent passwd zabbix >/dev/null || useradd -r -g zabbix -d %{_sharedstatedir}/zabbix -s   /sbin/nologin  -c "zabbix user" zabbix 
  349.  
  350. %pre agentd 
  351. #add zabbix to services 
  352. grep zabbix /etc/services 
  353. [ "$?" != 0 ] && cat >> /etc/services <<EOF 
  354. zabbix-agent    10050/tcp               #Zabbix Agent 
  355. zabbix-agent    10050/udp               #Zabbix Agent  
  356. zabbix-trapper  10051/tcp               #Zabbix Trapper  
  357. zabbix-trapper  10051/udp               #Zabbix Trapper 
  358. EOF 
  359. # Add the "zabbix" user 
  360. getent group zabbix >/dev/null || groupadd -r  zabbix 
  361. getent passwd zabbix >/dev/null || useradd -r -g zabbix -d %{_sharedstatedir}/zabbix -s   /sbin/nologin  -c "zabbix user" zabbix 
  362.  
  363.  
  364. %preun server 
  365. if [ "$1" = 0 ] 
  366. then 
  367.   /sbin/service zabbix_server stop >/dev/null 2>&1 
  368.   /sbin/chkconfig --del zabbix_server 
  369. fi 
  370.  
  371. %preun proxy 
  372. if [ "$1" = 0 ] 
  373. then 
  374.   /sbin/service zabbix_proxy stop >/dev/null 2>&1 
  375.   /sbin/chkconfig --del zabbix_proxy 
  376. fi 
  377.  
  378. %preun agentd 
  379. if [ "$1" = 0 ] 
  380. then 
  381.   /sbin/service zabbix_agentd stop >/dev/null 2>&1 
  382.   /sbin/chkconfig --del zabbix_agentd 
  383. fi 
  384.  
  385. %changelog 
  386. * Fri Jan 25 2013  First version is build ok <itnihao@qq.com> 
  387. - 2.0.4 

待续