mirror of
				https://github.com/librenms/librenms.git
				synced 2024-10-07 16:52:45 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			484 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			484 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| source: Installation/Installation-CentOS-6-Apache-Nginx.md
 | |
| path: blob/master/doc/
 | |
| 
 | |
| > NOTE: These instructions assume you are the **root** user.  If you
 | |
| > are not, prepend `sudo` to the shell commands (the ones that aren't
 | |
| > at `mysql>` prompts) or temporarily become a user with root
 | |
| > privileges with `sudo -s` or `sudo -i`.
 | |
| 
 | |
| **Please note the minimum supported PHP version is @= php.version_min =@**
 | |
| 
 | |
| # On the DB Server
 | |
| 
 | |
| This host is where the MySQL database runs.  It could be the same
 | |
| machine as your network management server (this is the most common
 | |
| initial deployment scenario).
 | |
| 
 | |
| > ** Whilst we are working on ensuring LibreNMS is compatible with
 | |
| > MySQL strict mode, for now, please disable this after mysql is
 | |
| > installed.
 | |
| 
 | |
| You are free to choose between using MySQL or MariaDB:
 | |
| 
 | |
| ## MySQL
 | |
| 
 | |
| ```bash
 | |
| yum install net-snmp mysql-server mysql-client
 | |
| chkconfig mysqld on
 | |
| service mysqld start
 | |
| ```
 | |
| 
 | |
| ## MariaDB
 | |
| 
 | |
| ```bash
 | |
| yum install net-snmp mariadb-server mariadb-client
 | |
| chkconfig mariadb on
 | |
| service mariadb start
 | |
| ```
 | |
| 
 | |
| ## General
 | |
| 
 | |
| Now continue with the installation:
 | |
| 
 | |
| ```bash
 | |
| chkconfig snmpd on
 | |
| service snmpd start
 | |
| mysql_secure_installation
 | |
| mysql -uroot -p
 | |
| ```
 | |
| 
 | |
| Enter the MySQL/MariaDB root password to enter the command-line interface.
 | |
| 
 | |
| Create database.
 | |
| 
 | |
| ```sql
 | |
| CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
 | |
| CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'password';
 | |
| GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
 | |
| FLUSH PRIVILEGES;
 | |
| exit
 | |
| ```
 | |
| 
 | |
| Replace `<ip>` above with the IP of the server running LibreNMS.  If
 | |
| your database is on the same server as LibreNMS, use `localhost` as
 | |
| the IP address.
 | |
| 
 | |
| Edit the mysql/mariadb configuration file:
 | |
| 
 | |
| ```bash
 | |
| vim /etc/my.cnf
 | |
| ```
 | |
| 
 | |
| Add the following line:
 | |
| 
 | |
| ```
 | |
| innodb_file_per_table=1
 | |
| ```
 | |
| 
 | |
| If you are deploying a separate database server, you also need to
 | |
| specify the `bind-address`.  If your MySQL database resides on the
 | |
| same server as LibreNMS, you should skip this step.
 | |
| 
 | |
| ```
 | |
| bind-address = <ip>
 | |
| ```
 | |
| 
 | |
| If you see a line that starts `sql-mode` then change this to
 | |
| `sql-mode=""`.
 | |
| 
 | |
| Save, and restart MySQL/MariaDB to apply your changes:
 | |
| 
 | |
| ```
 | |
| service mysqld restart
 | |
| ```
 | |
| 
 | |
| or
 | |
| 
 | |
| ```
 | |
| service mariadb restart
 | |
| ```
 | |
| 
 | |
| # On the NMS
 | |
| 
 | |
| Install necessary software.  The packages listed below are an
 | |
| all-inclusive list of packages that were necessary on a clean install
 | |
| of CentOS 6.x.  It also requires the EPEL repository. Net_IPv6 is
 | |
| required even if your network environment does not support IPv6.
 | |
