zabbix-web切换为nginx及https

zabbix-web切换为nginx及https

1、背景和环境

zabbix使用了很久,安装的时候并没有选择复杂的源码编译安装,所以默认采用了apache的httpd提供web服务。由于对httpd并没有深入研究,而且个人对httpd的配置文件格式很不感冒,怎么办?当然是换nginx呀!顺便加上https证书安全安全。
本文中的环境如下:
系统版本:CentOS Linux release 7.4.1708 (Core)
软件版本:
zabbix 4.0.0
nginx 1.16.0
php 5.6.40

2、安装nginx

2.1、编译参数

apache httpd通过模块来使用php,nginx连接php则需要单独安装php,首先编译安装nginx
编译参数和步骤如下,来自我的github

#!/bin/bash
#定义版本
VERSION=1.16.0
#安装依赖包
yum install gcc gcc-c++ glibc pcre-devel zlib-devel openssl-devel -y
#用户创建
/usr/sbin/useradd -M -s /sbin/nologin www
#编译安装
cd ~
wget http://nginx.org/download/nginx-${VERSION}.tar.gz
tar xf nginx-${VERSION}.tar.gz
cd nginx-${VERSION}
./configure --prefix=/usr/local/nginx --pid-path=/usr/local/nginx/run/nginx.pid --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module
make && make install
cd /usr/local/nginx/conf/
grep -Ev '^$|#' nginx.conf.default > nginx.conf
#清除包
cd ~
rm -rf nginx-${VERSION} nginx-${VERSION}.tar.gz

2.2、修改配置文件并配置https

/usr/local/nginx/confnginx.conf

