晓夏

新手菜鸟Linux学习之路

不怕从零开始,只怕从未启程

安装ZABBIX服务器所需LNMP架构

浏览量:865

近期无聊!安装了个ZABBIX服务器做监控使用,此篇为安装ZABBIX监控服务器前所需准备工作;

此文出自http://www.osyunwei.com/archives/7891.html前辈的博客,本小白按照此文档操作的,其中有些问题,自己修改后写成本博客!

 

一、系统架构

操作系统:

# uname -a    #查看内核版本
Linux localhost.localdomain 2.6.32-573.18.1.el6.i686

# cat /etc/issue        #查看操作系统
CentOS release 6.3 (Final)
Kernel \r on an \m

 

二、同步时间

由于我是在虚拟机搭建的ZABBIX,所以为了预防时间戳的问题,我们先与网络同步下时间

# /usr/sbin/ntpdate    asia.pool.ntp.org        #使用ntpdate同步时间

# date     #查看系统当前时间
2016年 03月 22日 星期二 14:57:30 CST

 

三、设置iptables防火墙

# vim /etc/sysconfig/iptables        #配置iptables防火墙,允许80和3306端口
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
:wq!    #保存退出

说明:这里的80端口和3306端口的这两条必须放在22端口这条的下面,有些人放在了最下面,结果就是无法访问nginx.

# service iptables restart       #重启防火墙
# iptables -L -n        #查看防火墙规则是否生效

 

四、关闭SELINUX

# vim /etc/selinux/config        #编辑SELINUX配置文件
SELINUX=disabled    #将此行的enforcing改为disabled
SELINUXTYPE=targeted    #注释掉这行

:wq!    #保存退出

 # setenforce 0        #使SELINUX配置强制生效

 

五、有关系统约定

源码包存放位置:/usr/local/src
源码包:/usr/local/软件名

 

六、软件包下载

我已将软件包打包上传到CSDN上,如有需要请自行下载!由于我的csdn上传限制只有60MB,所以做成了两个,把mysql和zabbix两个包单独做了个,见谅。

下载地址:
http://download.csdn.net/detail/love_mylp/9470582
http://download.csdn.net/detail/love_mylp/9470587

 

七、配置YUM网络源

# cd /etc/yum.repos.d/        #进入yum源目录
# rm -rf *            #将此目录里所有文件全部删除
# wget

 

八、安装编译工具及库文件(使用YUM安装)

# yum install -y apr* autoconf automake bison bzip2 bzip2* cloog-ppl compat* cpp curl curl-devel fontconfig fontconfig-devel freetype freetype* freetype-devel gcc gcc-c++ gtk+-devel gd gettext gettext-devel glibc kernel kernel-headers keyutils keyutils-libs-devel krb5-devel libcom_err-devel libpng libpng-devel libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libgomp libxml2 libxml2-devel libXpm* libtiff libtiff* make mpfr ncurses* ntp openssl openssl-devel patch pcre-devel perl php-common php-gd policycoreutils telnet t1lib t1lib* nasm nasm* wget zlib-devel libxcb*

说明:这里可能会遇到报错
Transaction Check Error:
  file /usr/lib64/libxcb-icccm.so.1.0.0 from install of compat-xcb-util-0.3.6-6.el6.x86_64 conflicts with file from package xcb-util-0.3.6-1.el6.x86_64
 
Error Summary
-------------

解决方法: 
卸载libxcb*,然后重新安装,以解决冲突
# yum remove libxcb*    #卸载libxcb* 命令
重新执行第八步再次YUM安装就能解决了

 

九、安装cmake

# cd /usr/local/src/        #到源码包存放目录
# tar zxf cmake-2.8.11.2.tar.gz    #解压缩源码包
# cd cmake-2.8.11.2    #进入cmake源码包解压后目录
# ./configure        #安装
# make && make install    #编译


十、安装mysql

# groupadd mysql    #创建数据库用户组
# useradd mysql -g mysql -s /bin/false    #创建用户mysql并加到mysql组,不允许mysql用户直接登录系统
# mkdir -pv /data/mysql    #创建Mysql数据库存放目录
# chown -R mysql.mysql /data/mysql/    #修改Mysql数据库存放目录属主、属组
# mkdir -pv /usr/local/mysql        #创建mysql安装目录
# cd /usr/local/src/    #进入源码包存放目录
# tar zxf mysql-5.6.19.tar.gz    #解压缩mysql
# cd mysql-5.6.19    #进入mysql源码包解压后目录
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc    #安装mysql数据库并制定参数
# make && make install    #编译安装
# rm -rf /etc/my.cnf    #删除系统默认的mysql配置文件(如果没有就不用删除了)
# cd /usr/local/mysql/    #进入mysql安装目录
# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql/    #生成mysql系统数据库文件
# ln -s /usr/local/mysql/my.cnf /etc/my.cnf    #将mysql的配置文件做个软链接到系统默认的mysql配置文件位置
# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld        #将mysql启动文件复制到rc.d/init.d目录下
# \cp ./support-files/mysql.server /etc/init.d/mysqld    #将mysql启动文件复制到init.d目录下    
# chmod +x /etc/init.d/mysqld    #添加执行权限
# chkconfig mysqld on    #添加为开机自启动
# vim /etc/rc.d/init.d/mysqld    #编辑
basedir=/usr/local/mysql    #Mysql程序安装路径
datadir=/data/mysql    #Mysql数据库存放目录