| 
 | |
| Note if not using HTTPd (Apache): RHEL requires `httpd` to be
 | |
| installed regardless of of `nginx`'s (or any other web-server's)
 | |
| presence.
 | |
| 
 | |
| ```bash
 | |
| yum install epel-release
 | |
| yum install php php-cli php-gd php-mysql php-snmp php-pear php-curl httpd net-snmp graphviz graphviz-php mysql ImageMagick jwhois nmap mtr rrdtool MySQL-python net-snmp-utils vixie-cron php-mcrypt fping git
 | |
| pear install Net_IPv4-1.3.4
 | |
| pear install Net_IPv6-1.2.2b2
 | |
| ```
 | |
| 
 | |
| # Configure SNMPD on localhost
 | |
| 
 | |
| Edit `/etc/snmp/snmpd.conf` to enable self-polling.  An absolute
 | |
| minimal config for snmpd is:
 | |
| 
 | |
| ```
 | |
| rocommunity public 127.0.0.1
 | |
| ```
 | |
| 
 | |
| You may either edit the default configuration file to your liking, or
 | |
| backup the default config file and replace it entirely with your
 | |
| own. To apply your changes, run `service snmpd restart` for Centos
 | |
| 6.x. If you have deployed a separate database server, you will likely
 | |
| want to configure snmpd on that host as well.
 | |
| 
 | |
| # Adding the librenms-user for Apache
 | |
| 
 | |
| ```bash
 | |
|     useradd librenms -d /opt/librenms -M -r
 | |
|     usermod -a -G librenms apache
 | |
| ```
 | |
| 
 | |
| # Adding the librenms-user for Nginx
 | |
| 
 | |
| ```bash
 | |
|     useradd librenms -d /opt/librenms -M -r
 | |
|     usermod -a -G librenms nginx
 | |
| ```
 | |
| 
 | |
| # Using HTTPd (Apache2)
 | |
| 
 | |
| Set `httpd` to start on system boot.
 | |
| 
 | |
| ```bash
 | |
| chkconfig --levels 235 httpd on
 | |
| ```
 | |
| 
 | |
| In `/etc/php.ini`, ensure `date.timezone` is set to your preferred
 | |
| time zone.  See <https://php.net/manual/en/timezones.php> for a list of
 | |
| supported timezones.  Valid examples are: "America/New York",
 | |
| "Australia/Brisbane", "Etc/UTC". Please also ensure that
 | |
| `allow_url_fopen` is enabled. Other functions needed for LibreNMS
 | |
| include
 | |
| `exec,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,popen`.
 | |
| 
 | |
| Next, add the following to `/etc/httpd/conf.d/librenms.conf`
 | |
| 
 | |
| If you are running Apache below version 2.2.18:
 | |
| 
 | |
| ```apache
 | |
| <VirtualHost *:80>
 | |
|   DocumentRoot /opt/librenms/html/
 | |
|   ServerName  librenms.example.com
 | |
|   CustomLog /opt/librenms/logs/access_log combined
 | |
|   ErrorLog /opt/librenms/logs/error_log
 | |
|   AllowEncodedSlashes On
 | |
|   <Directory "/opt/librenms/html/">
 | |
|     AllowOverride All
 | |
|     Options FollowSymLinks MultiViews
 | |
|   </Directory>
 | |
| </VirtualHost>
 | |
| ```
 | |
| 
 | |
| If you are running Apache 2.2.18 or higher:
 | |
| 
 | |
| ```apache
 | |
| <VirtualHost *:80>
 | |
|   DocumentRoot /opt/librenms/html/
 | |
|   ServerName  librenms.example.com
 | |
|   CustomLog /opt/librenms/logs/access_log combined
 | |
|   ErrorLog /opt/librenms/logs/error_log
 | |
|   AllowEncodedSlashes NoDecode
 | |
|   <Directory "/opt/librenms/html/">
 | |
|     AllowOverride All
 | |
|     Options FollowSymLinks MultiViews
 | |
|     Require all granted
 | |
|   </Directory>
 | |
| </VirtualHost>
 | |
| ```
 | |