[root@zabbix ~]# cat /usr/local/nginx/conf/nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server_tokens   off;
    include /usr/local/nginx/conf/Include/*.conf;
}

cat /usr/local/nginx/conf/Include/zabbix.conf

[root@zabbix ~]# cat /usr/local/nginx/conf/Include/zabbix.conf
server {
    listen       80;
    server_name  www.zabbix.cn;
    return 301   https://www.zabbix.cn$request_uri;
}
server {
    listen       443 ssl;
    server_name  www.zabbix.cn
    if ($host != 'www.zabbix.cn') {
        return 403;
    }
    root /usr/share/zabbix;   
    index index.php index.html index.htm; 
    ssl_certificate     /usr/local/nginx/ssl-certs/2505454_www.zabbix.cn.pem;
    ssl_certificate_key /usr/local/nginx/ssl-certs/2505454_www.zabbix.cn.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    access_log      /var/log/nginx/ngnix_access.log;
    error_log       /var/log/nginx/ngnix_error.log;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ^~ /app {
        deny all;
    }
    location ^~ /conf {
        deny all;
    }
    location ^~ /local {
        deny all;
    }
    location ^~ /include {
        deny all;
    }
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

2.3、配置nginx为系统服务

vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true

[Install]  
WantedBy=multi-user.target
  • 加载系统服务
systemctl daemon-reload
  • 设置开机启动
systemctl enable nginx
  • 启动 nginx
systemctl start nginx
  • 停止
systemctl stop nginx
  • 加载配置文件
systemctl reload nginx

3、安装php

3.1、编译安装

3.1.1、编译参数

php的编译安装稍微复杂,复杂点就在于它的编译参数,php的编译参数很多,这里尽量最小化安装,如何选择参数,可通过在第一次安装zabbix的时候环境检测查看到,参数不满足是无法正常安装使用的,我通过本地虚拟机重新安装了一遍zabbix,得到具体环境参数如下,每列可依次理解为:名称、检测结果、需满足的结果、检测是否通过。

PHP version     5.6.40                  5.4.0       OK
PHP option      "memory_limit"          128M    128M    OK
PHP option      "post_max_size"         8M  16M Fail
PHP option      "upload_max_filesize"   2M  2M  OK
PHP option      "max_execution_time"    30  300 Fail
PHP option      "max_input_time"        -1  300 OK
PHP option      "date.timezone"         unknown     Fail
PHP databases support                   MySQL           OK
PHP bcmath      on                      OK
PHP mbstring    on                      OK
PHP option      "mbstring.func_overload"    off off OK
PHP option      "always_populate_raw_post_data" on  off Fail
PHP sockets     on              OK
PHP gd          2.1.0   2.0     OK
PHP gd PNG      support on      OK
PHP gd JPEG     support on      OK
PHP gd FreeType support on      OK
PHP libxml      2.9.1           2.6.15  OK
PHP xmlwriter   on              OK
PHP xmlreader   on              OK
PHP LDAP        off             Warning
PHP ctype       on              OK
PHP session     on              OK
PHP option      "session.auto_start"    off off OK
PHP gettext     off     Warning
PHP option      "arg_separator.output"  &   &   OK

查看上述参数,最后确认一个合适的编译参数,如果第一次编译少了某些参数,也可通过不重新编译添加模块的方法,最终编译参数如下:

./configure --prefix=/usr/local/php-5.6.40 \
--enable-opcache \
--with-config-file-path=/usr/local/php-5.6.40/etc \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-fpm \
--enable-static \
--enable-inline-optimization \
--enable-sockets \
--enable-wddx \
--enable-zip \
--enable-calendar \
--enable-bcmath \
--enable-soap \
--with-zlib \
--with-iconv \
--with-gd \
--with-xmlrpc \
--enable-mbstring \
--with-curl \
--with-gettext \
--with-ldap \
--enable-ftp \
--with-mcrypt  \
--with-freetype-dir=/usr/local/freetype.2.1.10 \
--with-jpeg-dir=/usr/local/jpeg.6 \
--with-png-dir=/usr/local/libpng.1.2.50 \
--disable-ipv6 \
--disable-debug \
--with-openssl \
--disable-maintainer-zts \
--disable-fileinfo
3.1.2、排错

编译安装时可能出现的报错和解决办法如下,具体不做分析
报错一:

configure: error: Cannot find ldap.h

解决办法:

yum install -y openldap openldap-devel

报错二:

configure: error: Cannot find ldap libraries in /usr/lib.

解决办法:

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

报错三:

//.usrlibs//lib64ldap.o/:liblber -undefined2.4.so.2 :reference  errorto  addingsymbol  symbols':ber_scanf 'DSO
 /missingusr /fromlib64 /commandliblber -line2.4.so.2
: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
collect2: error: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
make: *** Waiting for unfinished jobs....
make: *** [sapi/cgi/php-cgi] Error 1
/usr/bin/ld: ext/ldap/.libs/ldap.o: undefined reference to symbol 'ber_scanf'
/usr/lib64/liblber-2.4.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

解决办法:

vim Makefile 在这行最后添加-llber
EXTRA_LIBS = -lcrypt -lz -lresolv -lcrypt -lrt -lmcrypt -lldap -lpng -lz -ljpeg -lcurl -lz -lrt -lm -ldl -lnsl -lxml2 -lz -lm -ldl -lssl -lcrypto -lcurl -lxml2 -lz -lm -ldl -lssl -lcrypto -lfreetype -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lcrypt -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lssl -lcrypto -lcrypt -llber

3.2、配置

编译安装完php后,需要修改配置文件php.ini中的内容以满足上述检测:

post_max_size = 16M
max_input_time = 300
max_execution_time = 300
date.timezone = Asia/Shanghai
always_populate_raw_post_data = -1

3.3、配置php为系统服务

编译安装php的,会在php目录生成很多二进制文件,找到init.d.php-fpm,拷贝到init.d下。

cp /usr/local/src/php-5.6.33/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

设置权限

chmod 755 /etc/init.d/php-fpm

配置php-fpm.conf

vim /usr/local/etc/php-fpm.conf

如果打开了pid配置,需要将pid(;pid = run/php-fpm.pid)前的;去掉。
启动

/etc/init.d/php-fpm start

3.4、启动

编译配置没有问题,可正常启动

4、访问及排错

访问时出现的报错及解决办法如下
报错一:

FastCGI sent in stderr: "PHP message: PHP Warning:  require_once(/etc/zabbix/web/maintenance.inc.php):   failed to open stream: Permission denied in /app/nginx/html/zabbix/include/classes/core/ZBase.php on line 292
PHP message: PHP Fatal error:  require_once(): Failed opening required '/etc/zabbix/web/mainte‘

解决办法:

chmod -R 755 /etc/zabbix/web

报错二:

Database error
Error connecting to database: No such file or directory

解决办法:修改php-fpm.conf

mysqli.default_socket = /var/lib/mysql/mysql.sock

最终,切换nginx及配置https成功:
20190715-01.png

转载于:https://www.cnblogs.com/ssgeek/p/11190995.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下载zabbix server源码包 `wget -o zabbix-4.0.4.tar.gz <https://sourceforge.net/projects/zabbix/files/ZABBIX Latest Stable/4.0.4/zabbix-4.0.4.tar.gz/download`> 安装依赖 `yum install wget telnet net-tools python-paramiko gcc gcc-c++ dejavu-sans-fonts python-setuptools python-devel sendmail mailx net-snmp net-snmp-devel net-snmp-utils freetype-devel libpng-devel perl unbound libtasn1-devel p11-kit-devel OpenIPMI unixODBC libevent-devel mysql-devel libxml2-devel libssh2-devel OpenIPMI-devel java-1.8.0-openjdk-devel openldap-devel curl-devel unixODBC-devel` 解压并编译安装 `tar -zxvf zabbix-4.0.4.tar.gz` `cd zabbix-4.0.4/` 建立编译安装目录 `mkdir -p /data/zabbix` `./configure --prefix=/data/zabbix --enable-server --enable-agent --enable-java --with-mysql --with-libxml2 --with-unixodbc --with-net-snmp --with-ssh2 --with-openipmi --with-ldap --with-libcurl --with-iconv` `make&&make; install` `/data/zabbix/sbin/zabbix_server -V` 数据库安装 `yum install mariadb-server` `systemctl start mariadb.service` `systemctl status mariadb.service` `mysql_secure_installation` 创建zabbix数据库 `mysql -uroot -p` `create database zabbix character set utf8 collate utf8_bin;` `grant all privileges on zabbix.* to zabbix@localhost identified by ‘123456’;` 导入zabbix数据结构 `mysql -uzabbix -p123456 zabbix < /root/zabbix-4.0.4/database/mysql/schema.sql` `mysql -uzabbix -p123456 zabbix < /root/zabbix-4.0.4/database/mysql/images.sql` `mysql -uzabbix -p123456 zabbix < /root/zabbix-4.0.4/database/mysql/data.sql` 更改zabbix-server配置文件 `[root@localhost ~]# egrep -v "^#|^$" /data/zabbix/etc/zabbix_server.conf` `LogFile=/tmp/zabbix_server.log` `DBHost=localhost` `DBName=zabbix` `DBUser=zabbix` `DBPassword=123456` `Timeout=4` 增加用户 `groupadd --system zabbix` `useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" Zabbix` 启动zabbix server `/data/zabbix/sbin/zabbix_server -c /data/zabbix/etc/zabbix_server.conf` 启动zabbix agent `/data/zabbix/sbin/zabbix_agentd -c /data/zabbix/etc/zabbix_agentd.conf` 安装Zabbix Agent `yum install zabbix-agent` `systemctl start zabbix-agent.service` 安装zabbix前端 `rpm -ivh <https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm>` `yum -y install zabbix-web-mysql` `egrep -v “^#|^$” /etc/php.ini` `max_execution_time = 300` `memory_limit = 128M` `post_max_size = 16M` `upload_max_filesize = 2M` `max_input_time = 300` `max_input_vars = 10000` `always_populate_raw_post_data = -1` `date.timezone = Asia/Shanghai` `` 启动httpd `systemctl start httpd.service` `systemctl status httpd.service` 访问 http://webIP/zabbix/setup.php 默认账号密码 Admin zabbix

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值