Frank的学习之路

2.0_zabbix安装步骤

nginx mysql 先独立安装
php最后安装,编译的参数和nginx、mysql有关系

安装nginx,先安装nginx的依赖
yum -y install gcc gcc-c++ make tar pcre pcre-devel zlib zlib-devel openssl openssl-devel
1>.环境探测 ./configure 指定参数
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-http_v2_module
2>.编译make
3>.安装make install

mysql安装
mysql依赖库的安装
yum -y install autoconf //此包安装时会安装Data:Dumper模块
yum -y install cmake ncurses ncurses-devel
#make clean
#rm -f CMakeCache.txt
#mkdir -p /data/mysql

创建mysql用户
groupadd mysql
useradd -g mysql -M -s /sbin/nologin mysql

mysql源码安装
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=all -DWITH_DEBUG=0 -DWITH_SSL=yes -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1

make
make install

#cd /usr/local/mysql
#chown -R mysql:mysql /usr/local/mysql
#chown -R mysql:mysql /data/mysql
#先改配置 vim /etc/my.cnf
#mysql默认需要安装一些基本库才能启动,不像php和nginx,配置一下就能启动。
#chmod a+x ./scripts/mysql_install_db
#scripts/mysql_install_db --basedir=/usr/local/mysql --user=mysql -datadir=/data/mysql/ 初始化数据库
#nohup /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
# /usr/local/mysql/bin/mysql -h 127.0.0.1
#/usr/local/mysql/bin/mysqladmin -h 127.0.0.1 password '123456' -uroot
#show processlist;
#select Host,User,password from mysql.user;
#show grants for wp_user;
#select * from mysql.db where user='wp_user'\G;

下面作为参考
ln -s /usr/local/mysql/bin/mysql /usr/local/bin/
ln -s /usr/local/mysql/bin/mysqldump /usr/local/bin/
ln -s /usr/local/mysql/bin/mysqladmin /usr/local/bin/
mysql -uroot -S /data/mysql/mysql.sock
mysqladmin -uroot -S /data/mysql/mysql.sock password '123456'
mysql -uroot -S /data/mysql/mysql.sock -p
mysqladmin -uroot -p -S /data/mysql/mysql.sock shutdown
mysql两种连接方式,localhost要使用socket(用来管理的),ip的话就不需要了。

mysql的启动和关闭方式:
启动:nohup /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
关闭(把内存未写入磁盘的数据进行写入,预防数据丢失):mysqladmin -uroot -p -S /data/mysql/mysql.sock shutdown

mysql给用户权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;后续统一使用网络进行登录。socket和127.0.0.1的话我们就直接保留着,以防后续忘记密码等等我们还可以进行操作。

vim /etc/my.cnf
mysql5.6配置:
[mysqld]
port=3306
datadir=/data/mysql
socket=/data/mysql/mysql.sock
user=mysql
#default_password_lifetime = 0 #mysql5.7
skip-name-resolve
long_query_time=2
slow_query_log_file=/data/mysql/mysql-slow.log
expire_logs_days=2
innodb-file-per-table=1
innodb_data_file_path = ibdata1:1G:autoextend
innodb_flush_log_at_trx_commit = 2
log_warnings = 1
max_allowed_packet = 512M
connect_timeout = 60
net_read_timeout = 120

[mysqld_safe]
log-error=/data/mysql/mysqld.log
pid-file=/data/mysql/mysqld.pid

避免ibdata1文件大小暴涨配置:
innodb_file_per_table=1
innodb_data_file_path = ibdata1:1G:autoextend

php的安装
php的依赖库的安装
yum -y install epel-release libxml2 libxml2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel openldap openldap-devel libmcrypt libmcrypt-devel

cp -frp /usr/lib64/libldap* /usr/lib/

php源码的安装
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-ctype --with-mysql=mysqlnd --with-mysqli=mysqlnd --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-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --enable-fpm --disable-ipv6 --with-iconv-dir=/usr/local --enable-calendar --with-gettext --with-pdo-mysql=mysqlnd --enable-dom --with-libdir=lib64 --enable-bcmath
#--enable-fpm #nginx是使用fpm跟php进行连接

