Install zabbix 2.2 + PostgreSQL + nginx + php on CentOS 6.x x64

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介:
首先要阅读requirement, 结合你的环境, 满足日后的使用, 需要合理的选择硬件, 以及需要的依赖组件或库.
需要注意一下数据库大小的估算.
数据库里存放的数据包括, 配置信息, 历史数据, 报告数据(趋势数据), 事件数据.
这些数据量的评估, 首先和每秒server接收到的数据量有关, 例如我们配置了3000个监控条目, 每60秒监控一次, 那么每秒将受到3000/60=50条监控数据, 
监控数据和监控配置有关, 可能存储的是数字, 或者字符串, 或者其他的值, 假设平均50个字节一条.
那么存放1年的历史数据需要50*24*60*60*365*50 bytes=73GB.
统计数据是指统计每小时的最大, 最小, 平均, COUNT值. 假设一个条目每小时需要128字节来存储统计信息. 
同样假设有3000个监控条目, 那么存储1年的统计数据需要3000*24*365*128=16.8GB
最后是事件的存储, 事件指触发的事件, 这个比较难估算, 最坏来算每秒产生1个事件, 一个事件存储消耗130个字节, 那么保存3年的事件需要空间3*24*60*60*365*130=12.3GB

安装过程 : 
下载稳定版本源码包
zabbix-2.2.6.tar.gz

阅读安装说明

1. 创建用户和组, 所有的zabbix daemon必须以普通用户运行来避免风险. 如果以root用于运行, 会自动切换到zabbix下运行. 如果以普通用户运行, 则 以运行daemon的普通用户运行. 除了不要以root来运行, 同时不要以有特权的任何普通用户运行daemon.
注意1: Running Zabbix as root, bin, or any other account with special rights is a security risk.
注意2: 如果server和agent在同一台机器的话, 务必使用不同的用户启动两个daemon, 因为如果使用同一个用户启动的话, agent很容易获取到server的配置文件, 所以建议使用不同的用户运行agent和server, 来分离权限.
[root@150 zabbix-2.2.6]# useradd zabbix
[root@150 zabbix-2.2.6]# id zabbix
uid=501(zabbix) gid=502(zabbix) groups=502(zabbix)

如果同主机还需要运行agent, 建议再创建一个用户.
[root@150 soft_bak]# useradd zagent
[root@150 soft_bak]# id zagent
uid=502(zagent) gid=503(zagent) groups=503(zagent)

2. 创建数据库, zabbix server, proxy, WEB需要l连接数据库, agent不需要连接数据库.
同时zabbix server需要在数据库中生成一些数据, 而proxy只需要结构.
我们这里选用PostgreSQL 9.3.5, 编译安装一个, 安装过程和初始化数据库的过程略.

useradd postgres
tar -jxvf postgresql-9.3.5.tar.bz2
cd postgresql-9.3.5
./configure --prefix=/opt/pgsql9.3.5 --with-pgport=5432 --with-perl --with-tcl --with-python --with-openssl --with-pam --with-ldap --with-libxml --with-libxslt --enable-thread-safety
gmake world && gmake install-world
ln -s /opt/pgsql9.3.5 /opt/pgsql
vi /etc/profile
export PATH=/opt/pgsql/bin:$PATH
export MANPATH=/opt/pgsql/share/man:$MANPATH
export LD_LIBRARY_PATH=/opt/pgsql/lib:$LD_LIBRARY_PATH
mkdir -p /data03/pgdata/pg_root
chown postgres:postgres /data03/pgdata/pg_root
su - postgres
vi .bash_profile
export PS1="$USER@`/bin/hostname -s`-> "
export PGPORT=5432
export PGDATA=/data03/pgdata/pg_root
export LANG=en_US.utf8
export PGHOME=/opt/pgsql
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export DATE=`date +"%Y%m%d%H%M"`
export PATH=$PGHOME/bin:$PATH:.
export MANPATH=$PGHOME/share/man:$MANPATH
export PGUSER=postgres
export PGHOST=$PGDATA
alias rm='rm -i'
alias ll='ls -lh'
export PGDATABASE=postgres

