Skip to content

Windows Installation

BSOD2600 edited this page May 29, 2017 · 7 revisions

Configure a Web Server

Cacti functions with any web server which utilizes PHP and MySQL. It's up to the system admin to utilize Microsoft IIS, Apache, or something else.

Microsoft IIS

Install

Configure

Follow:

After following the above guides:

IIS6 has the IIS_WPG user account. IIS7 it's called IIS_IUSRS

  • Give the COMPUTERNAME\IUSR_ and COMPUTERNAME\IIS_WPG users Read & Execute permissions to the file C:\Windows\system32\cmd.exe. Yes, this can be a large security hole, but it's required so RRDTool can be launched for graphing by the anonymous web account. For slightly improved security, one can specify a separate custom User account which would be used for the /wwwroot/Cacti/ site. Then, instead of using IUSR_ everywhere throughout this document, replace it with the custom User account. This way, only a security vulnerability in Cacti's code could exploit cmd.exe and not all sites on the IIS server.
    • Right click on cmd.exe and select Properties.
    • Click on the Security tab.
    • Select the IUSR_ account
    • Click on Read & Execute in the Permissions box.
    • Repeat for the IIS_WPG user.
    • Click OK.
  • Both IUSR_ and IIS_WPG users will also need read permissions on C:\Inetpub\wwwroot\cacti\ and its subfolders.
    • Right click on the folder C:\Inetpub\wwwroot\cacti and select Properties.
    • Click on the Security tab.
    • Click on Add... under the group or user names section.
    • Type in IUSR_ COMPUTERNAME or click Advanced... and Find Now. Repeat for the IIS_WPG account.
    • Click OK to close the select users or groups window.
    • Select the IUSR_ COMPUTERNAME from the list.
    • Select Read & Execute from the Permissions box.
    • Repeat for the IIS_WPG account.
    • At the bottom of the Security tab, click on Advanced....
    • In the Permissions tab, click on Replace permissions entries on all child objects with entries shown here that apply to child objects.
    • Click OK.
    • Click Yes to the Security warning dialog box.
    • Click OK to close the properties window.
  • Give the IUSR_ and IIS_WPG users modify permissions to the folders C:\Inetpub\wwwroot\cacti\log\ and C:\Inetpub\wwwroot\cacti\rra.
  • Completely stop and start the IIS service using the following commands from the command prompt. Alternatively, use the Service MMC snap-in under Administrative Tools:
net stop iisadmin
net start w3svc
  • Install WOFF mimetypes for TrueType Fonts:
%SystemRoot%\system32\inetsrv\appcmd.exe set config /section:staticContent /+"[fileExtension='.woff',mimeType='application/font-woff']"
%SystemRoot%\system32\inetsrv\appcmd.exe set config /section:staticContent /+"[fileExtension='.woff2',mimeType='application/font-woff2']"

\ \

Apache

Make sure to stop the IIS web services before proceeding with the Apache installation or make sure Apache is configured on an alternate port.

Install

  • Download the latest version from Apache Lounge.
  • Make sure to read the Windows specific notes for other Windows tips.
  • Extract the ZIP file to C:\Apache24\
    • Edit \Apache24\conf\httpd.conf
      • Set ServerRoot
      • Set ServerName
  • Manually run httpd.exe at a command prompt to check for errors.
  • Once error free, execute httpd.exe -k install

Install PHP

  • Download the latest version of PHP 7.0 from http://windows.php.net.
  • Extract the ZIP file to C:\PHP\
  • Add C:\PHP\ to your Windows PATH environment variable.
    • The Windows path variable can be accessed via the Control Panel at: System | Advanced | Environment Variables
    • In the System Variables groupbox, find Path and click Edit and add: C:\PHP
  • Add a new system variable called PHPRC. Its value should be: C:\PHP
  • Add a new system variable called MIBDIRS. Its value should be: C:\PHP\Extras\mibs
  • Rename C:\PHP\php.ini-production to C:\PHP\php.ini
  • Find and then uncomment/modify the following lines in C:\PHP\php.ini.
doc_root = C:\inetpub\wwwroot\
expose_php = Off
extension_dir = C:\PHP\ext
extension=php_gd2.dll
extension=php_gmp.dll
extension=php_ldap.dll
extension=php_mbstring.dll
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_pdo_mysql.dll
extension=php_snmp.dll
extension=php_sockets.dll
zend_extension=php_opcache.dll