安装完成
make
make install
/usr/local/php/bin/php -v 检测安装版本
cp /root/zabbix/php-5.6.17/sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf
修改php-fpm.conf 去掉pid前的注释
cp /root/zabbix/php-5.6.17/php.ini-development /usr/local/php/etc/php.ini
cp /root/zabbix/php-5.6.17/sapi/fpm/php-fpm /etc/init.d/php-fpm
cp /root/zabbix/php-5.6.17/sapi/fpm/php-fpm /usr/local/bin

# echo 'ulimit -SHn 65535' >> /etc/rc.local
# ulimit -SHn 65535

vim /usr/local/php/lib/php.ini
cgi.fix_pathinfo=0 防止文件不存在,则阻止 Nginx 将请求发送到后端的 PHP-FPM 模块, 以避免遭受恶意脚本注入的攻击

配置 Nginx 使其支持 PHP 应用:

vim /usr/local/nginx/conf/nginx.conf
修改默认的 location 块,使其支持 .php 文件:

location / {
root html;
index index.php index.html index.htm;
}
下一步配置来保证对于 .php 文件的请求将被传送到后端的 PHP-FPM 模块, 取消默认的 PHP 配置块的注释,并修改为下面的内容:

location ~* \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}

/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx

创建测试文件

mv /usr/local/nginx/html/index.html ../
echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php

zabbix安装
测试php是否通
vim /usr/local/nginx/html/test.php
<?php
echo "test php ypu are success";
?>

curl '127.0.0.1/test.php'
测试mysql是否通
vim /usr/local/nginx/html/mysql.php
<?php
$link=mysqli_connect("127.0.0.1","zabbix","zabbix");
if(!$link){
echo "mysql_connect fail";
}else{
echo "mysql_connect success";
}
?>

curl '127.0.0.1/mysql.php'

zabbix的依赖库的安装
yum -y install mysql-devel net-snmp-devel
groupadd zabbix
useradd -g zabbix zabbix
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
make
make install
chown -R zabbix:zabbix zabbix/

zabbix mysql配置:
/usr/local/mysql/bin/mysql -h 127.0.0.1 -p123456
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@'127.0.0.1' identified by 'zabbix'; #zabbix_server需要配置mysql的用户名和密码,我建议使用ip登录mysql,如果使用的是localhost的话还要指定socket比较麻烦。
set names utf8;
use zabbix;
source /root/zabbix/zabbix-3.0.9/database/mysql/schema.sql; #如果只是proxy的话,导入schemal.sql就够了
source /root/zabbix/zabbix-3.0.9/database/mysql/data.sql;
source /root/zabbix/zabbix-3.0.9/database/mysql/images.sql;

