欢迎来到李先生的博客

深山的鹿,不知归处;万般皆苦,只可自渡。
扩大
缩小

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  阅读(628)  评论(0编辑  收藏

导航