initdb -D $PGDATA -E UTF8 --locale=C -U postgres -W
cd $PGDATA
vi postgresql.conf
listen_addresses = '0.0.0.0'            # what IP address(es) to listen on;
port = 5432                             # (change requires restart)
max_connections = 500                   # (change requires restart)
superuser_reserved_connections = 13     # (change requires restart)
unix_socket_directories = '.'   # comma-separated list of directories
unix_socket_permissions = 0700          # begin with 0 to use octal notation
tcp_keepalives_idle = 60                # TCP_KEEPIDLE, in seconds;
tcp_keepalives_interval = 10            # TCP_KEEPINTVL, in seconds;
tcp_keepalives_count = 10               # TCP_KEEPCNT;
shared_buffers = 2048MB                 # min 128kB
maintenance_work_mem = 512MB            # min 1MB
shared_preload_libraries = 'pg_stat_statements'         # (change requires restart)
vacuum_cost_delay = 10                  # 0-100 milliseconds
vacuum_cost_limit = 10000               # 1-10000 credits
bgwriter_delay = 10ms                   # 10-10000ms between rounds
wal_level = hot_standby     # minimal, archive, or hot_standby
synchronous_commit = off                # synchronization level;
wal_buffers = 16384kB                   # min 32kB, -1 sets based on shared_buffers
wal_writer_delay = 10ms         # 1-10000 milliseconds
checkpoint_segments = 128               # in logfile segments, min 1, 16MB each
archive_mode = on               # allows archiving to be done
archive_command = '/bin/date'           # command to use to archive a logfile segment
max_wal_senders = 32            # max number of walsender processes
wal_keep_segments = 256         # in logfile segments, 16MB each; 0 disables
hot_standby = on                        # "on" allows queries during recovery
max_standby_archive_delay = 300s        # max delay before canceling queries
max_standby_streaming_delay = 300s      # max delay before canceling queries
wal_receiver_status_interval = 1s       # send replies at least this often
hot_standby_feedback = on               # send info from standby to prevent
effective_cache_size = 8192MB
log_destination = 'csvlog'              # Valid values are combinations of
logging_collector = on          # Enable capturing of stderr and csvlog
log_directory = 'pg_log'                # directory where log files are written,
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
log_file_mode = 0600                    # creation mode for log files,
log_truncate_on_rotation = on           # If on, an existing log file with the
log_rotation_age = 1d                   # Automatic rotation of logfiles will
log_rotation_size = 10MB                # Automatic rotation of logfiles will
log_min_duration_statement = 1s # -1 is disabled, 0 logs all statements
log_checkpoints = on
log_connections = on
log_disconnections = on
log_error_verbosity = verbose           # terse, default, or verbose messages
log_statement = 'ddl'                   # none, ddl, mod, all
log_timezone = 'PRC'
log_autovacuum_min_duration = 0 # -1 disables, 0 logs all actions and
autovacuum_vacuum_threshold = 50        # min number of row updates before
autovacuum_analyze_threshold = 50       # min number of row updates before
autovacuum_vacuum_scale_factor = 0.2    # fraction of table size before vacuum
autovacuum_analyze_scale_factor = 0.1   # fraction of table size before analyze
autovacuum_vacuum_cost_delay = 10ms     # default vacuum cost delay for
datestyle = 'iso, mdy'
timezone = 'PRC'
lc_messages = 'C'                       # locale for system error message
lc_monetary = 'C'                       # locale for monetary formatting
lc_numeric = 'C'                        # locale for number formatting
lc_time = 'C'                           # locale for time formatting
default_text_search_config = 'pg_catalog.english'
pg_stat_statements.max=1000
pg_stat_statements.track=all
pg_stat_statements.save=on

3. 编译安装zabbix
查看详细的编译参数, 只有编译安装proxy和server时, 需要选择数据库类型.

[root@150 zabbix-2.2.6]# ./configure --help

选择要安装的组件, (例如server, proxy, agent全部安装)编译安装 : 
[root@150 zabbix-2.2.6]# ./configure --prefix=/opt/zabbix2.2.6 --enable-server --enable-proxy --enable-agent --enable-java --enable-ipv6 --with-postgresql=/opt/pgsql/bin/pg_config --with-net-snmp --with-ssh2 --with-openipmi --with-ldap --with-libcurl --with-iconv


cnofigure时, 可能会因为缺少lib库报错, 
例如

checking for SSH2 support... no
configure: error: SSH2 library not found

解决
[root@150 zabbix-2.2.6]# yum install -y libssh2-devel

例如
checking for OPENIPMI support... no
configure: error: Invalid OPENIPMI directory - unable to find ipmiif.h

解决
[root@150 zabbix-2.2.6]# yum install -y OpenIPMI-devel