zabbix web配置:
mkdir /usr/local/nginx/html/zabbix
cp -a /root/zabbix/zabbix-3.0.9/frontends/php/* /usr/local/nginx/html/zabbix/ 拷贝zabbix源码

网页进入zabbix: url/zabbix/index.php
修改php.ini文件,内容在底部
vim /usr/local/php/etc/php.ini
在php增加gettext扩展,方法下面
127.0.0.1
3306
zabbix
zabbix
zabbix
zabbix web的配置文件所在地(有时网页没权限生成,需要上传一下):/usr/local/nginx/html/zabbix/conf/zabbix.conf.php

zabbix server配置(web的得配置,zabbix_server的得配置):
vim /usr/local/zabbix/etc/zabbix_server.conf

LogFile=/usr/local/zabbix/zabbix_server.log
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
Timeout=30
AlertScriptsPath=/usr/local/zabbix/alertscripts 警告
ExternalScripts=/usr/local/zabbix/externalscripts 外部脚本
LogSlowQueries=3000

chown zabbix:zabbix -R /usr/local/zabbix/
/usr/local/zabbix/sbin/zabbix_server

zabbix agent配置:
vim /usr/local/zabbix/etc/zabbix_agentd.conf

PidFile=/usr/local/zabbix/zabbix_agentd.pid
LogFile=/usr/local/zabbix/zabbix_agentd.log
Server=127.0.0.1 服务器地址
ServerActive=127.0.0.1 服务器地址
UnsafeUserParameters=1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
Hostname=localhost web配置当前服务Hostname

以下是示例
PidFile=/usr/local/zabbix/zabbix_agentd.pid
LogFile=/usr/local/zabbix/zabbix_agentd.log
Server=172.21.3.217
ServerActive=172.21.3.217
UnsafeUserParameters=1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
Hostname=172-21-3-153


zabbix agent启动:
chown zabbix:zabbix -R /usr/local/zabbix/
/usr/local/zabbix/sbin/zabbix_agentd


php.ini配置
[PHP]
engine = On
short_open_tag = Off
asp_tags = Off
precision = 14
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 17
disable_functions =
disable_classes =
zend.enable_gc = On
expose_php = On
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = On
variables_order = "GPCS"
request_order = "GP"
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 16M
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
default_charset = "UTF-8"
doc_root =
user_dir =
enable_dl = Off
file_uploads = On
upload_max_filesize = 2M
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
always_populate_raw_post_data = -1
extension=gettext.so

[CLI Server]
cli_server.color = On
[Date]
date.timezone = PRC
[filter]
[iconv]
[intl]
[sqlite]
[sqlite3]
[Pcre]
[Pdo]
[Pdo_mysql]
pdo_mysql.cache_size = 2000
pdo_mysql.default_socket=
[Phar]
[mail function]
SMTP = localhost
smtp_port = 25
mail.add_x_header = On
[SQL]
sql.safe_mode = Off
[Interbase]
ibase.allow_persistent = 1
ibase.max_persistent = -1
ibase.max_links = -1
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
ibase.dateformat = "%Y-%m-%d"
ibase.timeformat = "%H:%M:%S"
[MySQL]
mysql.allow_local_infile = On
mysql.allow_persistent = On
mysql.cache_size = 2000
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off
[MySQLi]
mysqli.max_persistent = -1
mysqli.allow_persistent = On
mysqli.max_links = -1
mysqli.cache_size = 2000
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off
[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = Off
[OCI8]
[Sybase-CT]
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10
[bcmath]
bcmath.scale = 0
[browscap]
[Session]
session.save_handler = files
session.use_strict_mode = 0
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[Assertion]
[COM]
[mbstring]
[gd]
[exif]
[Tidy]
tidy.clean_output = Off
[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit = 5
[sysvshm]
[ldap]
ldap.max_links = -1
[mcrypt]
[dba]
[opcache]
[curl]
[openssl]

zabbix加载配置,检查加载php.ini路径方法:
vim index.php
<?php
echo phpinfo();
?>
web打开查看Configuration File (php.ini) Path /usr/local/php/etc



zabbix字体更换位置(默认的DejaVuSans.ttf字体有中文乱码,解决中文乱码问题需自己下载个字体):
vim /usr/local/nginx/html/zabbix/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME', 'msyh'); // font file name
define('ZBX_FONT_NAME', 'msyh');
更新为自己需要的
字体的目录在:/usr/local/nginx/html/zabbix/fonts/ 上传msyh.ttf 简体字


php增加gettext扩展: 四步 phpize,configure,make,make install
cd /root/zabbix/php-5.6.17/ext/gettext/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install

zabbix agent安装脚本:
yum -y install gcc gcc-c++
groupadd zabbix
useradd -g zabbix zabbix
usermod -s /sbin/nologin zabbix
或者:useradd -g zabbix -s /sbin/nologin zabbix
tar -zxvf zabbix-3.0.9.tar.gz
cd zabbix-3.0.9
./configure --prefix=/usr/local/zabbix --enable-agent
chown -R zabbix:zabbix /usr/local/zabbix/
返回顶部