:wq!    #保存退出

# vim /etc/init.d/mysqld    #编辑
basedir=/usr/local/mysql    #Mysql程序安装路径
datadir=/data/mysql    #Mysql数据库存放目录


:wq!    #保存退出

# service mysqld start       #启动mysqld服务
# vim /etc/profile    #把mysql服务加入系统环境变量,在最后一行添加
export PATH=$PATH:/usr/local/mysql/bin    #添加mysql环境变量

:wq!    #保存退出
# source /etc/profile        #是环境变量立刻生效

说明:下面这两行是把mysql的库文件链接到系统默认的位置,这样你在编译类似PHP等软件时就不用指定mysql库文件地址了。
# ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
# ln -s /usr/local/mysql/include/mysql /usr/include/mysql
mkdir /var/lib/mysql    #创建目录
# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock    #添加软链接
# mysql -u root    #进入mysql数据库默认无密码
mysql> select host,user,password from mysql.user;    #查看数据库内user表信息
+-----------------------+------+----------+
| host                  | user | password |

+-----------------------+------+----------+
| localhost             | root |          |
| localhost.localdomain | root |          |
| 127.0.0.1             | root |          |
| ::1                   | root |          |
| localhost             |      |          |
| localhost.localdomain |      |          |
+-----------------------+------+----------+
6 rows in set (0.00 sec)

mysql> delete from mysql.user where host = 'localhost' and user = '';    #删除没用的数据
mysql> delete from mysql.user where host = 'localhost.localdomain';    #删除没用的数据
mysql> delete from mysql.user where host = '127.0.0.1';    #删除没用的数据
mysql> delete from mysql.user where host = '::1';    #删除没用的数据
mysql> update mysql.user set password=password('123456') where user='root';    #设置数据库密码为123456
mysql> update mysql.user set host='%' where user='root';
mysql> flush privileges;        #使mysql数据库内修改生效
mysql> exit        #退出数据库

 

十一、安装pcre

# cd /usr/local/src/    #进入源码包存放目录
# mkdir -pv /usr/local/pcre    #创建安装目录
# tar zxf pcre-8.35.tar.gz    #解压缩
# cd pcre-8.35        #进入解压缩后目录
# ./configure --prefix=/usr/local/pcre/    #安装
# make && make install    #编译
# echo $?    #查看返回值,如果为0表示安装正常,其他则表示安装失败

 

十二、安装openssl

# cd /usr/local/src/    #进入源码包存放目录
# mkdir -pv /usr/local/openssl    #创建安装目录
# tar zxf openssl-1.0.1h.tar.gz    #解压缩
# cd openssl-1.0.1h    #进入解压缩后目录
# ./config --prefix=/usr/local/openssl/    #安装
# make && make install    #编译
# vim /etc/profile    #把openssl加入到系统环境变量
export PATH=$PATH:/usr/local/openssl/bin

:wq!    #保存退出

# source /etc/profile    #是系统环境变量立即生效

 

 

十三、安装zlib

# cd /usr/local/src/    #进入源码包存放位置
# mkdir -pv /usr/local/zlib    #创建安装目录
# tar zxf zlib-1.2.8.tar.gz    #解压缩
# cd zlib-1.2.8    #进入解压缩后目录
# ./configure --prefix=/usr/local/zlib/    #安装
# make && make install    #编译

 

十四、安装NGINX(WEB服务器)

# groupadd www    #创建nginx用户组名为www
# useradd www -g www -s /sbin/nologin    #创建nginx用户并加入组为www,并且设置禁止登陆系统
# cd /usr/local/src/    #进入源码包存放位置
# tar zxf nginx-1.6.0.tar.gz    #解压缩
# cd nginx-1.6.0    #进入解压缩后目录
# ./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=/usr/local/src/openssl-1.0.1h --with-zlib=/usr/local/src/zlib-1.2.8 --with-pcre=/usr/local/src/pcre-8.35
参数说明: 指定安装目录为nginx,不安装memcached模块,指定用户为www,用户组为www,安装健康检测模块、ssl模块和压缩模块,指定openssl、zlib、pcre源码包存放目录,这里的指定目录是源码包存放目录不是安装目录,切记,否则会报错.