# make && make install
[root@150 zabbix-2.2.6]# ln -s /opt/zabbix2.2.6 /opt/zabbix
[root@150 zabbix-2.2.6]# cd /opt/zabbix
[root@150 zabbix]# ll
total 20
drwxr-xr-x 2 root root 4096 Aug 31 12:10 bin
drwxr-xr-x 6 root root 4096 Aug 31 12:10 etc
drwxr-xr-x 2 root root 4096 Aug 31 12:10 lib
drwxr-xr-x 3 root root 4096 Aug 31 12:10 sbin
drwxr-xr-x 4 root root 4096 Aug 31 12:10 share

配置/etc/profile
vi /etc/profile
export PATH=/opt/zabbix/bin:/opt/zabbix/sbin:$PATH
export MANPATH=/opt/zabbix/share/man:$MANPATH
export LD_LIBRARY_PATH=/opt/zabbix/lib:$LD_LIBRARY_PATH

其他,
1. 如果你要分发你编译好的binary, 那么可以使用静态链接库把依赖的动态库编辑进来, 那么就可以直接分发给其他OS使用了.
选项  --enable-static .
2. 如果添加了--enable-proxy, 那么会生成get和sender两条命令. 如下, 用于接收agent发生过来的信息, 同时发送给server.

[root@150 zabbix]# ll bin/
total 560
-rwxr-xr-x 1 root root 256830 Aug 31 12:10 zabbix_get
-rwxr-xr-x 1 root root 314325 Aug 31 12:10 zabbix_sender

4. 安装nginx, php, php-fpm
参考

配置并启动php-fpm

# vi /etc/profile
export PATH=/opt/php5.5.14/bin:/opt/php5.5.14/sbin:$PATH
export MANPATH=/opt/php5.5.14/php/man:$MANPATH

[root@150 ~]# php --ini
Configuration File (php.ini) Path: /opt/php5.5.14/lib
Loaded Configuration File:         (none)
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

# . /etc/profile

注意拷贝到对应的配置目录
# cp php-5.5.14/php.ini-production /opt/php5.5.14/lib/php.ini
# cp /opt/php5.5.14/etc/php-fpm.conf.default /opt/php5.5.14/etc/php-fpm.conf

[root@150 zabbix]# which php-fpm
/opt/php5.5.14/sbin/php-fpm
[root@150 zabbix]# php-fpm -R -c /opt/php5.5.14/etc
[root@150 zabbix]# netstat -anp|grep 9000
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      26627/php-fpm  


配置并启动nginx
[root@150 conf]# pwd
/opt/nginx1.6.0/conf
[root@150 conf]# ll
total 60
-rw-r--r-- 1 root root 1034 Aug 31 15:08 fastcgi.conf
-rw-r--r-- 1 root root 1034 Aug 31 15:08 fastcgi.conf.default
-rw-r--r-- 1 root root  964 Aug 31 15:08 fastcgi_params
-rw-r--r-- 1 root root  964 Aug 31 15:08 fastcgi_params.default
-rw-r--r-- 1 root root 2837 Aug 31 15:08 koi-utf
-rw-r--r-- 1 root root 2223 Aug 31 15:08 koi-win
-rw-r--r-- 1 root root 3957 Aug 31 15:08 mime.types
-rw-r--r-- 1 root root 3957 Aug 31 15:08 mime.types.default
-rw-r--r-- 1 root root 2639 Aug 31 15:12 nginx.conf
-rw-r--r-- 1 root root 2656 Aug 31 15:08 nginx.conf.default
-rw-r--r-- 1 root root  596 Aug 31 15:08 scgi_params
-rw-r--r-- 1 root root  596 Aug 31 15:08 scgi_params.default
-rw-r--r-- 1 root root  623 Aug 31 15:08 uwsgi_params
-rw-r--r-- 1 root root  623 Aug 31 15:08 uwsgi_params.default
-rw-r--r-- 1 root root 3610 Aug 31 15:08 win-utf

[root@150 conf]# pwd
/opt/nginx1.6.0/conf
[root@150 conf]# cat nginx.conf

user  nobody;
worker_processes  2;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    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"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       8080;
        server_name  digoal;
        root /opt/www/zabbix;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            index  index.html index.htm index.php;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}
启动
[root@150 conf]# /opt/nginx1.6.0/sbin/nginx -c /opt/nginx1.6.0/conf/nginx.conf


5. 配置WEB
[root@150 php]# pwd
/opt/soft_bak/zabbix-2.2.6/frontends/php
将php目录中的所有文件拷贝到/opt/www/zabbix
[root@150 frontends]# mkdir -p /opt/www/zabbix
[root@150 php]# cp -a . /opt/www/zabbix/


