Difference between revisions of "NATS Requirements"
TMMDerrick (talk | contribs) |
|||
(109 intermediate revisions by 21 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 |
− | * [ | + | ** 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 | + | ** 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 | ||
Line 24: | Line 48: | ||
**** <NATSUSER> = The NATS user | **** <NATSUSER> = The NATS user | ||
**** <DBHOST> = Your DB host | **** <DBHOST> = Your DB host | ||
− | *** If binary logging is enabled, you may need to set the log_bin_trust_function_creators variable | + | *** 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 open_files_limit is set to at least 20,000 | ||
− | * [http://www.maxmind.com/ MaxMind GeoIP.] | + | ** 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 session.auto_start 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 | + | ** 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 [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 |
− | * | + | ** Must not use [http://php.net/manual/en/book.blenc.php 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 | ||
+ | ** [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] | + | |
− | + | * Git | |
− | *FFMPEG | + | ** Git LFS |
− | + | ||
+ | * [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. |
− | |||
− | |||
− | |||
− | 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 72: | 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 80: | 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]. | ||
− | |||
− | |||
− | |||
== Installation Information == | == Installation Information == | ||
Line 106: | 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 domain | + | * 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 | ||
− | |||
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 4
|
---|
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
- For more information please see Mod_security
- 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
- Must not use mod_security or mod_security2
- 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.
- Make sure HTTP version 1.1 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
- Example MySQL Command: GRANT CREATE TRIGGER ON <NATSDB>.* TO '<NATSUSER>'@'<DBHOST>';
- 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
- Ensure that the following settings are not on for @@sql_mode
- 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
- OpenSSL
- 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
- default_charset must be set to utf-8
- Enable
- zip and unzip must be installed in /usr/bin/
- GNU Tar with Gzip
- Git
- Git LFS
- Ioncube version 12.0.2 or later
- 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
- For more information, please see the "Database Server(s)" section of our NATS Multiple Server Setup wiki article
- Add multiple servers for load balancing
- For more information, please see the "Load Balancing Web Files" section of our NATS Multiple Server Setup wiki article
- Use the Memcached PHP function to speed up your database *Highly recommended when using NATS5 and plan to have multiple administrators*
- 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 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/
- Example: You have your domain, www.somesite.com
- 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.