Difference between revisions of "NATS Requirements"

From TMM Wiki
Jump to navigationJump to search
 
(115 intermediate revisions by 22 users not shown)
Line 1: Line 1:
 +
{{NATS5 Manual
 +
| show_about_section = true
 +
}}
 
{{NATS4 Manual
 
{{NATS4 Manual
 
| show_about_section = true
 
| show_about_section = true
Line 4: Line 7:
  
 
== Software Requirements ==
 
== Software Requirements ==
Please verify the following programs are installed.
+
'''Note: These requirements apply to the most recent version of NATS. If you are working with an older version of NATS please contact [https://clients.toomuchmedia.com/ Too Much Media] for assistance.'''
Your [[ct#Host|host]] can install any missing or out-of-date programs.
+
 
 +
'''These software requirements are for both NATS4 and NATS5'''
 +
Please verify the following programs are installed
 +
Your [[ct#Host|host]] can install any missing or out-of-date programs
  
 
* Linux or Unix, including BSD, Macintosh OS X, and Darwin
 
* Linux or Unix, including BSD, Macintosh OS X, and Darwin
** You must <b>not use</b> [http://www.cpanel.net/ Cpanel]
+
** You must <b>not use</b> control panel softwares such as [http://www.cpanel.net/ Cpanel]
 +
 
 
* Apache
 
* Apache
** Must not use [http://www.modsecurity.org/ mod_security]
+
** Must not use [http://www.modsecurity.org/ mod_security] or mod_security2
 +
*** For more information please see [[Mod_security]]
 
** Must not use Safe Mode
 
** Must not use Safe Mode
** Must have FollowSymLinks enabled in Apache for your NATS install.
+
** If open_basedir is configured, you need to add the NATS install directory as well
** Apache must be able to use the directives specified in the nats/www/.htaccess file in your NATS install.
+
** Must have FollowSymLinks enabled in Apache for your NATS install
* [http://www.mysql.com/ MySQL version 5.1;] for its database partitioning capability. (MySQL version 5.1 or above, and below MySQL 5.5)
+
** Apache must be able to use the directives specified in the nats/www/.htaccess file in your NATS install
 +
 
 +
* HTTP
 +
** Make sure HTTP version 1.1 is compatible.
 +
*** <pre>curl --http1.1 --write-out '%{http_version}' --silent --output /dev/null --head https://www.google.com</pre>
 +
**** This command should return "1.1" if it is compatible.
 +
** Make sure HTTP version 2.0 is compatible.
 +
*** <pre>curl --http2 --write-out '%{http_version}' --silent --output /dev/null --head https://www.google.com</pre>
 +
**** This command should return "2" if it is compatible.
 +
 
 +
* [https://www.mysql.com/ MySQL version 5] for its database partitioning capability (5.1 through, and including 5.7) OR [https://www.mysql.com/ MySQL version 8.0.x] (excluding specifically 8.0.17 & 8.0.18)
 +
** Ensure that the following settings are not on for @@sql_mode
 +
*** STRICT_TRANS_TABLES
 +
*** ONLY_FULL_GROUP_BY
 +
*** INNODB_STRICT_MODE
 +
**** innodb_strict_mode = 0
 +
*** alternative check -> show global variables like '<setting>';
 
** MySQL must also be accessible from the CLI, which may require changes to the my.cnf file
 
** MySQL must also be accessible from the CLI, which may require changes to the my.cnf file
** The MySQL user must have all priviliges on the nats DB, grant is optional.
+
** The MySQL user must have all privileges on the NATS DB, grant is optional
 
** Ensure that NO_UNSIGNED_SUBTRACTION is enabled
 
** Ensure that NO_UNSIGNED_SUBTRACTION is enabled
 
** Ensure that innodb_file_per_table is enabled in my.cnf
 
** Ensure that innodb_file_per_table is enabled in my.cnf
* [http://www.maxmind.com/ MaxMind GeoIP.] You must have at least the free version. Must install mod_geoip. Please ensure that you install the '''Apache''' Module for GeoIP, as this will not work without the GeoIP Apache API installed.
+
** Ensure that triggers can be created by the NATS user
* [http://php.net/ mod_PHP 5.2.] or higher.
+
*** Example MySQL Command: GRANT CREATE TRIGGER ON <NATSDB>.* TO '<NATSUSER>'@'<DBHOST>';
** install and enable [http://www.php.net/manual/en/mysql.installation.php mysql support] for php
+
**** <NATSDB> = Your NATS database
 +
**** <NATSUSER> = The NATS user
 +
**** <DBHOST> = Your DB host
 +
*** If binary logging is enabled, you may need to set the log_bin_trust_function_creators variable
 +
**** If this is not an option, you may provide SUPER privilege to the NATS DB user
 +
** Ensure open_files_limit is set to at least 20,000
 +
** Ensure that the InnoDB engine is supported
 +
*** To see if it is supported run this query:"show engines;"
 +
** Though [https://mariadb.org/ MariaDB] has not been fully tested and and is not fully supported, a number of clients are using it without issue
 +
*** See [https://mariadb.com/kb/en/mariadb/installation-issues-with-php5/ MariaDB's article on PHP 5 issues]
 +
*** When using MariaDB we recommend using the mysqlnd extension (instead of the mysql extension) to avoid client mismatch errors
 +
*** When using the mysqlnd extension, increase the PHP memory limit, as mysql results are included in the memory limit with the mysqlnd extension
 +
 
 +
* [http://www.maxmind.com/ MaxMind GeoIP.]
 +
** You must have at least the free version
 +
***  If you purchased a GeoIP legacy license, than you can install mod_geoip or pecl geoip as detailed on our [https://tmmwiki.com/index.php/GeoIP GeoIP] article
 +
*** If not, you will need to use GeoIP2 with the new apache module as detailed on our [https://tmmwiki.com/index.php/GeoIP2 GeoIP2] article
 +
 
 +
* [http://php.net/ PHP] version 7 (7.1 through, and including 7.4, not 7.0) OR 8.1 (8.0 and 8.2 are not supported)
 
** Enable [http://us.php.net/ini.core <code>short_open_tag</code>] in your server's ''php.ini''
 
** Enable [http://us.php.net/ini.core <code>short_open_tag</code>] in your server's ''php.ini''
** Disable [http://php.net/manual/en/security.globals.php <code>register_globals</code>] in your server's ''php.ini''
+
** Disable session.auto_start in your server's ''php.ini''
 
** [http://us3.php.net/features.commandline PHP CLI] (should be the same version used by apache and should use the same php.ini)
 
** [http://us3.php.net/features.commandline PHP CLI] (should be the same version used by apache and should use the same php.ini)
 
** Apache and the CLI must allow <tt>exec</tt> commands from PHP
 
** Apache and the CLI must allow <tt>exec</tt> commands from PHP
** must have cURL with/Open SSL, GDlib (w/ freetype, JPEG, PNG, XPM), and mcrypt (with blowfish and ecb support) included)
+
** The following extensions must be enabled:
** must have Ctype functions installed.
+
*** OpenSSL
 +
**** For PHP 7.1 - 7.4 the version of OpenSSL should be equal or greater than 1.0.1, but '''less that 3.0'''
 +
**** For PHP 8.1 the version of OpenSSL should be equal or greater than 1.0.2, but '''less that 4.0'''. If you are running OpenSSL version 3, make sure that [https://www.openssl.org/docs/man3.0/man7/OSSL_PROVIDER-legacy.html legacy provider] is enabled.
 +
**** See further information on OpenSSL on PHP OpenSSL requirements [https://www.php.net/manual/en/openssl.requirements.php page]
 +
*** [http://php.net/manual/en/book.mysqli.php mysqli]
 +
*** cURL with/Open SSL
 +
*** allow_url_fopen
 +
*** GDlib (w/ freetype, JPEG, PNG, XPM)
 +
*** [http://us.php.net/manual/en/book.json.php json]
 +
*** [http://php.net/manual/en/book.mbstring.php mbstring]
 +
*** [http://us3.php.net/manual/en/book.xml.php xml]
 +
*** [https://www.php.net/manual/en/book.simplexml.php SimpleXML]
 +
*** [http://www.php.net/manual/en/iconv.installation.php iconv]
 +
*** filter
 +
** Must have Ctype functions installed
 
** Must not use Safe Mode
 
** Must not use Safe Mode
** [http://www.advsofteng.com/download.html ChartDirector] The PHP version of ChartDirector appropriate to your OS should be installed in the PHP Extensions directory.
+
** Must not use Suhosin
* unzip must be installed in ''/usr/bin/''
+
** Must not use [http://php.net/manual/en/book.blenc.php blenc]
* [http://www.nongnu.org/cvs/ CVS]
+
** suggested error reporting
** Ensure your firewall doesn't block port 2401
+
*** error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_USER_DEPRECATED
 +
** Super global order must be set to this
 +
*** variables_order = EGPCS or GPCS or GPC on PHP < 5.3 (for older releases of NATS)
 +
*** request_order = GPC on PHP >= 5.3
 +
** [http://www.advsofteng.com/download.html ChartDirector] The PHP version of ChartDirector appropriate to your OS should be installed in the PHP Extensions directory
 +
*** '''For NATS 4.1.21.1 and below: Version 5.1 of ChartDirector must be used and can be downloaded [http://www.advsofteng.com/download_v511.html here]'''
 +
*** '''For NATS 4.1.22.1 and above: Version 6.x of ChartDirector must be used and can be downloaded [https://www.advsofteng.com/download_v6x.html here]'''
 +
<!--*** '''For NATS X and above: Version x.x (Latest) of ChartDirector must be used and can be downloaded [https://www.advsofteng.com/download.html here]''' -->
 +
** default_charset must be set to utf-8
 +
 
 +
* zip and unzip must be installed in ''/usr/bin/''
 +
 
 
* GNU Tar with Gzip
 
* GNU Tar with Gzip
* [http://www.ioncube.com/ Ioncube]
+
 
** If possible ensure the "enable_dl" setting is turned on in php.ini
+
* Git
*FFMPEG
+
** Git LFS
*MPlayer with all codecs '''Please ensure the GUI is not enabled'''
+
 
 +
* [http://www.ioncube.com/ Ioncube] version 12.0.2 or later
 +
 
 +
* FFMPEG including FFPROBE
  
 
== Server Requirements ==
 
== Server Requirements ==
NATS requires a Web-accessible [[ct#Domain|domain]].  It should be the domain you plan
+
NATS requires a Web-accessible [[ct#Domain|domain]].  It should be the domain you plan on using permanently.  
on using permanently. For example: nats.example.com. Your domain must
+
For example: nats.example.com.
be Web-accessible before we start installing NATS.
 
 
 
'''Note: Make sure that your installation of NATS is on its own unique domain name. If NATS shares its domain name with any other site or content that uses cookies to store information, you will run into issues.'''
 
  
For example, if your site's domain name is ''<nowiki>www.example.com</nowiki>'', your NATS installation should be located on another domain, such as ''<nowiki>www.examplecash.com</nowiki>''
+
* Your domain must be Web-accessible before we start installing NATS.
 +
* '''Note: Make sure that your installation of NATS is on its own unique domain name. If NATS shares its domain name with any other site or content that uses cookies to store information, you will run into issues.'''
 +
** For example, if your site's domain name is ''<nowiki>www.example.com</nowiki>'', your NATS installation should be located on another domain, such as ''<nowiki>www.examplecash.com</nowiki>''
 +
*'''Note: Make sure that your NATS domain has a valid SSL certificate setup.'''
  
 
We also require secure shell (SSH) access.  Please give us access to the
 
We also require secure shell (SSH) access.  Please give us access to the
Line 63: Line 133:
 
software might break NATS.  We cannot support NATS issues arising from
 
software might break NATS.  We cannot support NATS issues arising from
 
the interaction with server administration software.
 
the interaction with server administration software.
 +
 +
=== Virtual Host Configuration ===
 +
When using PHP-FPM, the following must be added to the Virtual Host for NATS:
 +
* <pre> SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 </pre>
 +
You may need to enable 'mod_setenvif' Apache module for this to work.
  
 
== Recommended Server Settings ==
 
== Recommended Server Settings ==
Line 71: Line 146:
 
* Increase MySQL Cache Size (10MB or higher)
 
* Increase MySQL Cache Size (10MB or higher)
 
* Set up a slave database
 
* Set up a slave database
** Our reporting runs off of the slave database, so getting reports and recording statistics will not slow down your join process when using a slave database.
+
** Our reporting runs off of the slave database, so getting reports and recording statistics will not slow down your join process when using a slave database
** For more information, please see the "Database Server(s)" section of our [[NATS Multiple Server Setup#Database Server(s)|NATS Multiple Server Setup]] wiki article.
+
** For more information, please see the "Database Server(s)" section of our [[NATS Multiple Server Setup#Database Server(s)|NATS Multiple Server Setup]] wiki article
 
* Move your database to another server
 
* Move your database to another server
** For more information, please see the "Database Server(s)" section of our [[NATS Multiple Server Setup#Database Server(s)|NATS Multiple Server Setup]] wiki article.
+
** For more information, please see the "Database Server(s)" section of our [[NATS Multiple Server Setup#Database Server(s)|NATS Multiple Server Setup]] wiki article
 
* Add multiple servers for load balancing
 
* Add multiple servers for load balancing
** For more information, please see the "Load Balancing Web Files" section of our [[NATS Multiple Server Setup#Load Balancing Web Files|NATS Multiple Server Setup]] wiki article.
+
** For more information, please see the "Load Balancing Web Files" section of our [[NATS Multiple Server Setup#Load Balancing Web Files|NATS Multiple Server Setup]] wiki article
* Use the Memcached PHP function to speed up your database
+
* Use the Memcached PHP function to speed up your database <b>*Highly recommended when using NATS5 and plan to have multiple administrators*</b>
** For more information, please see our [[Using Memcached For Caching]] wiki article.
+
** For more information, please see our [[Using Memcached For Caching]] wiki article
  
 
If you are using all of the settings listed above, and you are experiencing more stress or slowdown on your NATS server than you anticipated, please [https://clients.toomuchmedia.com put in a support ticket].
 
If you are using all of the settings listed above, and you are experiencing more stress or slowdown on your NATS server than you anticipated, please [https://clients.toomuchmedia.com put in a support ticket].
  
== Dedicated Server Required ==
 
 
For numerous reasons, '''NATS will not be installed on a shared server''' (this includes VPS systems). Performance issues, load issues, permissions issues, and directory restriction issues are just some of the potential reasons why it has been determined that NATS installations on a shared server cannot realistically be done. It's also common that shared servers will use control panel programs and/or have too many restrictions on functionality to operate properly or predictably.
 
  
 
== Installation Information ==
 
== Installation Information ==
Line 97: Line 169:
 
* The MySQL username
 
* The MySQL username
 
* The MySQL password
 
* The MySQL password
* The NATS admin and affiliate area domain  
+
* The NATS admin and affiliate area domain
* <b>Note: The document root cannot be a sub directory of another domainExample, you have your domain, www.somesite.com, nats can be installed under nats.somesite.com, but cannot be installed under www.somesite.com/nats/ </b>
+
* Valid SSL Certificate for the NATS admin and affiliate area domain
 +
* <b>Note: The document root cannot be a sub directory of another domain</b>
 +
** <b>Example: You have your domain, www.somesite.com</b>
 +
*** <b>NATS can be installed under nats.somesite.com</b>
 +
*** <b>NATS cannot be installed under www.somesite.com/nats/</b>
 
* The Apache document root for the above domain
 
* The Apache document root for the above domain
 
** Please give us written permission to overwrite the contents of this directory
 
** Please give us written permission to overwrite the contents of this directory
* What type of encoding to use: Ioncube
 
  
 
We will email the above instructions to you after you purchase NATS.
 
We will email the above instructions to you after you purchase NATS.

Latest revision as of 18:01, 22 November 2024

NATS 5
About NATS 5
NATS Requirements
NATS5 Changelog
NATS5 Cookie Settings
Members Section
Members Management
Adding a Member
View Member Details
Restricted Values
OpenID Connect
Mod Auth OpenIDC
    Adtool
GET /adtool/admin
GET /adtool/adtools
GET /adtool/adtool
GET /adtool/adtool-rules
GET /adtool/adtool-rule
GET /adtool/categories
GET /adtool/field-options
GET /adtool/field-types
GET /adtool/groups
GET /adtool/search
GET /adtool/templates
GET /adtool/types
GET /adtool/type
POST /adtool/adtool
POST /adtool/adtool-rule
POST /adtool/category
POST /adtool/field
POST /adtool/field-option
POST /adtool/group
POST /adtool/import
POST /adtool/type
PATCH /adtool/adtool
PATCH /adtool/adtool-group
PATCH /adtool/adtool-rule
PATCH /adtool/category
PATCH /adtool/field
PATCH /adtool/field-option
PATCH /adtool/group
PATCH /adtool/move
PATCH /adtool/restore-adtool
PATCH /adtool/restore-category
PATCH /adtool/restore-field
PATCH /adtool/restore-field-option
PATCH /adtool/restore-type
PATCH /adtool/type
DELETE /adtool/adtool
DELETE /adtool/adtool-rule
DELETE /adtool/category
DELETE /adtool/field
DELETE /adtool/field-option
DELETE /adtool/group
DELETE /adtool/type
    Affiliate
DELETE /affiliate/account-rep
DELETE /affiliate/account-type
DELETE /affiliate/affiliate
DELETE /affiliate/doc
DELETE /affiliate/group
DELETE /affiliate/permissions
GET /affiliate/account-changes
GET /affiliate/account-types
GET /affiliate/admin-settings
GET /affiliate/campaigns
GET /affiliate/current
GET /affiliate/current-permissions
GET /affiliate/docs
GET /affiliate/doc
GET /affiliate/groups
GET /affiliate/group
GET /affiliate/hits
GET /affiliate/link-styles
GET /affiliate/loginids
GET /affiliate/loginlog
GET /affiliate/manual-payout
GET /affiliate/news-sections
GET /affiliate/notes
GET /affiliate/notices
GET /affiliate/override
GET /affiliate/payout
GET /affiliate/payment-periods
GET /affiliate/payvia-types
GET /affiliate/payvia-type
GET /affiliate/permissions
GET /affiliate/programcampaigns
GET /affiliate/referrer
GET /affiliate/referring-urls
GET /affiliate/reps
GET /affiliate/rest-methods
GET /affiliate/search
GET /affiliate/search-limited
GET /affiliate/settings
GET /affiliate/skins
GET /affiliate/soap-functions
GET /affiliate/status
PATCH /affiliate/adminsettings
PATCH /affiliate/account-change
PATCH /affiliate/account-type
PATCH /affiliate/account-type-permissions
PATCH /affiliate/admin-setting
PATCH /affiliate/affiliate-account-type
PATCH /affiliate/affiliate-group
PATCH /affiliate/allsettings
PATCH /affiliate/account-rep
PATCH /affiliate/avatar
PATCH /affiliate/customs
PATCH /affiliate/defaults
PATCH /affiliate/details
PATCH /affiliate/override
PATCH /affiliate/password
PATCH /affiliate/payment-period
PATCH /affiliate/payvia
PATCH /affiliate/payvia-info
PATCH /affiliate/permissions
PATCH /affiliate/referrer
PATCH /affiliate/reset-api
PATCH /affiliate/reset-rss
PATCH /affiliate/reset-tos
PATCH /affiliate/rest-permissions
PATCH /affiliate/restore
PATCH /affiliate/restore-account-type
PATCH /affiliate/settings
PATCH /affiliate/soap-permissions
PATCH /affiliate/status
POST /affiliate/account-type
POST /affiliate/add
POST /affiliate/doc
POST /affiliate/group
POST /affiliate/invoice
POST /affiliate/manual-sale
POST /affiliate/note
    Biller
GET /biller/available
GET /biller/partner-available
GET /biller/billerdata
GET /biller/cascades
GET /biller/cascades-available
GET /biller/cascade-count
GET /biller/cascade-history
GET /biller/cascade-rules
GET /biller/cascade-rule
GET /biller/cascade-step-count
GET /biller/cascade-steps
GET /biller/cascade-detail
GET /biller/cascade-list
GET /biller/count
GET /biller/detail
GET /biller/fees
GET /biller/partner-fees
GET /biller/last_poll
GET /biller/partner-last-poll
GET /biller/list
GET /biller/partner-detail
GET /biller/partner-list
GET /biller/partner-shortnames
GET /biller/process_types
GET /biller/partner-process-types
GET /biller/shortnames
GET /biller/transaction_types
GET /biller/partner-transaction-types
GET /biller/taxes
POST /biller/add
POST /biller/cascade
POST /biller/cascade-rule
POST /biller/cascade-step
POST /biller/partner
PATCH /biller/cascade
PATCH /biller/cascade-rule
PATCH /biller/cascade-step
PATCH /biller/cascade-steps-reorder
PATCH /biller/fee
PATCH /biller/partner-fee
PATCH /biller/restore
PATCH /biller/restore-cascade
PATCH /biller/restore-partner
PATCH /biller/setting
PATCH /biller/partner-setting
PATCH /biller/tax
DELETE /biller/biller
DELETE /biller/cascade
DELETE /biller/cascade-rule
DELETE /biller/cascade-step
DELETE /biller/fee
DELETE /biller/partner-fee
DELETE /biller/partner
DELETE /biller/tax
    Codes
GET /codes/affiliate-codes
GET /codes/decode
GET /codes/linkcodes
GET /codes/strack
    Config
DELETE /config/setting
GET /config/section
GET /config/sections
PATCH /config/affiliate_default
PATCH /config/section
    Include
DELETE /include/include
DELETE /include/step
GET /include/include
GET /include/includes
GET /include/templates
PATCH /include/include
PATCH /include/restore
PATCH /include/step
POST /include/include
POST /include/step
    Mailing
DELETE /mailing/mailing
DELETE /mailing/mailing-rule
DELETE /mailing/queue
GET /mailing/mailing
GET /mailing/mailings
GET /mailing/mailing-rules
GET /mailing/mailing-rule
GET /mailing/queue
GET /mailing/removelist
PATCH /mailing/mailing
PATCH /mailing/mailing-rule
PATCH /mailing/removelist
PATCH /mailing/removelist-queue
PATCH /mailing/resend-queue
PATCH /mailing/restore-queue
PATCH /mailing/send-mailing
PATCH /mailing/send-test-mailing
POST /mailing/mailing
POST /mailing/mailing-rule
POST /mailing/removelist
    Maintenance
DELETE /maintenance/log
DELETE /maintenance/cache
GET /maintenance/admin-actions
GET /maintenance/log
GET /maintenance/logs
GET /maintenance/nats
GET /maintenance/report
GET /maintenance/report-progress
GET /maintenance/reports
GET /maintenance/server
GET /maintenance/table
GET /maintenance/tables
GET /maintenance/table-clean-count
GET /maintenance/table-clean-progress
PATCH /maintenance/log
PATCH /maintenance/report
PATCH /maintenance/table
    Member
GET /member/available_flags
GET /member/encryptusername
GET /member/authstring
GET /member/details
GET /member/flags
GET /member/loginlog
GET /member/matching
GET /member/notes
GET /member/notices
GET /member/restricted-values
GET /member/search
GET /member/suggestedcanceloffers
GET /member/surfer-actions
PATCH /member/details
PATCH /member/expiration
PATCH /member/expiremanual
PATCH /member/resend-transaction-email
PATCH /member/resend-transaction-postback
PATCH /member/restricted-value
PATCH /member/forget
PATCH /member/lock
PATCH /member/unlock
POST /member/flag
POST /member/login
POST /member/note
POST /member/restricted-value
DELETE /member/flag
DELETE /member/restricted-value
    Message
DELETE /message/message
DELETE /message/permanent
GET /message/count
GET /message/messages
GET /message/view
PATCH /message/read
PATCH /message/unread
PATCH /message/undelete
POST /message/message
    News
DELETE /news/entry
DELETE /news/section
GET /news/entry
GET /news/news
GET /news/sections
PATCH /news/entry
POST /news/entry
POST /news/section
    Notification
DELETE /notification/notification
DELETE /notification/permanent
GET /notification/count
GET /notification/notifications
GET /notification/view
PATCH /notification/read
PATCH /notification/unread
PATCH /notification/undelete
    Option
GET /option/options
GET /option/rule
PATCH /option/rule
PATCH /option/text
POST /option/rule
    Payment
DELETE /payment/invoice
DELETE /payment/payout-period
DELETE /payment/payvia-field
DELETE /payment/payvia-field-mc
DELETE /payment/payvia-rule
GET /payment/dump-format
GET /payment/dump-formats
GET /payment/invoices
GET /payment/payments
GET /payment/payment-dumps
GET /payment/payment-dump
GET /payment/payment-search
GET /payment/payvia
GET /payment/payvias
GET /payment/payvia-fields
GET /payment/payvia-field-mcs
GET /payment/payout-period
GET /payment/payout-periods
GET /payment/payvia-rules
GET /payment/payvia-rule
GET /payment/payviarule
PATCH /payment/copy-dump-format
PATCH /payment/default-payout-period
PATCH /payment/dump-format
PATCH /payment/duplicate-payvia
PATCH /payment/invoice
PATCH /payment/payment
PATCH /payment/payment-paid
PATCH /payment/payment-store
PATCH /payment/payment-unstore
PATCH /payment/payments
PATCH /payment/payments-unstore
PATCH /payment/payout-period
PATCH /payment/payout-period-affiliates
PATCH /payment/payvia
PATCH /payment/payvia-field
PATCH /payment/payvia-fields-reorder
PATCH /payment/payvia-field-mc
PATCH /payment/payvia-field-mcs-reorder
PATCH /payment/payvia-rule
PATCH /payment/payviarule
PATCH /payment/restore-payout-period
PATCH /payment/restore-payvia-field
PATCH /payment/restore-payvia-field-mc
POST /payment/check-dump
POST /payment/dump-format
POST /payment/import-dump
POST /payment/invoice
POST /payment/payout-period
POST /payment/payvia
POST /payment/payvia-field
POST /payment/payvia-field-mc
POST /payment/payvia-rule
    Program
DELETE /program/program
DELETE /program/payout-change
DELETE /program/payout-change-tier
GET /program/additional-payout-change-targets
GET /program/affiliate-available
GET /program/detail
GET /program/list
GET /program/options
GET /program/payout-changes
GET /program/redirect-available
GET /program/sites
GET /program/tours
GET /program/types
PATCH /program/default_payout
PATCH /program/details
PATCH /program/disable_affiliate
PATCH /program/disable_tour
PATCH /program/enable_affiliate
PATCH /program/enable_site
PATCH /program/enable_tour
PATCH /program/move-payout-change
PATCH /program/payout-change
PATCH /program/payout-change-tier
POST /program/new
POST /program/payout-change
POST /program/payout-change-tier
    Report
GET /report/affiliate-ratios
GET /report/hits
GET /report/hit-totals
GET /report/profitloss
GET /report/profit-loss
GET /report/fields
GET /report/focus
GET /report/focuses
GET /report/groups
GET /report/perspective
GET /report/perspectives
GET /report/report
GET /report/subscription
GET /report/surfer
GET /report/surferaction
GET /report/transactionpayouts
GET /report/transactions
GET /report/transaction
GET /report/report-widget
GET /report/widgets
GET /report/widget
GET /report/widget-info
GET /report/views
POST /report/focus
POST /report/group
POST /report/perspective
PATCH /report/focus
PATCH /report/focus-enabled
PATCH /report/focus-default
PATCH /report/focuses-reorder
PATCH /report/perspective
PATCH /report/perspective-group
PATCH /report/report-widget
PATCH /report/widget
DELETE /report/focus
    Reward
DELETE /reward/category
DELETE /reward/purchase
DELETE /reward/point
DELETE /reward/reward
GET /reward/categories
GET /reward/points
GET /reward/purchases
GET /reward/rewards
PATCH /reward/move-point
PATCH /reward/point
PATCH /reward/reward
PATCH /reward/ship-purchase
PATCH /reward/unship-purchase
POST /reward/category
POST /reward/point
POST /reward/reward
    Service
GET /service/check-functions
GET /service/condition
GET /service/countries
GET /service/country
GET /service/datetime
GET /service/languages
GET /service/periods
GET /service/ping
GET /service/project
GET /service/rule-condition-data
GET /service/rule-info
GET /service/stats-breakdowns
GET /service/timezone
GET /service/timestamp
POST /service/sendemail
    Site
GET /site/base-templates
GET /site/billers
GET /site/cookies
GET /site/coupon
GET /site/coupons
GET /site/coupon-revisions
GET /site/email-settings
GET /site/groups
GET /site/option
GET /site/options
GET /site/options-available
GET /site/option-fields
GET /site/option-rules
GET /site/option-rule
GET /site/option-type
GET /site/option-types
GET /site/programs
GET /site/redirect
GET /site/redirects
GET /site/redirect-rules
GET /site/redirect-rule
GET /site/site-list
GET /site/site
GET /site/site-notices
GET /site/site-partner
GET /site/site-partners
GET /site/site-type
GET /site/sites
GET /site/template
GET /site/templates
GET /site/template-sections
GET /site/template-sites
GET /site/tour
GET /site/tours
GET /site/tour-emails
GET /site/tour-notices
POST /site/coupon
POST /site/group
POST /site/option
POST /site/option-rule
POST /site/redirect
POST /site/redirect-rule
POST /site/site-partner
POST /site/site-tour
POST /site/copy-template
POST /site/tour
PATCH /site/cookie
PATCH /site/coupon
PATCH /site/duplicate-option
PATCH /site/email-settings
PATCH /site/group
PATCH /site/move
PATCH /site/option
PATCH /site/option-rule
PATCH /site/redirect
PATCH /site/redirect-rule
PATCH /site/reset-coupon
PATCH /site/restore-group
PATCH /site/restore-option
PATCH /site/restore-redirect
PATCH /site/restore-site
PATCH /site/restore-site-partner
PATCH /site/restore-tour
PATCH /site/site
PATCH /site/site-partner
PATCH /site/template
PATCH /site/tour
DELETE /site/cookie
DELETE /site/group
DELETE /site/option
DELETE /site/option-rule
DELETE /site/site
DELETE /site/site-partner
DELETE /site/redirect
DELETE /site/redirect-rule
DELETE /site/template
DELETE /site/tour
DELETE /site/tour-field
    Skin
DELETE /skin/skin
DELETE /skin/template
GET /skin/colors
GET /skin/export
GET /skin/skins
GET /skin/sections
GET /skin/templates
GET /skin/template
PATCH /skin/colors
PATCH /skin/flush
PATCH /skin/skin
PATCH /skin/template
POST /skin/copy-template
POST /skin/import
POST /skin/skin
POST /skin/template
NATS 4
About NATS 4
NATS4 Requirements
NATS4 vs NATS3 Advantages
IPSP Integration
NATS4 Changelog
Members Admin
The Members Admin
View Member Details
Add Member
MySQL Auth
Mod Authn DB
Multisite Access
Member Logging
Member Password Retrieval
OpenID Connect
Mod Auth OpenIDC
ID Numbers

Software Requirements

Note: These requirements apply to the most recent version of NATS. If you are working with an older version of NATS please contact Too Much Media for assistance.

These software requirements are for both NATS4 and NATS5 Please verify the following programs are installed Your host can install any missing or out-of-date programs

  • Linux or Unix, including BSD, Macintosh OS X, and Darwin
    • You must not use control panel softwares such as Cpanel
  • Apache
    • Must not use mod_security or mod_security2
    • Must not use Safe Mode
    • If open_basedir is configured, you need to add the NATS install directory as well
    • Must have FollowSymLinks enabled in Apache for your NATS install
    • Apache must be able to use the directives specified in the nats/www/.htaccess file in your NATS install
  • HTTP
    • Make sure HTTP version 1.1 is compatible.
      • curl --http1.1 --write-out '%{http_version}' --silent --output /dev/null --head https://www.google.com
        • This command should return "1.1" if it is compatible.
    • Make sure HTTP version 2.0 is compatible.
      • curl --http2 --write-out '%{http_version}' --silent --output /dev/null --head https://www.google.com
        • This command should return "2" if it is compatible.
  • MySQL version 5 for its database partitioning capability (5.1 through, and including 5.7) OR MySQL version 8.0.x (excluding specifically 8.0.17 & 8.0.18)
    • Ensure that the following settings are not on for @@sql_mode
      • STRICT_TRANS_TABLES
      • ONLY_FULL_GROUP_BY
      • INNODB_STRICT_MODE
        • innodb_strict_mode = 0
      • alternative check -> show global variables like '<setting>';
    • MySQL must also be accessible from the CLI, which may require changes to the my.cnf file
    • The MySQL user must have all privileges on the NATS DB, grant is optional
    • Ensure that NO_UNSIGNED_SUBTRACTION is enabled
    • Ensure that innodb_file_per_table is enabled in my.cnf
    • Ensure that triggers can be created by the NATS user
      • Example MySQL Command: GRANT CREATE TRIGGER ON <NATSDB>.* TO '<NATSUSER>'@'<DBHOST>';
        • <NATSDB> = Your NATS database
        • <NATSUSER> = The NATS user
        • <DBHOST> = Your DB host
      • If binary logging is enabled, you may need to set the log_bin_trust_function_creators variable
        • If this is not an option, you may provide SUPER privilege to the NATS DB user
    • Ensure open_files_limit is set to at least 20,000
    • Ensure that the InnoDB engine is supported
      • To see if it is supported run this query:"show engines;"
    • Though MariaDB has not been fully tested and and is not fully supported, a number of clients are using it without issue
      • See MariaDB's article on PHP 5 issues
      • When using MariaDB we recommend using the mysqlnd extension (instead of the mysql extension) to avoid client mismatch errors
      • When using the mysqlnd extension, increase the PHP memory limit, as mysql results are included in the memory limit with the mysqlnd extension
  • MaxMind GeoIP.
    • You must have at least the free version
      • If you purchased a GeoIP legacy license, than you can install mod_geoip or pecl geoip as detailed on our GeoIP article
      • If not, you will need to use GeoIP2 with the new apache module as detailed on our GeoIP2 article
  • PHP version 7 (7.1 through, and including 7.4, not 7.0) OR 8.1 (8.0 and 8.2 are not supported)
    • Enable short_open_tag in your server's php.ini
    • Disable session.auto_start in your server's php.ini
    • PHP CLI (should be the same version used by apache and should use the same php.ini)
    • Apache and the CLI must allow exec commands from PHP
    • The following extensions must be enabled:
      • OpenSSL
        • For PHP 7.1 - 7.4 the version of OpenSSL should be equal or greater than 1.0.1, but less that 3.0
        • For PHP 8.1 the version of OpenSSL should be equal or greater than 1.0.2, but less that 4.0. If you are running OpenSSL version 3, make sure that legacy provider is enabled.
        • See further information on OpenSSL on PHP OpenSSL requirements page
      • mysqli
      • cURL with/Open SSL
      • allow_url_fopen
      • GDlib (w/ freetype, JPEG, PNG, XPM)
      • json
      • mbstring
      • xml
      • SimpleXML
      • iconv
      • filter
    • Must have Ctype functions installed
    • Must not use Safe Mode
    • Must not use Suhosin
    • Must not use blenc
    • suggested error reporting
      • error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_USER_DEPRECATED
    • Super global order must be set to this
      • variables_order = EGPCS or GPCS or GPC on PHP < 5.3 (for older releases of NATS)
      • request_order = GPC on PHP >= 5.3
    • ChartDirector The PHP version of ChartDirector appropriate to your OS should be installed in the PHP Extensions directory
      • For NATS 4.1.21.1 and below: Version 5.1 of ChartDirector must be used and can be downloaded here
      • For NATS 4.1.22.1 and above: Version 6.x of ChartDirector must be used and can be downloaded here
    • default_charset must be set to utf-8
  • zip and unzip must be installed in /usr/bin/
  • GNU Tar with Gzip
  • Git
    • Git LFS
  • FFMPEG including FFPROBE

Server Requirements

NATS requires a Web-accessible domain. It should be the domain you plan on using permanently. For example: nats.example.com.

  • Your domain must be Web-accessible before we start installing NATS.
  • Note: Make sure that your installation of NATS is on its own unique domain name. If NATS shares its domain name with any other site or content that uses cookies to store information, you will run into issues.
    • For example, if your site's domain name is www.example.com, your NATS installation should be located on another domain, such as www.examplecash.com
  • Note: Make sure that your NATS domain has a valid SSL certificate setup.

We also require secure shell (SSH) access. Please give us access to the same account you use to log in to the server. The account must be allowed to create files and folders in your user directory and replace the Apache VirtualHost directory with a symlink to your user directory. The user account must also be able to create a crontab entry.

Please create a new database in the current MySQL server. Grant all access to that database to a username and password of your choosing. Please make sure that the trigger privilege is for all the tables in the database. user Commands to create a database and grant all access to a specific user can be found in the MySQL documentation.

Please remove any server administration software. Server administration software might break NATS. We cannot support NATS issues arising from the interaction with server administration software.

Virtual Host Configuration

When using PHP-FPM, the following must be added to the Virtual Host for NATS:

  •  SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 

You may need to enable 'mod_setenvif' Apache module for this to work.

Recommended Server Settings

We recommend that you use the following settings to ensure that NATS will run optimally, and avoid as much server stress and slowdown as possible. If your NATS system is getting stressed or otherwise running slowly, try using the following settings to remove on the NATS server and improve overall performance.

  • 256MB memory allocation for PHP
  • Allow Temp Tables to run in Memory (10MB or higher)
  • Increase MySQL Cache Size (10MB or higher)
  • Set up a slave database
    • Our reporting runs off of the slave database, so getting reports and recording statistics will not slow down your join process when using a slave database
    • For more information, please see the "Database Server(s)" section of our NATS Multiple Server Setup wiki article
  • Move your database to another server
  • Add multiple servers for load balancing
  • Use the Memcached PHP function to speed up your database *Highly recommended when using NATS5 and plan to have multiple administrators*

If you are using all of the settings listed above, and you are experiencing more stress or slowdown on your NATS server than you anticipated, please put in a support ticket.


Installation Information

After you server meets the above requirements, please reply to your install ticket saying that you have met the requirements and have the following information ready when we contact you:

  • The SSH server IP or host address
  • The SSH username
  • The SSH password
  • The SSH port
  • The MySQL host name (even if its localhost, please specify)
  • The MySQL database name
  • The MySQL username
  • The MySQL password
  • The NATS admin and affiliate area domain
  • Valid SSL Certificate for the NATS admin and affiliate area domain
  • Note: The document root cannot be a sub directory of another domain
    • Example: You have your domain, www.somesite.com
      • NATS can be installed under nats.somesite.com
      • NATS cannot be installed under www.somesite.com/nats/
  • The Apache document root for the above domain
    • Please give us written permission to overwrite the contents of this directory

We will email the above instructions to you after you purchase NATS. Please contact us if you have any questions even before your installation begins. Your host can help you with any questions you have about the software on this list.