Install zabbix 2.2 + PostgreSQL + nginx + php on CentOS 6.x x64 - 德哥@Digoal - PostgreSQL research
搞定所有的检查未通过问题.
Install zabbix 2.2 + PostgreSQL + nginx + php on CentOS 6.x x64 - 德哥@Digoal - PostgreSQL research
有一些默认配置要修改.

# vi /opt/php5.5.14/lib/php.ini
post_max_size = 16M
date.timezone = Asia/Shanghai
max_execution_time = 300
max_input_time = 300
[root@150 etc]# ps -ewf|grep php
root     14100     1  0 09:25 ?        00:00:00 php-fpm: master process (/opt/php5.5.14/etc/php-fpm.conf)
nobody   14101 14100  0 09:25 ?        00:00:00 php-fpm: pool www
nobody   14102 14100  0 09:25 ?        00:00:00 php-fpm: pool www
root     14604   504  0 09:32 pts/0    00:00:00 grep php
[root@150 etc]# kill -9 14100
[root@150 etc]# kill -9 14101
[root@150 etc]# kill -9 14102
[root@150 etc]# php-fpm -R

同时, 如果要使用新版本的lib, 需要重新编译.
# wget http://download.savannah.gnu.org/releases/freetype/freetype-2.5.3.tar.bz2
# tar -jxvf freetype-2.5.3.tar.bz2
# cd freetype-2.5.3
# ./configure --prefix=/opt/freetype2.5.3
# make && make install

# ./configure --prefix=/opt/php5.5.14 --with-pcre-regex=/usr/lib64 --enable-fpm --enable-opcache --with-pdo-pgsql=/opt/pgsql/bin --with-pgsql=/opt/pgsql/bin --enable-bcmath --enable-mbstring --enable-sockets --with-gd --with-gettext --with-libdir=lib64 --with-jpeg-dir --with-png-dir --with-freetype-dir=/opt/freetype2.5.3
# make && make install

注意php 5.5.14的gd库是随php源码包绑定的, 所以就是2.1的版本.

# 重启php-fpm
# php-fpm -R -c /usr/local/etc


6. 创建数据库
[root@150 etc]# su - postgres
postgres@150-> psql
psql (9.3.5)
Type "help" for help.

postgres=# create role zabbix nosuperuser login encrypted password 'digoal';
CREATE ROLE
postgres=# create database zabbix with template template0 encoding 'UTF8' ;
CREATE DATABASE
postgres=# grant all on database zabbix to zabbix;
GRANT

7. 创建schema
shell> psql -U <username>
psql> create database zabbix; 
psql> \q 
shell> cd database/postgresql
shell> psql -U <username> zabbix < schema.sql
# stop here if you are creating database for Zabbix proxy  , 如果是代理的话, 只需要创建schema.
shell> psql -U <username> zabbix < images.sql
shell> psql -U <username> zabbix < data.sql

[root@150 postgresql]# pwd
/opt/soft_bak/zabbix-2.2.6/database/postgresql
[root@150 postgresql]# ll
total 2896
-rw-rw-r-- 1 1000 1000  873252 Aug 27 21:08 data.sql
-rw-rw-r-- 1 1000 1000 1979089 Aug 27 21:07 images.sql
-rw-rw-r-- 1 1000 1000  102928 Aug 27 21:08 schema.sql
[root@150 postgresql]# su - postgres
postgres@150-> cd /opt/soft_bak/zabbix-2.2.6/database/postgresql/
postgres@150-> psql -h 127.0.0.1 -U zabbix zabbix -f ./schema.sql
postgres@150-> psql -h 127.0.0.1 -U zabbix zabbix -f ./images.sql
postgres@150-> psql -h 127.0.0.1 -U zabbix zabbix -f ./data.sql

确保没有任何报错, 注意我们这里使用了public schema, 因为不了解zabbix是否写了schema name, 所以就用public吧.

8. 继续web配置
Install zabbix 2.2 + PostgreSQL + nginx + php on CentOS 6.x x64 - 德哥@Digoal - PostgreSQL research

Install zabbix 2.2 + PostgreSQL + nginx + php on CentOS 6.x x64 - 德哥@Digoal - PostgreSQL research
这里需要配置zabbix server的主机名IP, 以及zabbix server的监听端口, 后面还可以通过配置文件来修改.
 
Install zabbix 2.2 + PostgreSQL + nginx + php on CentOS 6.x x64 - 德哥@Digoal - PostgreSQL research
 
