zabbix安装、部署、lnmp(一)
最近入手zabbix,准备好好的研究,好好的弄。
环境准备:
mysql:5.6.29
PHP:5.6.12
Nginx:1.8.0
zabbix:3.2.6
操作系统:Centos6
用户:普通用户lile
所有的安装包:http://pan.baidu.com/s/1hsmpr96 (百度网盘)
一、搭建lnmp
1:编译安装mysql
1)安装依赖包
yum -y install gcc make cmake ncurses-devel libxml2-devel libtool-ltdl-devel gcc-c++ autoconf automake bison zlib-devel
注:在这里可以先创建一个download,用来准们存放需要的软件
创建一个/usr/local/lnmp 专门用来存放解压的软件
mkdir download mkdir /usr/local/lnmp
2)下载源码安装包
wget http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.11.tar.gz
3)解压源码包
tar -zxvf mysql-5.6.29.tar.gz -C /usr/local/lnmp cd /usr/local/lnmp/mysql-5.6.29 cmake .-DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=gbk,gb2312 -DENABLED_LOCAL_INFILE=1 make make install
-DDEFAULT_CHARSET=utf8 设置默认的字符集
-DDEFAULT_COLLATION=utf8_general_ci 默认字符校对
-DWITH_EXTRA_CHARSETS=gbk,gb2312 扩展字符支持
-DENABLED_LOCAL_INFILE:启用加载本地数据 mysql5.6系列采用cmake构建安装
cmake -L:可以查看编译选项
4)创建配置文件和数据目录
创建配置文件目录和编辑配置文件:
sudo mkdir /usr/local/mysql/etc
配置文件 vim /usr/local/mysql/etc/my.cnf:
[mysqld] port=3306 datadir=/mysql_data/data socket=/mysql_data/mysql.sock user=mysql [mysqld_safe] log-error=/mysql_data/mysql_err.log pid-file=/mysql_data/mysql.pid
创建mysql的数据目录
sudo mkdir /mysql_data sudo mkdir /mysql_data/data sudo chown -R mysql.mysql /mysql_data /usr/local/mysql -R
5)初始化数据库
sudo /usr/local/mysql/scripts/mysql_install_db --defaults-file=/usr/local/mysql/etc/my.cnf --user=mysql --basedir=/usr/local/mysql
--basedir:安装的路径,全路径,解决相对路径出错的问题
6)启动mysql
sudo /usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/etc/my.cnf &
7)登录mysql
报错:
解决办法:
ln -s /mysql_data/mysql.sock /tmp/mysql.sock
然后就可以了。
2:编译安装php
1)安装php扩展包,这些包是rpm里没有自带,所以这里还是编译一下
libiconv-1.13.tar.gz --语言编码转换
tar xvf libiconv-1.13.tar.gz -C /usr/local/lnmp cd /usr/local/lnmp/libiconv-1.13 ./configure ;make ;make install echo /usr/local/lib >/etc/ld.so.conf.d/lnmp.conf //这里普通用户使用sudo可能会报错,可以直接vim 编辑/etc/ld,so.conf.d/lnmp.conf,把路径写进去 /sbin/ldconfig
pcre-7.9.tar.gz --perl兼容正则表达式,或者使用rpm自带的也可以(yum install pcre pcre-devel -y)
tar xvf pcre-7.9.tar.gz -C /usr/local/lnmp cd /usr/local/lnmp/pcre-7.9 ./configure ;make ;make install /sbin/ldconfig
2)安装php
php-5.6.12.tar.gz
tar xf php-5.6.12.tar.bz2 -C /usr/local/lnmp cd /usr/local/lnmp/php-5.6.31 ./configure --prefix=/usr/local/php--with-config-file-path=/usr/local/php/etc --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --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-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --enable-mysqlnd --with-pcre-dir=/usr/local/--enable-opcache make make install
编译php时可能会出现的几种错误总结:
错误一:
./configure时报下面的错误
configure: error:Don't know how to define struct flock on this system, set --enable-opcache=no
解决方法:
ln -s /usr/local/mysql/lib/libmysqlclient.so /usr/lib/ ln -s /usr/local/mysql/lib/libmysqlclient.so.18/usr/lib/libmysqlclient.so.18 ldconfig --或者 echo /usr/local/mysql/lib >>/etc/ld.so.conf.d/lnmp.conf && ldconfig
错误二:
./configure之后如果直接make会报下面的错误
collect2: ld returned 1 exit status make:***[sapi/cli/php]Error1
最好删掉php的源码目录,再重新解压,重新编译,使用下面的参数来编译
make ZEND_EXTRA_LIBS='-liconv' make install
错误三:
chmod: cannot access `ext/phar/phar.phar': No such file or directory"
解决办法:
cp ext/phar/phar.php ext/phar/phar.phar
3)php成功安装后,继续安装php第三方模块
安装缓存模块memcache
tar xvf memcache-2.2.7.tgz -C /usr/local/lnmp cd /usr/local/lnmp/memcache-2.2.7 /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make ;make install
用phpize生成编译的configure文件。注意使用的路径要为编译的/usr/local/php的路径;
phpize prepare a PHP extension for compiling
如果你不用phpize,你的这个目录里根本就没有configure这个文件
注意安装信息
Libraries have been installed in: /usr/src/lnmp/memcache-2.2.7/modules Installing shared extensions:/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
echo /usr/src/lnmp/memcache-2.2.7/modules/>>/etc/ld.so.conf.d/lnmp.conf /sbin/ldconfig
安装绘图引擎模块imagemagick,与GD类似
tar -zxvf ImageMagick-6.7.8-9.tar.gz -C /usr/local/lnmp cd /usr/local/lnmp/ImageMagick-6.7.8-9 ./configure make;make install /sbin/ldconfig
安装imagick(连接php与imagemagick的通道)
tar xf imagick-3.1.2.tgz-C /usr/src/lnmp/ cd /usr/src/lnmp/imagick-3.1.2/ /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make;make install
注意安装的库路径的模块路径信息
Libraries have been installed in: /usr/src/lnmp/imagick-3.1.2/modules Installing shared extensions:/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
echo /usr/local/lnmp/imagick-3.1.2/modules >>/etc/ld.so.conf.d/lnmp.conf /sbin/ldconfig
到此,与nginx之前要编译的所有软件及扩展模块完成
验证此目录里有三个安装模块,表示安装OK
ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/ imagick.so memcache.so opcache.so opcache.a
4)拷贝并配置php配置文件,加上前面所编译的模块支持
cp /usr/local/lnmp/php-5.6.31/php.ini-production /usr/local/php/etc/php.ini
拷配置文件,拷的路径是根据编译时的--sysconfigdir参数决定的(因为,我指定安装路径为/usr/local/php,所以就要拷到/usr/local/php/etc/)
配置php.ini文件加上前面安装的扩展的模块支持
vim /usr/local/php/etc/php.ini --直接在最后加上下面一段
extension_dir ="/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/" extension ="memcache.so" extension ="imagick.so" date.timezone ="Asia/Shanghai" [opcache] zend_extension ="/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/opcache.so" opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=128 opcache.optimization_level=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.save_comments=0
关于几个参数的说明
opcache.memory_consumption=128 --共享内存大小, 这个根需求可调
opcache.interned_strings_buffer=8 --interned string的内存大小, 也可调
opcache.max_accelerated_files=4000 --最大缓存的文件数目
opcache.revalidate_freq=60 --60s检查一次文件更新
opcache.fast_shutdown=1 --打开快速关闭, 打开这个在PHP Request Shutdown的时候回收内存的速度会提高
opcache.save_comments=0 --不保存文件或函数的注释
3:编译安装nginx
1):我这里建立一个用户来跑nginx,不做也可以,它默认是用daemon用户来跑
useradd -r -d /dev/null -s /sbin/nologin nginx
2):解压编译安装
tar xf nginx-1.8.0.tar.gz -C /usr/local/lnmp cd /usr/local/lnmp/nginx-1.8.0/ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/lnmp/pcre-7.9 make make install
--with-http_stub_status_module模块记得要加,后面做查看nginx状态需要这个模块
3)查看是否安装成功
ls /usr/local/nginx conf html logs sbin
看到这些文件,则表示nginx安装成功
4:配置优化php的fastcgi配置文件,并启动fastcgi模式的php
配置php-fpm配置文件 (配置fastcgi)
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
要在些配置文件配置的选项有:
监听的IP,端口或者socket
初始化的进程数
执行身份
错误是否显示
打开的资源限制等
# vim /usr/local/php/etc/php-fpm.conf 164 listen =/var/run/fastcgi/fastcgi.socket 534 php_flag[display_errors]= on 149 user = nginx 150 group = nginx 235 pm.max_children =64 240 pm.start_servers =20 255 pm.min_spare_servers =5 250 pm.max_spare_servers =35 261 pm.max_requests =3000 458 rlimit_files =65535 175 listen.owner = nginx 176 listen.group = nginx 177 listen.mode =0660
最后三行是控制启动fastcgi之后的socket文件的权限(特别是新版本的php,修复了以前socket访问权限的bug,所以这里指好权限,那么nginx才能有权限读取socket来访问fastcgi)
mkdir /var/run/fastcgi chown nginx.nginx /var/run/fastcgi/
启动php fastcgi进程
/usr/local/php/sbin/php-fpm -D -y /usr/local/php/etc/php-fpm.conf
启动过后,就可以在/var/run/fastcgi/目录下找到socket文件
ls /var/run/fastcgi/ fastcgi.socket
查看进程:
ps -ef |grep fpm也可以用此命令来查看php的factcgi的进程,有20个进程,因为我在前面配置pm.start_servers = 20
如果要关闭fpm,可以直接pkill fpm就可以了
5:配置nginx.conf主配置文件
sudo vim /usr/local/nginx/conf/nginx.conf
# vim /usr/local/nginx/conf/nginx.conf user nginx nginx;--运行用户和组 worker_processes 8;--启动ngnix的服务的工作进程数 error_log logs/error.log info;--错误日志以及日志等级 pid logs/nginx.pid;--pid文件 worker_rlimit_nofile 65535;--nginx每个进程能打开的最大的文件描述符数 events { use epoll;--epoll工作模式 worker_connections 65535;--每个进程允许打开的并发连接数 } http { include mime.types; default_type application/octet-stream; server_tokens off; sendfile on; tcp_nopush on; keepalive_timeout 65; gzip on; server { listen 8000;--监听的端口 server_name 10.1.1.8;--域名或者IP charset utf8;--字符集 root /lnmp/web;--家目录 index index.php index.html index.htm;--主页文件 error_page 500502503504/50x.html; location =/50x.html { root html; } location ~.*\.php$ { fastcgi_pass unix:/var/run/fastcgi/fastcgi.socket;--对应php-fpm.conf里的设置 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;--把/scripts改成$document_root,表示家目录下的.php文件也当会以php来执行 include fastcgi_params; } } }
创建数据目录
mkdir -p /lnmp/web
启动nginx
/usr/local/nginx/sbin/nginx //启动nginx /usr/local/nginx/sbin/nginx -s reload //reload的方法 /usr/local/nginx/sbin/nginx -s stop //关闭的方法
验证:
vim /lnmp/web/test.php
<?php
phpinfo();
?>
用http://10.0.0.146/test.php能验证支持php,说明整个基本的lnmp搭建完成
二、zabbix的安装
服务端安装
2:先yum安装net-snmp-devel,要不然下面编译安装的时候会报错
yum -y install net-snmp-devel
3:解压 、安装
tar -zxvf zabbix-3.2.6.tar.gz -C /usr/local/lnmp yum install net-snmp-devel ./configure --prefix=/usr/local/zabbix-3.2.6--enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 make make install
这里的--with-mysql=/usr/local/mysql/bin/mysql_config 一定要指定,要不然怎么都启动不了zabbix server
4:添加zabbix用户
useradd zabbix
groupadd zabbix
5:设置zabbix使用的数据库
创建用户
create user 'zabbix'@'%' identified by '123456';
创建zabbix数据库
create database zabbix
zabbix数据库授权给zabbix账号:
grant all privileges on zabbix.* to 'zabbix'@'%' identified by '123456' grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by '123456' flush privileges;
使用zabbix账号登录进去以后可以看到zabbix数据库:/usr/local/mysql/bin/mysql -uzabbix -p
mysql> show databases; +--------------------+ |Database| +--------------------+ | information_schema | | test | | zabbix | +--------------------+ 3 rows inset(0.00 sec)
从本地导入zabbix数据库的一些表
/usr/local/mysql/bin/mysql zabbix </usr/local/lnmp/zabbix-3.2.6/database/mysql/schema.sql /usr/local/mysql/bin/mysql zabbix </usr/local/lnmp/zabbix-3.2.6/database/mysql/images.sql /usr/local/mysql/bin/mysql zabbix </usr/local/lnmp/zabbix-3.2.6/database/mysql/data.sql
6:编辑zabbix服务端的配置文件
mkdir -p /etc/zabbix cp /usr/local/zabbix-3.2.6/etc/zabbix_server.conf /etc/zabbix
vim /etc/zabbix/zabbix_server.conf
DBName=zabbix DBUser=zabbix DBPassword=123456 DBPort=3306 ListenIP=10.0.0.146
echo "/usr/local/mysql/lib">>/etc/ld.so.conf ldconfig
7:zabbix服务端的启动
/usr/local/zabbix-3.2.6/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
zabbix客户端的启动,这里在编译的时候顺便把客户端也编译了
/usr/local/zabbix-3.2.6/sbin/zabbix_agentd
zabbix web 安装
1:创建zabbix数据目录,并且把前端文件拷贝过去
mkdir -p /zabbix_web/zabbix cp -r /usr/local/lnmp/zabbix-3.2.6/frontends/php/*/zabbix_web/zabbix
2:编辑虚拟主机文件
user nginx nginx; worker_processes 8; error_log logs/error.log info; pid logs/nginx.pid; events { use epoll; worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; sendfile on; tcp_nopush on; keepalive_timeout 65; gzip on; server { listen 80; server_name localhost; access_log logs/host.access.log main; index index.php index.html index.htm; root /zabbix_web; location /{ try_files $uri $uri//index.php?$args; } location ~.*\.(php)?$ { fastcgi_split_path_info ^(.+.php)(.*)$; include fastcgi_params; fastcgi_pass unix:/var/run/fastcgi/fastcgi.socket; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } }
然后通过浏览器访问:10.0.0.146/zabbix,会出现
点击下一步:出现错误
说明配置文件没有配置好,打开php的配置文件php.ini
vim /usr/local/php/etc/php.ini
post_max_size =16M max_execution_time =300 max_input_time =300 always_populate_raw_post_data =-1
然后杀掉fpm进程,重启,刷新界面,就得到正确的了
pkill fpm
/usr/local/php/sbin/php-fpm -D -y /usr/local/php/etc/php-fpm.conf
点击下一步,配置数据库
点击下一步,设置zabbix服务器的一些东西
下一步,下一步,会出现
这里是没有权限写入进去,所以自己手动先下载配置文件,然后保存到/zabbix_web/zabbix/conf/zabbix.conf.php下面
打开这个文件,可以看大里面的内容就是刚刚设置的内容:vim /zabbix_web/zabbix/conf/zabbix.conf.php
<?php //Zabbix GUI configuration file. global $DB; $DB['TYPE']='MYSQL'; $DB['SERVER']='10.0.0.146'; $DB['PORT']='3306'; $DB['DATABASE']='zabbix'; $DB['USER']='zabbix'; $DB['PASSWORD']='123456'; //Schema name.Usedfor IBM DB2 and PostgreSQL. $DB['SCHEMA']=''; $ZBX_SERVER ='10.0.0.146'; $ZBX_SERVER_PORT ='10051'; $ZBX_SERVER_NAME ='zabbix-server'; $IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
完成之后,就进入到这个登录界面了:
默认账号:Admin
密码: zabbix
登录进去之后,会看到
zabbix 客户端安装
下载、解压、安装
tar -zxvf zabbix-3.2.6.tar.gz -C /usr/local/lnmp ./configure --prefix=/home/lile/zabbix-3.2.6--enable-agent make make install
默认端口号为10050
客户端的配置文件:
vim zabbix-3.2.6/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log Server=127.0.0.1 //zabbix server的地址 ServerActive=127.0.0.1 //zabbix server的地址 Hostname=Zabbix server
客户端启动:
/usr/local/zabbix-3.2.6/sbin/zabbix_agentd
安装基本上完成了,接下来就是把怎么用zabbix,怎么用好zabbix了
作者:李先生
-------------------------------------------
个性签名:在平凡中坚持前行,总有一天会遇见不一样的自己!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!
微信公众号 微信打赏 支付宝打赏
posted on 2017-07-13 16:44 Captain_Li 阅读(1172) 评论(0) 编辑 收藏 举报