upload_tmp_dir = C:\PHP\Uploadtemp
session.save_path = C:\PHP\Session
error_log = C:\php\php_errors.txt
date.timezone = "America/Los_Angeles"  _(set your correct zone from http://php.net/date.timezone)_
opcache.enable=On
opcache.cli_enable=On`
  • If using IIS, find, uncomment or add the following lines in C:\PHP\php.ini
fastcgi.impersonate = 1
cgi.fix_pathinfo = 1
cgi.force_redirect = 0
  • If you have had previous versions of PHP installed, you had likely moved the PHP system files to in the Windows directory structure. If so, you will have to remove those files. Please review your PHP installation documentation for instructions on removing those files.
  • Verify PHP is functional by running the following at the command prompt: php -m If messages with, Cannot find module are appearing, then there is something wrong with the MIBDIRS variable or missing mib file(s) in the PHP\Extras\mib folder.

Configure Permissions

  • Change NTFS permissions on C:\PHP\Uploadtemp and C:\PHP\Session to grant Modify rights to the IUSR_ and IIS_WPG users for only files in the directory.
  • Give the user who will be running the scheduled task, Modify rights to: c:\php\extras\mibs.index

Install MySQL

MySQL 5.6 / 5.7

  • Download the latest Generally Available MSI Installer from MySQL.com.
  • Launch the MSI
    • Agree to the license
    • Setup Type - Select Server only
    • Click Execute and wait until the installation has completed.
  • Click Next to begin the Product Configuration
  • Type and Networking Page:
    • Config Type: Server Machine
    • Connectivity: Leave the defaults selected (TCP, Port 3306, Open Firewall port for network access)
    • Enable Show Advanced Options
    • Click Next.
  • Accounts and Roles Page:
    • Specify a root password
    • Skip the User Accounts section
    • Click Next.
  • Windows Service Page
    • Leave all defaults enabled
    • Click Next.
  • Plugins and Extensions
    • Leave all defaults disabled
    • Click Next.
  • Advanced Options
    • Enable General Log
    • Enable Slow Query Log
    • Click Next.
  • Apply Server Configuration page
    • Click Execute.
    • Validate all steps are green and were successful.
    • Click Finish
  • Click Next through the remaining screens.

Install TimeZone Database

  • Download TimeZone (POSIX standard) database from: http://dev.mysql.com/downloads/timezones.html
  • Extract file
  • Import: c:\> mysql --user=root --password mysql < C:\downloads\timezone_posix.sql
  • Validate it works. The two queries below should return the same result in the form of central US time 2007-03-11 01:00:00
c:\> mysql --user=root --password mysql
mysql> SELECT CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','US/Central');
  +------------------------------------------------------------+
  | CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','US/Central') |
  +------------------------------------------------------------+
  | 2007-03-11 01:00:00                                        |
  +------------------------------------------------------------+
  1 row in set (0.01 sec)

mysql> SELECT CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','US/Central');
  +------------------------------------------------------------+
  | CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','US/Central') |
  +------------------------------------------------------------+
  | 2007-03-11 01:00:00                                        |
  +------------------------------------------------------------+
  1 row in set (0.00 sec)

Install Cacti Database

  • Create the MySQL database: c:\> mysqladmin --user=root --password create cacti
  • Import the default Cacti database: c:\> mysql --user=root --password cacti < C:\Inetpub\wwwroot\cacti\cacti.sql

If you get any errors during this phase, you likely have sql-strict mode enabled or something else misconfigured in my.ini!

  • Create a MySQL username and password for Cacti.
c:\> mysql --user=root --password mysql
mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactipw';
mysql> GRANT SELECT ON mysql.time_zone_name TO cactiuser@localhost IDENTIFIED BY 'cactipw';
mysql> flush privileges;

Install Net-SNMP

If you plan to use any hosts with SNMP v3 support, you must install the Net-SNMP binaries, since the PHP SNMP extension does not handle SNMPv3. You do NOT need to install/use the Net-SNMP SNMP agent. The Microsoft SNMP agent is recommended. The Net-SNMP binaries are useful when creating custom scripts, as they provide an easy way to query SNMP data from devices.

  • Download from net-snmp.sourceforge.net
  • Run the installer:
    • Select the Net-SNMP agent service With Windows Extension DLL Support
    • Uncheck Net-SNMP Trap Service
    • Uncheck Perl SNMP Modules
    • Select Encryption support
    • Specify Destination Folder: C:\Net-SNMP

Validate

  • From a command prompt run:

C:\>snmpwalk

If there are no errors, it's properly installed.

Install Cacti

  • Download the latest version from Github or www.cacti.net
  • Extract the ZIP file to the root of your web server directory:
    • IIS: C:\Inetpub\wwwroot\cacti\
    • Apache: C:\Apache24\htdocs\cacti\

Configure Cacti

Configure Scheduled Task for Poller

You are going to need to schedule a task while logged on as an Administrator. This task is required for the Poller to run every 5 minutes. Make sure the Task Scheduler service is started and follow the steps below to begin.

  • Open Task Scheduler
  • Create a new Task
  • General Tab
    • Name: Cacti Poller
    • Security Options:
      • Specify the user/service account the task will run under.
      • Select Run whether user is logged on or not
  • Triggers Tab
    • Create a new trigger.
    • Select Daily
    • Reoccur every: 1 days
    • Repeat Task every: 5 minutes for a duration of Indefinitely
    • Select Enabled
    • Click OK
  • Actions Tab
    • Create a new action.
    • Program: C:\PHP\php.exe
    • Argument: C:\cacti_web_root\poller.php
    • Start In: C:\cacti_web_root
  • Conditions & Settings Tabs
    • Configure per your IT standards.
  • Click OK to create the Task.

Install Spine

Spine is a high speed poller replacement for cmd.php. It is almost 100% compatible with the legacy cmd.php processor and provides much more flexibility, speed and concurrency than cmd.php

Often, the latest compiled binaries of Spine can be found here: http://www.cacti.net/downloads/packages/Windows/. Alternatively, you can compile Spine with Cygwin yourself. Refer to the documentation https://github.com/Cacti/spine/blob/develop/README.md