Install zabbix 2.2 + PostgreSQL + nginx + php on CentOS 6.x x64 - 德哥@Digoal - PostgreSQL research
这里需要 下载配置文件到/opt/www/zabbix/conf
配置文件里可以修改zabbix server的连接IP, 端口.

[root@150 conf]# cat zabbix.conf.php
<?php
// Zabbix GUI configuration file
global $DB;

$DB['TYPE']     = 'POSTGRESQL';
$DB['SERVER']   = '127.0.0.1';
$DB['PORT']     = '5432';
$DB['DATABASE'] = 'zabbix';
$DB['USER']     = 'zabbix';
$DB['PASSWORD'] = 'digoal';

// SCHEMA is relevant only for IBM_DB2 database
$DB['SCHEMA'] = '';

$ZBX_SERVER      = '0.0.0.0';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'digoal';

$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
?>

 
Install zabbix 2.2 + PostgreSQL + nginx + php on CentOS 6.x x64 - 德哥@Digoal - PostgreSQL research
 
Install zabbix 2.2 + PostgreSQL + nginx + php on CentOS 6.x x64 - 德哥@Digoal - PostgreSQL research
用户密码存在数据库里面, 密码已经加密了.
用户Admin默认密码zabbix

zabbix=> select * from users;
-[ RECORD 1 ]--+---------------------------------
userid         | 1
alias          | Admin
name           | Zabbix
surname        | Administrator
passwd         | 5fce1b3e34b520afeffb37ce08c7cd66
url            | 
autologin      | 1
autologout     | 0
lang           | en_GB
refresh        | 30
type           | 3
theme          | default
attempt_failed | 0
attempt_ip     | 
attempt_clock  | 0
rows_per_page  | 50
-[ RECORD 2 ]--+---------------------------------
userid         | 2
alias          | guest
name           | 
surname        | 
passwd         | d41d8cd98f00b204e9800998ecf8427e
url            | 
autologin      | 0
autologout     | 900
lang           | en_GB
refresh        | 30
type           | 1
theme          | default
attempt_failed | 0
attempt_ip     | 
attempt_clock  | 0
rows_per_page  | 50


[问题]
1. gd jpeg, freetype的支持问题, 
在zabbix WEB配置时一直显示不通过, 
Install zabbix 2.2 + PostgreSQL + nginx + php on CentOS 6.x x64 - 德哥@Digoal - PostgreSQL research

检测代码如下 : 
/opt/www/zabbix/include/classes/class.frontendsetup.php

        /**
         * Checks for PHP GD JPEG support.
         *
         * @return array
         */
        public function checkPhpGdJpeg() {
                if (is_callable('gd_info')) {
                        $gdInfo = gd_info();

                        // check for PHP prior 5.3.0, it returns 'JPG Support' key.
                        $current = isset($gdInfo['JPG Support']) ? $gdInfo['JPG Support'] : $gdInfo['JPEG Support'];
                }
                else {
                        $current = false;
                }

                return array(
                        'name' => _('PHP gd JPEG support'),
                        'current' => $current ? _('on') : _('off'),
                        'required' => null,
                        'result' => $current ? self::CHECK_OK : self::CHECK_FATAL,
                        'error' => _('PHP gd JPEG image support missing.')
                );
        }

        /**
         * Checks for PHP GD FreeType support.
         *
         * @return array
         */
        public function checkPhpGdFreeType() {
                if (is_callable('gd_info')) {
                        $gdInfo = gd_info();
                        $current = $gdInfo['FreeType Support'];
                }
                else {
                        $current = false;
                }
                return array(
                        'name' => _('PHP gd FreeType support'),
                        'current' => $current ? _('on') : _('off'),
                        'required' => null,
                        'result' => $current ? self::CHECK_OK : self::CHECK_FATAL,
                        'error' => _('PHP gd FreeType support missing.')
                );
        }

配置代码如下 : 
php-5.5.14/configure

 if test "$PHP_JPEG_DIR" != "no"; then

    for i in $PHP_JPEG_DIR /usr/local /usr; do
      test -f $i/include/jpeglib.h && GD_JPEG_DIR=$i && break
    done

    if test -z "$GD_JPEG_DIR"; then
      as_fn_error $? "jpeglib.h not found." "$LINENO" 5
    fi