# make && make install    #编译
# /usr/local/nginx/sbin/nginx    #启动nginx服务
# lsof -i:80    #查看80端口是否被监听


十五、设置nginx开机启动

启动文件我已经打包放在CSDN中了,请自行下载,还是上文提到的那个包中,也可以自行上网上下载,百度一堆.
放到/etc/rc.d/init.d/下,命名为nginx.

# chmod +x /etc/rc.d/init.d/nginx    #添加执行权限
# chkconfig nginx on    #设置开机自启动
# service nginx restart    #重启nginx服务

十六、测试Nginx是否安装成功

在浏览器中输入你的服务器ip地址,如果出现如下界面证明成功,由于我的是内网的,所以我输入的是192.168.1.198这个内网ip.

nginx.png

十六、安装yasm

# cd /usr/local/src/    #进入源码包安装目录
# tar zxf yasm-1.2.0.tar.gz     #解压缩
# cd yasm-1.2.0    #进入解压缩后目录
# ./configure    #安装
# make && make install    #编译


十七、安装libmcrypt

# cd /usr/local/src/    #进入源码包安装目录
# tar zxf libmcrypt-2.5.8.tar.gz    #解压缩
# cd libmcrypt-2.5.8    #进入目录
# ./configure    #安装
# make && make install    #编译


十八、安装libvpx

# cd /usr/local/src/    #进入源码包存放目录
# tar jxf libvpx-v1.3.0.tar.bz2    #解压缩
# cd libvpx-v1.3.0    #进入目录
# ./configure --prefix=/usr/local/libvpx --enable-shared --enable-vp9    #安装
# make && make install    #编译


十九、安装tiff

# cd /usr/local/src/    #进入源码包存放目录
# tar zxf tiff-4.0.3.tar.gz    #解压缩
# cd tiff-4.0.3    #进入目录
# ./configure --prefix=/usr/local/tiff --enable-shared    #安装
# make && make install    #编译

 

二十、安装libpng

# cd /usr/local/src/    #进入源码包
# tar zxf libpng-1.6.7.tar.gz    #解压缩
# cd libpng-1.6.7    #进入目录
# ./configure --prefix=/usr/local/libpng --enable-shared    #安装
# make && make install    #编译


 

 

 

 

 

 

二十一、安装freetype

# cd /usr/local/src/    #进入源码包存放目录
# tar zxf freetype-2.5.3.tar.gz    #解压缩
# cd freetype-2.5.3    #进入目录
# ./configure --prefix=/usr/local/freetype --enable-shared    #编译
# make && make install    #编译

 

二十二、安装jpeg

# cd /usr/local/src/    #进入源码包安装目录
# tar zxf jpegsrc.v9a.tar.gz    #解压缩
# cd jpeg-9a/    #进入安装目录
# ./configure --prefix=/usr/local/jpeg --enable-shared    #安装
# make && make install    #编译

 

二十三、安装libgd

# cd /usr/local/src/    #进入源码包安装目录
# tar zxf libgd-2.1.0.tar.gz    #解压缩
# cd libgd-2.1.0    #进入目录
# ./configure --prefix=/usr/local/libgd --enable-shared --with-jpeg=/usr/local/jpeg --with-png=/usr/local/libpng --with-freetype=/usr/local/freetype --with-fontconfig=/usr/local/freetype --with-xpm=/usr/ --with-tiff=/usr/local/tiff --with-vpx=/usr/local/libvpx    #安装及参数
# make && make install    #编译

 

二十四、安装t1lib

# cd /usr/local/src/    #进入源码包安装目录
# tar zxf t1lib-5.1.2.tar.gz    #解压缩
# cd t1lib-5.1.2    #进入目录
# ./configure --prefix=/usr/local/t1lib --enable-shared #安装
# make without_doc  #编译
# make install

 

二十五、安装php

注意:如果系统是64位系统,请执行以下两条命令,否则安装php会报错(32位系统不需要执行)
\cp -frp /usr/lib64/libltdl.so*  /usr/lib/    #\cp是不提示直接覆盖
\cp -frp /usr/lib64/libXpm.so* /usr/lib/