| 
 | |
| If the file `/etc/httpd/conf.d/welcome.conf` exists, you will want to
 | |
| remove that as well unless you're familiar with [Name-based Virtual
 | |
| Hosts](https://httpd.apache.org/docs/2.2/vhosts/name-based.html).
 | |
| 
 | |
| ```bash
 | |
| rn /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak
 | |
| ```
 | |
| 
 | |
| # Using Nginx and PHP-FPM
 | |
| 
 | |
| If you choose to run Nginx, you will need to install necessary extra
 | |
| software and let it start on system boot.
 | |
| 
 | |
| ```bash
 | |
|     yum install nginx php-fpm
 | |
|     chkconfig nginx on
 | |
|     chkconfig php-fpm on
 | |
| ```
 | |
| 
 | |
| Modify permissions and configuration for `php-fpm` to use nginx credentials.
 | |
| 
 | |
| ```
 | |
| mkdir /var/lib/php/session
 | |
| chown root:nginx /var/lib/php -R
 | |
| vim /etc/php-fpm.d/www.conf      # At line #12: Change `listen` to `/var/run/php5-fpm.sock`
 | |
|                                  # At line #39-41: Change the `user` and `group` to `nginx`
 | |
| ```
 | |
| 
 | |
| Add configuration for `nginx` at `/etc/nginx/conf.d/librenms.conf`
 | |
| with the following content:
 | |
| 
 | |
| ```nginx
 | |
| server {
 | |
|  listen      80;
 | |
|  server_name librenms.example.com;
 | |
|  root        /opt/librenms/html;
 | |
|  index       index.php;
 | |
|  access_log  /opt/librenms/logs/access_log;
 | |
|  error_log   /opt/librenms/logs/error_log;
 | |
|  location / {
 | |
|   try_files $uri $uri/ @librenms;
 | |
|  }
 | |
|  location ~ \.php {
 | |
|   fastcgi_param PATH_INFO $fastcgi_path_info;
 | |
|   include fastcgi.conf;
 | |
|   fastcgi_split_path_info ^(.+\.php)(/.+)$;
 | |
|   fastcgi_pass unix:/var/run/php5-fpm.sock;
 | |
|  }
 | |
|  location ~ /\.ht {
 | |
|   deny all;
 | |
|  }
 | |
|  location @librenms {
 | |
|   rewrite api/v0(.*)$ /api_v0.php/$1 last;
 | |
|   rewrite ^(.+)$ /index.php/$1 last;
 | |
|  }
 | |
| }
 | |
| ```
 | |
| 
 | |
| # Cloning
 | |
| 
 | |
| You can clone the repository via HTTPS or SSH.  In either case, you
 | |
| need to ensure the appropriate port (443 for HTTPS, 22 for SSH) is
 | |
| open in the outbound direction for your server.
 | |
| 
 | |
| ```bash
 | |
| cd /opt
 | |
| git clone https://github.com/librenms/librenms.git librenms
 | |
| cd /opt/librenms
 | |
| ```
 | |
| 
 | |
| NOTE: The recommended method of cloning a git repository is HTTPS.  If
 | |
| you would like to clone via SSH instead, use the command `git clone
 | |
| git@github.com:librenms/librenms.git librenms` instead.
 | |
| 
 | |
| # Prepare the Web Interface
 | |
| 
 | |
| To prepare the web interface, you'll need to create and chown a
 | |
| directory as well as create an Apache vhost.
 | |
| 
 | |
| First, create and chown the `rrd` directory and create the `logs` directory
 | |
| 
 | |
| ```bash
 | |
| mkdir rrd logs
 | |
| chown -R librenms:librenms /opt/librenms
 | |
| chmod 775 rrd
 | |
| ```
 | |
| 
 | |
| If you're planning on running rrdcached, make sure that the path is
 | |
| also chmod'ed to 775 and chown'ed to librenms:librenms.
 | |
| 
 | |
| **SELinux**
 | |
| > if you're using SELinux you need to allow web server user to write into logs directory.
 | |
| > semanage tool is a part of policycoreutils-python, so if don't have
 | |
| it, you can install it  **Please note that running LibreNMS with
 | |
| SELinux is still experimental and we cannot guarantee that everything
 | |
| will be working fine for now.**
 | |
| 
 | |
| ```bash
 | |
|     yum install policycoreutils-python
 | |
| ```
 | |
| 
 | |
| ```bash
 | |
|     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/
 | |
| ```
 | |
| 
 | |
| Set selinux to allow httpd to sendmail
 | |
| 
 | |
| ```bash
 | |
|     setsebool -P httpd_can_sendmail=1
 | |
| ```
 | |
| 
 | |
| # Start the web-server
 | |
| 
 | |
| ```
 | |
| # For HTTPd (Apache):
 | |
| service httpd restart
 | |
| 
 | |
| # For Nginx:
 | |
| service nginx restart
 | |
| ```
 | |
| 
 | |
| # Web Installer
 | |
| 
 | |
| At this stage you can launch the web installer by going to
 | |
| `http://IP/install.php` and follow the on-screen
 | |
| instructions. Alternatively if you want to continue the setup manually
 | |
| then perform the manual install steps. If you cannot reach the
 | |
| installer, stop here and solve that problem before
 | |
| proceeding. Afterwards, Add the following line to the end of
 | |
| `config.php`:
 | |
| 
 | |
| ```
 | |
| $config['fping'] = "/usr/sbin/fping";
 | |
| ```
 | |
| 
 | |
| # Manual Install
 | |
| 
 | |
| You may skip this section if the web installer succeeded.
 | |
| 
 | |
| ```bash
 | |
| cp config.php.default config.php
 | |
| vi config.php
 | |
| ```
 | |
| 
 | |
| Change the values to the right of the equal sign for lines beginning
 | |
| with `$config[db_]` to match your database information as previously
 | |
| configured.
 | |
| 
 | |
| Change the value of `$config['snmp']['community']` from `public` to
 | |
| whatever your default read-only SNMP community is.  If you have
 | |
| multiple existing communities in your environment, set it to the most
 | |
| common.
 | |
| 
 | |
| Add the following line to the end of `config.php`:
 | |
| 
 | |
| ```
 | |
| $config['fping'] = "/usr/sbin/fping";
 | |
| ```
 | |
| 
 | |
| Important: Be sure you have no characters (including whitespace like:
 | |
| newlines, spaces, tabs, etc) outside of the `<?php?>` blocks. Your
 | |
| graphs will break otherwise and there will be no error messages to
 | |
| indicate otherwise!
 | |
| 
 | |
| # Initialize the database
 | |
| 
 | |
| Initiate the follow database with the following command:
 | |
| 
 | |
| ```
 | |
| php includes/sql-schema/update.php
 | |
| ```
 | |
| 
 | |
| # Create admin user
 | |
| 
 | |
| Create the admin user - priv should be 10
 | |
| 
 | |
| ```
 | |
| php adduser.php <name> <pass> 10 <email>
 | |
| ```
 | |
| 
 | |
| Substitute your desired username, password and email address--and
 | |
| leave the angled brackets off.
 | |
| 
 | |
| # Validate your install
 | |
| 
 | |
| After performing the manual install or web install, be sure to run
 | |
| validate.php as root in the librenms directory:
 | |
| 
 | |
| ```
 | |
| php validate.php
 | |
| ```
 | |
| 
 | |
| This will check your install to verify it is set up correctly.
 | |
| 
 | |
| # Add localhost
 | |
| 
 | |
| ```
 | |
| php addhost.php localhost public v2c
 | |
| ```
 | |
| 
 | |
| Replace `public` to match what you set in `/etc/snmp/snmpd.conf`.
 | |
| This command also assumes you are using SNMP v2c.  If you're using v3,
 | |
| there are additional steps (NOTE: instructions for SNMPv3 to come).
 | |
| 
 | |
| Discover localhost:
 | |
| 
 | |
| ```
 | |
| php discovery.php -h all
 | |
| ```
 | |
| 
 | |
| # Create cronjob
 | |
| 
 | |
| The polling method used by LibreNMS is `poller-wrapper.py`, which was
 | |
| placed in the public domain by its author.  By default, the LibreNMS
 | |
| cronjob runs `poller-wrapper.py` with 16 threads.  The current
 | |
| LibreNMS recommendation is to use 4 threads per core.  The default if
 | |
| no thread count is `16 threads`.
 | |
| 
 | |
| If the thread count needs to be changed, you can do so by editing the cron file (`/etc/cron.d/librenms`).
 | |
|  Just add a number after `poller-wrapper.py`, as in the below example:
 | |
| 
 | |
| ```
 | |
| /opt/librenms/poller-wrapper.py 12 >> /dev/null 2>&1
 | |
| ```
 | |
| 
 | |
| Create the cronjob
 | |
| 
 | |
| ```
 | |
| cp librenms.nonroot.cron /etc/cron.d/librenms
 | |
| ```
 | |
| 
 | |
| > NOTE: Keep in mind  that cron, by default, only uses a very limited
 | |
| > set of environment variables. You may need to configure proxy
 | |
| > variables for the cron invocation. Alternatively adding the proxy
 | |
| > settings in config.php is possible too. The config.php file will be
 | |
| > created in the upcoming steps. Review the following URL after you
 | |
| > finished librenms install steps:
 | |
| > <@= config.site_url =@/Support/Configuration/#proxy-support>
 | |
| 
 | |
| # Copy logrotate config
 | |
| 
 | |
| LibreNMS keeps logs in `/opt/librenms/logs`. Over time these can
 | |
| become large and be rotated out.  To rotate out the old logs you can
 | |
| use the provided logrotate config file:
 | |
| 
 | |
| ```
 | |
| cp misc/librenms.logrotate /etc/logrotate.d/librenms
 | |
| ```
 | |
| 
 | |
| # Daily Updates
 | |
| 
 | |
| LibreNMS performs daily updates by default.  At 00:15 system time
 | |
| every day, a `git pull --no-edit --quiet` is performed.  You can
 | |
| override this default by editing your `config.php` file.  Remove the
 | |
| comment (the `#` mark) on the line:
 | |
| 
 | |
| ```
 | |
| #$config['update'] = 0;
 | |
| ```
 | |
| 
 | |
| so that it looks like this:
 | |
| 
 | |
| ```
 | |
| $config['update'] = 0;
 | |
| ```
 | |
| 
 | |
| # Install complete
 | |
| 
 | |
| Please allow for 2-3 runs of the poller-wrapper for data to start
 | |
| appearing in the WebUI. If you don't see data after this, please refer
 | |
| to the [FAQ](../Support/FAQ.md) for assistance.
 | |
| 
 | |
| That's it!  You now should be able to log in to
 | |
| <http://librenms.example.com/>. Please note that we have not covered
 | |
| HTTPS setup in this example, so your LibreNMS install is not secure by
 | |
| default.  Please do not expose it to the public Internet unless you
 | |
| have configured HTTPS and taken appropriate web server hardening
 | |
| steps.
 | |
| 
 | |
| It would be great if you would consider opting into the stats system
 | |
| we have, please see [this page](../General/Callback-Stats-and-Privacy.md) on
 | |
| what it is and how to enable it.
 | |
| 
 |