....
  if test "$PHP_FREETYPE_DIR" != "no"; then

    for i in $PHP_FREETYPE_DIR /usr/local /usr; do
      if test -f "$i/bin/freetype-config"; then
        FREETYPE2_DIR=$i
        FREETYPE2_CONFIG="$i/bin/freetype-config"
        break
      fi
    done

    if test -z "$FREETYPE2_DIR"; then
      as_fn_error $? "freetype-config not found." "$LINENO" 5
    fi

解决办法, 把源码包删掉重新编译.
可能是原来的configure遗留的问题. 一直在此基础上做编译安装导致的.

[参考]
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
3月前
|
应用服务中间件 Linux 网络安全
如何在 CentOS 7 上为 Nginx 创建自签名 SSL 证书
如何在 CentOS 7 上为 Nginx 创建自签名 SSL 证书
184 1
|
2月前
|
监控 前端开发 Linux
centos7系统安装部署zabbix5.0
【9月更文挑战第23天】在CentOS 7系统上部署Zabbix 5.0的步骤包括:安装MariaDB数据库及必要软件包,配置Zabbix仓库,设置数据库并导入Zabbix数据库架构,配置Zabbix服务器与前端参数,启动相关服务,并通过浏览器访问Web界面完成安装向导。
115 0
|
4月前
|
应用服务中间件 Linux nginx
让 CentOS 定时重启 Nginx
在CentOS上设置Nginx定时重启可通过`cron`或`systemctl`
244 0
|
30天前
|
应用服务中间件 Linux nginx
CentOS7安装Nginx
CentOS7安装Nginx
|
1月前
|
监控 应用服务中间件 nginx
详细解释容器以及虚拟机centos7.9容器化部署基础服务(容器化部署nginx)
容器是一种轻量级、可移植的软件打包和隔离技术,将应用程序及其依赖项打包,确保在任何环境中一致运行。容器共享主机操作系统内核,相比虚拟机更高效、轻量,具有快速启动和高资源利用率的特点。容器的关键技术包括命名空间(如 PID、NET 等)、控制组(cgroups)和联合文件系统(UnionFS)。使用容器可以提高开发和部署效率,简化管理,确保环境一致性。例如,在 CentOS 7.9 上部署 Nginx 时,可以通过 Docker 下载和运行 `nginx:1.20` 镜像,并通过端口映射使外部请求访问 Nginx 服务。此外,还可以将测试页面复制到容器中,进一步验证容器的功能。
|
3月前
|
应用服务中间件 Linux 网络安全
2022年超详细在CentOS 7上安装Nginx方法(源码安装)
这篇文章提供了在CentOS 7系统上通过源码安装Nginx的详细步骤,包括从官网下载Nginx源码包、上传至虚拟机、解压、删除压缩包、编译安装前的配置、安装PCRE库(因为Nginx使用PCRE库解析正则表达式)、安装zlib和OpenSSL库(用于支持HTTPS协议)、重新编译Nginx、安装后启动Nginx服务、关闭服务、修改默认端口、以及重启服务测试等步骤。文章还提供了相关命令和操作截图,帮助用户更好地理解和执行安装过程。
2022年超详细在CentOS 7上安装Nginx方法(源码安装)
|
2月前
|
Linux Shell Python
centos执行pip3 install etcd3报错
centos执行pip3 install etcd3报错
|
3月前
|
Linux PHP
Linux CentOS 宝塔 Suhosin禁用php5.6版本eval函数详细图文教程
【8月更文挑战第27天】本文介绍两种禁用PHP执行的方法:使用`PHP_diseval_extension`禁用和通过`suhosin`禁用。由于`suhosin`不支持PHP8,仅适用于PHP7及以下版本,若服务器安装了PHP5.6,则需对应安装`suhosin-0.9.38`版本。文章提供了详细的安装步骤,并强调了宝塔环境下与普通环境下的PHP路径差异。安装完成后,在`php.ini`中添加`suhosin.so`扩展并设置`executor.disable_eval = on`以禁用执行功能。最后通过测试代码验证是否成功禁用,并重启`php-fpm`服务生效。
38 2
|
3月前
|
应用服务中间件 Linux nginx
在CentOS上使用源码包安装Nginx、以及手动启动Nginx的步骤过程
这篇文章介绍了在CentOS系统上使用Nginx源码包进行安装和配置的详细步骤,包括源码包的获取、解压、配置、编译、安装、启动验证以及注意事项。
320 0
在CentOS上使用源码包安装Nginx、以及手动启动Nginx的步骤过程
|
3月前
|
Linux PHP Apache
centos7安装php8
centos7安装php8
245 1