# cd /usr/local/src/    #进入源码包安装目录
# tar zxf php-5.5.14.tar.gz    #解压缩
# cd php-5.5.14    #进入php目录
# export LD_LIBRARY_PATH=/usr/local/libgd/lib    #声明环境变量
# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-pdo-mysql=/usr/local/mysql --with-gd --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype --with-xpm-dir=/usr/ --with-vpx-dir=/usr/local/libvpx/ --with-zlib-dir=/usr/local/zlib --with-t1lib=/usr/local/t1lib --with-iconv --enable-libxml --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-opcache --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl --enable-ctype    #安装php
# make && make install    #编译
#########################################
注意:如果系统之前安装了libiconv源码包的可能会遇到这个错误
/usr/local/src/php-5.3.10/ext/xmlrpc/libxmlrpc/encodings.c:73: undefined reference to `libiconv_open' /usr/local/src/php-5.3.10/ext/xmlrpc/libxmlrpc/encodings.c:81: undefined reference to `libiconv' /usr/local/src/php-5.3.10/ext/xmlrpc/libxmlrpc/encodings.c:101: undefined reference to `libiconv_close' collect2: ld returned 1 exit status make: *** [sapi/fpm/php-fpm] 错误

解决办法:在configure编译之后编辑Makefile的文件(就在php目录中,只有执行完configure之后才会出现)

找到其中的EXTRA_LIBS = -lcrypt -lz -lcrypt -lrt -lmysqlclient -lmcrypt -lldap -llber -lfreetype -lpng -lz -ljpeg -lcurl -lz -lrt -lm -ldl -lnsl -lrt -lxml2 -lz -lm -lssl -lcrypto -ldl -lz -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz -lxml2 -lz -lm -lssl -lcrypto -ldl -lz -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt

在后面加上-liconv后保存退出

然后执行make clean all
最后执行make test
#########################################

# cp php.ini-production /usr/local/php/etc/php.ini  #复制php配置文件到安装目录
# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf    #拷贝模板文件为php-fpm配置文件
# ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf    #做个软链接
# vim /usr/local/php/etc/php-fpm.conf    #编辑php-fpm配置文件
user = www    #设置php-fpm用户为www
group = www    #设置php-fpm组为www
pid = run/php-fpm.pid    #将这行的注释取消

:wq!    #保存退出


2、设置php-fpm开机启动
# cp /usr/local/src/php-5.5.14/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm    #复制启动文件到系统目录
# chmod +x /etc/rc.d/init.d/php-fpm    #添加执行权限
# chkconfig php-fpm on    #添加开机启动


3、编辑php.ini配置文件
# vim /usr/local/php/etc/php.ini
找到:disable_functions =
修改为:disable_functions =
passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname    #此项为php可以禁用的函数,如果某些程序需要用到这个函数,可以从上面删除。
找到:;date.timezone =

修改为:date.timezone = PRC    #设置时区

找到:expose_php = On

修改为:expose_php = Off    #禁止显示php版本信息

找到:short_open_tag = Off

修改为:short_open_tag = On    #支持php短标签

找到:;opcache.enable=0    

修改为:opcache.enable=1    #使php支持opcode缓存

找到:;opcache.enable_cli=0

修改为:opcache.enable_cli=0    #使php支持opcode缓存

在最后添加:zend_extension=opcache.so    #开启opcache缓存

:wq!    #保存退出


4、配置Nginx使支持php
# vim /usr/local/nginx/conf/nginx.conf    #编辑nginx配置文件
user  www www;        #这里的用户和组必须和php-fpm的一致
worker_processes  2;    #进程数一般为cpu的两倍

server {
    servername    192.168.1.198    #写成ip地址或域名(做了dns解析)
    location /    {
        index  index.html index.htm index.php;     #加上index.php   
    }

    location ~ \.php$ {    #以下为php配置
            root           html;
            fastcgi_pass   127.0.0.1:9000;        #转发给本地9000端口
            fastcgi_index  index.php;             #php主页
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
 }

 :wq!    #保存退出
注意:取消FastCGI server部分location的注释,注意fastcgi_param行的参数,改为$document_root$fastcgi_script_name,或者使用绝对路径
 
# service nginx restart    #重启nginx
# service php-fpm start    #启动php-fpm
# lsof -i:9000    #查看9000端口是否启用
# lsof -i:80       #查看80端口是否启用

 

二十五、测试php-fpm是否成功

# cd /usr/local/nginx/html/    #进入nginx存放页面目录
# rm -rf *    #删除所有页面
# vim index.php    #新建index.php页面
<?php
        phpinfo();
?>

:wq!    #保存退出


# chown www.www /usr/local/nginx/html/ -R    #修改nginx存放页面目录的属主属组, -R是递归
# chmod 700 /usr/local/nginx/html/ -R    #修改目录权限

在浏览器中输入ip地址或域名,会看到下面的界面:

 php.png


 好了,到此我们的LNMP架构就正式完成了,下一章将部署Zabbix服务器.

分享:

支付宝

微信