這是本文件的舊版!


CentOS7 安裝 LibreNMS

  • CentOS Linux release 7.5.1804 (Core)
  1. 安裝需要的套件

    yum install epel-release
    rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
    yum install composer cronie fping git ImageMagick jwhois mariadb mariadb-server mtr python36 MySQL-python net-snmp net-snmp-utils nginx nmap php72w php72w-cli php72w-common php72w-curl php72w-fpm php72w-gd php72w-mbstring php72w-mysqlnd php72w-process php72w-snmp php72w-xml php72w-zip python-memcached rrdtool

  2. 建立 librenms 用戶

    useradd librenms -d /opt/librenms -M -r
    usermod -a -G librenms nginx
    sync;sync;sync;reboot

  3. 下載 LibreNMS

    cd /opt
    composer create-project --no-dev --keep-vcs librenms/librenms librenms dev-master

  4. 出現異常與警告訊息, 重新開機後再執行

    cd /opt/librenms
    ./scripts/composer_wrapper.php install --no-dev

  5. 建立 DB Server

    systemctl start mariadb
    mysql -u root

    password 要依照自己需要設定

    CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci;
    CREATE USER 'librenms'@'localhost' IDENTIFIED BY '**password**';
    GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
    FLUSH PRIVILEGES;
    exit
    vi /etc/my.cnf
    [mysqld]
    datadir=/var/lib/mysql
    :
    :
    # instructions in http://fedoraproject.org/wiki/Systemd
    innodb_file_per_table=1
    sql-mode=""
    lower_case_table_names=0
    :
    systemctl enable mariadb
    systemctl restart mariadb
  6. 建立 Web Server

    vi /etc/php-fpm.d/www.conf

    :
    ;user = apache
    user = nginx
    ; RPM: Keep a group allowed to write in log dir.
    group = apache
    
    ; The address on which to accept FastCGI requests.
    ; Valid syntaxes are:
    ;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
    ;                            a specific port;
    ;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
    ;                            a specific port;
    ;   'port'                 - to listen on a TCP socket to all addresses
    ;                            (IPv6 and IPv4-mapped) on a specific port;
    ;   '/path/to/unix/socket' - to listen on a unix socket.
    ; Note: This value is mandatory.
    ;listen = 127.0.0.1:9000
    listen = /var/run/php-fpm/php7.2-fpm.sock
    
    ; Set listen(2) backlog.
    ; Default Value: 511 (-1 on FreeBSD and OpenBSD)
    ;listen.backlog = 511
    
    ; Set permissions for unix socket, if one is used. In Linux, read/write
    ; permissions must be set in order to allow connections from a web server. Many
    ; BSD-derived systems allow connections regardless of permissions.
    ; Default Values: user and group are set as the running user
    ;                 mode is set to 0660
    ;listen.owner = nobody
    ;listen.group = nobody
    ;listen.mode = 0660
    listen.owner = nginx
    listen.group = nginx
    listen.mode = 0660
    
    ; When POSIX Access Control Lists are supported you can set them using
    ; these options, value is a comma separated list of user/group names.
    :
    systemctl enable php-fpm
    systemctl restart php-fpm
  7. 設定 nginx

    vi /etc/nginx/conf.d/librenms.conf

    server {
     listen      80;
     server_name librenms.example.com;
     root        /opt/librenms/html;
     index       index.php;
    
     charset utf-8;
     gzip on;
     gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
     location / {
      try_files $uri $uri/ /index.php?$query_string;
     }
     location /api/v0 {
      try_files $uri $uri/ /api_v0.php?$query_string;
     }
     location ~ \.php {
      include fastcgi.conf;
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      fastcgi_pass unix:/var/run/php-fpm/php7.2-fpm.sock;
     }
     location ~ /\.ht {
      deny all;
     }
    }
    systemctl enable nginx
    systemctl restart nginx
  8. 建立 SELinux 與 Allow fping

    yum install policycoreutils-python
    
    semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/logs(/.*)?'
    semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/logs(/.*)?'
    restorecon -RFvv /opt/librenms/logs/
    semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/rrd(/.*)?'
    semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/rrd(/.*)?'
    restorecon -RFvv /opt/librenms/rrd/
    semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/storage(/.*)?'
    semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/storage(/.*)?'
    restorecon -RFvv /opt/librenms/storage/
    semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/bootstrap/cache(/.*)?'
    semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/bootstrap/cache(/.*)?'
    restorecon -RFvv /opt/librenms/bootstrap/cache/
    setsebool -P httpd_can_sendmail=1
    setsebool -P httpd_execmem 1
    
    vi /tmp/http_fping.tt

    module http_fping 1.0;
    
    require {
    type httpd_t;
    class capability net_raw;
    class rawip_socket { getopt create setopt write read };
    }
    
    #============= httpd_t ==============
    allow httpd_t self:capability net_raw;
    allow httpd_t self:rawip_socket { getopt create setopt write read };
    checkmodule -M -m -o http_fping.mod /tmp/http_fping.tt
    semodule_package -o /tmp/http_fping.pp -m http_fping.mod
    semodule -i /tmp/http_fping.pp
  9. 設定 firewall
  • tech/librenms.1610873741.txt.gz
  • 上一次變更: 2021/01/17 16:55
  • jonathan