zabbix安装、部署、lnmp(一)

时间:2023-03-09 16:25:52
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..tar.gz -C /usr/local/lnmp
cd /usr/local/lnmp/mysql-5.6.
cmake .-DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=gbk,gb2312 -DENABLED_LOCAL_INFILE=
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=
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
报错:
zabbix安装、部署、lnmp(一)
解决办法:
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..tar.bz2 -C /usr/local/lnmp
cd /usr/local/lnmp/php-5.6.
./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./usr/lib/libmysqlclient.so.
ldconfig
--或者
echo /usr/local/mysql/lib >>/etc/ld.so.conf.d/lnmp.conf && ldconfig
错误二:
./configure之后如果直接make会报下面的错误
collect2: ld returned  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..tgz -C /usr/local/lnmp
cd /usr/local/lnmp/memcache-2.2.
/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./modules
Installing shared extensions:/usr/local/php/lib/php/extensions/no-debug-non-zts-/
echo /usr/src/lnmp/memcache-2.2./modules/>>/etc/ld.so.conf.d/lnmp.conf
/sbin/ldconfig
安装绘图引擎模块imagemagick,与GD类似
tar -zxvf ImageMagick-6.7.-.tar.gz -C /usr/local/lnmp
cd /usr/local/lnmp/ImageMagick-6.7.-
./configure
make;make install
/sbin/ldconfig
安装imagick(连接php与imagemagick的通道)
tar xf imagick-3.1..tgz-C /usr/src/lnmp/
cd /usr/src/lnmp/imagick-3.1./
/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./modules
Installing shared extensions:/usr/local/php/lib/php/extensions/no-debug-non-zts-/
echo /usr/local/lnmp/imagick-3.1./modules >>/etc/ld.so.conf.d/lnmp.conf
/sbin/ldconfig
到此,与nginx之前要编译的所有软件及扩展模块完成
验证此目录里有三个安装模块,表示安装OK
ls /usr/local/php/lib/php/extensions/no-debug-non-zts-/
imagick.so memcache.so opcache.so opcache.a
4)拷贝并配置php配置文件,加上前面所编译的模块支持
cp /usr/local/lnmp/php-5.6./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=
opcache.enable_cli=
opcache.memory_consumption=
opcache.optimization_level=
opcache.interned_strings_buffer=
opcache.max_accelerated_files=
opcache.revalidate_freq=
opcache.fast_shutdown=
opcache.save_comments=
关于几个参数的说明 
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..tar.gz -C /usr/local/lnmp
cd /usr/local/lnmp/nginx-1.8./
./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
listen =/var/run/fastcgi/fastcgi.socket
php_flag[display_errors]= on
user = nginx
group = nginx
pm.max_children =
pm.start_servers =
pm.min_spare_servers =
pm.max_spare_servers =
pm.max_requests =
rlimit_files =
listen.owner = nginx
listen.group = nginx
listen.mode =
最后三行是控制启动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 ;--启动ngnix的服务的工作进程数
error_log logs/error.log info;--错误日志以及日志等级
pid logs/nginx.pid;--pid文件
worker_rlimit_nofile ;--nginx每个进程能打开的最大的文件描述符数
events {
use epoll;--epoll工作模式
worker_connections ;--每个进程允许打开的并发连接数
}
http {
include mime.types;
default_type application/octet-stream;
server_tokens off;
sendfile on;
tcp_nopush on;
keepalive_timeout ;
gzip on;
server {
listen ;--监听的端口
server_name 10.1.1.8;--域名或者IP
charset utf8;--字符集
root /lnmp/web;--家目录
index index.php index.html index.htm;--主页文件
error_page /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安装、部署、lnmp(一)
二、zabbix的安装
服务端安装
2:先yum安装net-snmp-devel,要不然下面编译安装的时候会报错
    yum -y install net-snmp-devel
3:解压 、安装
    tar -zxvf zabbix-3.2..tar.gz -C /usr/local/lnmp
yum install net-snmp-devel
./configure --prefix=/usr/local/zabbix-3.2.--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 '';

创建zabbix数据库

    create database zabbix
zabbix数据库授权给zabbix账号:
    grant all privileges on zabbix.* to 'zabbix'@'%' identified by ''
grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by ''
flush privileges;
使用zabbix账号登录进去以后可以看到zabbix数据库:/usr/local/mysql/bin/mysql -uzabbix -p
    mysql> show databases;
+--------------------+
|Database|
+--------------------+
| information_schema |
| test |
| zabbix |
+--------------------+
rows inset(0.00 sec)
从本地导入zabbix数据库的一些表
/usr/local/mysql/bin/mysql zabbix </usr/local/lnmp/zabbix-3.2./database/mysql/schema.sql
/usr/local/mysql/bin/mysql zabbix </usr/local/lnmp/zabbix-3.2./database/mysql/images.sql
/usr/local/mysql/bin/mysql zabbix </usr/local/lnmp/zabbix-3.2./database/mysql/data.sql
6:编辑zabbix服务端的配置文件
    mkdir -p /etc/zabbix
cp /usr/local/zabbix-3.2./etc/zabbix_server.conf /etc/zabbix
vim /etc/zabbix/zabbix_server.conf
    DBName=zabbix
DBUser=zabbix
DBPassword=
DBPort=
ListenIP=10.0.0.146
    echo "/usr/local/mysql/lib">>/etc/ld.so.conf
ldconfig
7:zabbix服务端的启动
    /usr/local/zabbix-3.2./sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
zabbix客户端的启动,这里在编译的时候顺便把客户端也编译了
    /usr/local/zabbix-3.2./sbin/zabbix_agentd
zabbix web 安装
1:创建zabbix数据目录,并且把前端文件拷贝过去
    mkdir -p /zabbix_web/zabbix
cp -r /usr/local/lnmp/zabbix-3.2./frontends/php/*/zabbix_web/zabbix
2:编辑虚拟主机文件
user nginx nginx;
worker_processes ;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
use epoll;
worker_connections ;
}
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 ;
gzip on;
server {
listen ;
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,会出现
zabbix安装、部署、lnmp(一)
点击下一步:出现错误
zabbix安装、部署、lnmp(一)
说明配置文件没有配置好,打开php的配置文件php.ini
vim /usr/local/php/etc/php.ini
    post_max_size =16M
max_execution_time =
max_input_time =
always_populate_raw_post_data =-
然后杀掉fpm进程,重启,刷新界面,就得到正确的了
    pkill fpm
/usr/local/php/sbin/php-fpm -D -y /usr/local/php/etc/php-fpm.conf
zabbix安装、部署、lnmp(一)
点击下一步,配置数据库
zabbix安装、部署、lnmp(一)
点击下一步,设置zabbix服务器的一些东西
zabbix安装、部署、lnmp(一)
下一步,下一步,会出现
zabbix安装、部署、lnmp(一)
这里是没有权限写入进去,所以自己手动先下载配置文件,然后保存到/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']='';
$DB['DATABASE']='zabbix';
$DB['USER']='zabbix';
$DB['PASSWORD']='';
//Schema name.Usedfor IBM DB2 and PostgreSQL.
$DB['SCHEMA']='';
$ZBX_SERVER ='10.0.0.146';
$ZBX_SERVER_PORT ='';
$ZBX_SERVER_NAME ='zabbix-server';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
完成之后,就进入到这个登录界面了:
zabbix安装、部署、lnmp(一)
默认账号:Admin
       密码: zabbix 
登录进去之后,会看到
zabbix安装、部署、lnmp(一)
zabbix 客户端安装 
下载、解压、安装
    tar -zxvf zabbix-3.2..tar.gz -C /usr/local/lnmp
./configure --prefix=/home/lile/zabbix-3.2.--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./sbin/zabbix_agentd
安装基本上完成了,接下来就是把怎么用zabbix,怎么用好zabbix了