improve travis_setup_mysql.sh
[racktables] / README.md
CommitLineData
2797f2c7
DO
1# Welcome!
2Thank you for selecting RackTables as your datacenter management solution!
3If you are looking for documentation or wish to send feedback, please
4look for the respective links at [project's web-site](http://racktables.org).
5
fde823aa
DO
6# How to install RackTables
7
8## 1. Prepare the server
9
10RackTables uses a web-server with PHP (5.2.10 or newer) for front-end and a
11MySQL/MariaDB server version 5 for back-end. The most commonly used web-server
12for RackTables is Apache httpd.
13
14### 1.1. Install MySQL server
15
16| Distribution | How to do |
17| ------------------ | ----------------------------------------------------------------------- |
fde823aa
DO
18| Debian 6 | `aptitude install mysql-server-5.1` |
19| Debian 7 | `aptitude install mysql-server-5.1` |
20| Fedora 8-16 | `yum install mysql-server mysql` |
c2a49f7b 21| Fedora 23-26 | `dnf install mariadb-server mariadb` |
3425beb7 22| FreeBSD 10 | `pkg install mysql56-server` |
38fd042d 23| openSUSE 42.1 | `zypper install mysql-community-server` |
fde823aa
DO
24| Scientific Linux 6 | `yum install mysql-server mysql` |
25| Ubuntu 14.04 | `apt-get install mysql-server` |
a4b869c7 26| Ubuntu 16.04 | `apt-get install mysql-server` |
fde823aa
DO
27
28### 1.2. Enable Unicode in the MySQL server
29
30| Distribution | How to do |
31| ------------------ | ------------------------------------------------------------------------------------------------------------------ |
fde823aa
DO
32| Debian 6 | add `character-set-server=utf8` line to `[mysqld]` section of `/etc/mysql/my.cnf` file and restart mysqld |
33| Debian 7 | add `character-set-server=utf8` line to `[mysqld]` section of `/etc/mysql/my.cnf` file and restart mysqld |
34| Fedora 8-16 | add `character-set-server=utf8` line to `[mysqld]` section of `/etc/my.cnf` file and restart mysqld |
c2a49f7b 35| Fedora 23-26 | ```printf "[mysqld]\ncharacter-set-server=utf8\n" > /etc/my.cnf.d/mysqld-charset.cnf; systemctl restart mariadb``` |
38fd042d 36| openSUSE 42.1 | No action required, comes configured for UTF-8 by default. |
fde823aa
DO
37| Scientific Linux 6 | add `character-set-server=utf8` line to `[mysqld]` section of `/etc/my.cnf` file and restart mysqld |
38| Ubuntu 14.04 | ```printf "[mysqld]\ncharacter-set-server=utf8\n" > /etc/mysql/conf.d/charset.cnf; service mysql restart``` |
a4b869c7 39| Ubuntu 16.04 | ```printf "[mysqld]\ncharacter-set-server=utf8\n" > /etc/mysql/conf.d/charset.cnf; service mysql restart``` |
fde823aa
DO
40
41### 1.3. Install PHP and Apache httpd (or nginx)
42
43| Distribution | How to do |
44| ------------------ | ------------------------------------------------------------------------------------ |
fde823aa
DO
45| Debian 6 | `aptitude install libapache2-mod-php5 php5-gd php5-mysql php5-snmp` |
46| Debian 7 (nginx) | `aptitude install nginx php5-fpm` **(see note below)** |
d32867b3
DO
47| Fedora 8-16 | `yum install httpd php php-mysql php-pdo php-gd php-snmp php-mbstring php-bcmath` |
48| Fedora 23 | `dnf install httpd php php-mysql php-pdo php-gd php-snmp php-mbstring php-bcmath` |
c2a49f7b 49| Fedora 26 | `dnf install httpd php php-mysqlnd php-pdo php-gd php-snmp php-mbstring php-bcmath` |
3425beb7 50| FreeBSD 10 | see note 1.3.c |
38fd042d 51| openSUSE 42.1 | `zypper install apache2-mod_php5 php5-gd php5-mbstring php5-mysql php5-bcmath` |
fde823aa 52| Scientific Linux 6 | `yum install httpd php php-mysql php-pdo php-gd php-mbstring php-bcmath` |
d32867b3 53| Ubuntu 14.04 | `apt-get install apache2-bin libapache2-mod-php5 php5-gd php5-mysql php5-snmp` |
e5c4b20b 54| Ubuntu 16.04 | `apt-get install apache2-bin libapache2-mod-php7.0 php7.0-gd php7.0-mysql php7.0-mbstring php7.0-bcmath php7.0-json php7.0-snmp`
fde823aa
DO
55
56#### 1.3.a. Debian 7 with nginx
2797f2c7
DO
57Remember to adjust `server_name` in `server {}` section, otherwise your logout link
58will point to localhost (and thus fail).
59Notice, that fpm.sock is advised, keep the rest on default configuration, or
60tweak to your needs. You may need to set `fastcgi_read_timeout 600;` if you use
61some external addons like fping, which may take some time in certain situations.
62Please note that setting aggresive caching for php scripts may result in stale
63content - so maximum of 60 seconds is advised, but by default it is not enabled.
64
44d5d40a 65#### 1.3.b. [redacted]
2797f2c7 66
44d5d40a 67#### 1.3.c. FreeBSD 10
3425beb7 68There are 3 different ways how you can install RackTables and its dependencies on FreeBSD.
69
44d5d40a 70######A. use pkg (Binary Package Management) (not always the newest version)
3425beb7 71```
72# pkg install racktables
73# pkg install mod_php56 mysql56-server
74```
44d5d40a 75As of March 2017 this will install RackTables Version 0.20.11 and its dependencies (php 5.6, mysql-server 5.6 and apache 2.4).
3425beb7 76
44d5d40a 77######B. use the ports system (possibly more recent than pkg)
3425beb7 78```
79# cd /usr/ports/sysutils/racktables
80# make install
81# pkg install mod_php56 mysql56-server
82```
44d5d40a 83As of March 2017 this will install RackTables Version 0.20.11 and build and install its dependencies (php 5.6, mysql-server 5.6 and apache 2.4).
3425beb7 84
44d5d40a 85######C. manual (newest version)
3425beb7 86Install dependencies with pkg:
87```
88# pkg install php70-bcmath php70-curl php70-filter php70-gd php70-gmp php70-json php70-mbstring php70-openssl php70-pdo php70-pdo_mysql php70-session php70-simplexml php70-snmp php70-sockets
510ae82b 89# pkg install mod_php70 mysql56-server
3425beb7 90```
91
44d5d40a 92unpack tar.gz/zip archive to `/usr/local/www`
3425beb7 93
94symblink racktables dir
95```
96# cd /usr/local/www
97# ln -s RackTables-0.20.xx racktables
98```
99
100##### Common install steps
101Apache users should create a racktables.conf file under their apache
102Includes directory with the following contents:
103```
104AddType application/x-httpd-php .php
105AddType application/x-httpd-php-source .phps
106
107<Directory /usr/local/www/racktables/wwwroot>
108 DirectoryIndex index.php
109 Require all granted
110</Directory>
111Alias /racktables /usr/local/www/racktables/wwwroot
112```
113
114Start services:
115```
116#echo 'apache24_enable="YES"' >> /etc/rc.conf
117#service apache24 start
118
119#echo 'mysql_enable="YES"' >> /etc/rc.conf
120#service mysql-server start
121```
122
0ed66a4d 123Browse to http://address.to.your.server/racktables/index.php and follow the instructions.
3425beb7 124
44d5d40a 125Note: set `secret.php` permissions when prompted.
3425beb7 126```
127# chown www:www /usr/local/www/racktables/wwwroot/inc/secret.php
128# chmod 400 /usr/local/www/racktables/wwwroot/inc/secret.php
129```
130
131
fde823aa 132## 2. Copy the files
2797f2c7
DO
133Unpack the tar.gz/zip archive to a directory of your choice and configure Apache
134httpd to use `wwwroot` subdirectory as a new DocumentRoot. Alternatively,
135symlinks to `wwwroot` or even to `index.php` from an existing DocumentRoot are
35d895be 136also possible and often advisable (see `README.Fedora`).
2797f2c7 137
fde823aa 138## 3. Run the installer
2797f2c7
DO
139Open the configured RackTables URL and you will be prompted to configure
140and initialize the application.
141
8c5b4ba3
DO
142| Distribution | Apache httpd UID:GID | MySQL UNIX socket path |
143| --------------- | ----------------------- | -------------------------------- |
c2a49f7b 144| Fedora 23-26 | `apache:apache` | `/var/lib/mysql/mysql.sock` |
38fd042d 145| openSUSE 42.1 | `wwwrun:www` | `/var/run/mysql/mysql.sock` |
8c5b4ba3 146| Ubuntu 14.04 | `www-data:www-data` | `/var/run/mysqld/mysqld.sock` |
d1c79f04 147| Ubuntu 16.04 | `www-data:www-data` | `/var/run/mysqld/mysqld.sock` |
8c5b4ba3 148
fde823aa 149# How to upgrade RackTables
2797f2c7
DO
150
1510. **Backup your database** and check the release notes below before actually
152 starting the upgrade.
1531. Remove all existing files except configuration (the `inc/secret.php` file)
154 and local plugins (in the `plugins/` directory).
1552. Put the contents of the new tar.gz/zip archive into the place.
1563. Open the RackTables page in a browser. The software will detect version
157 mismatch and display a message telling to log in as admin to finish
158 the upgrade.
1594. Do that and report any errors to the bug tracker or the mailing list.
160
161## Release notes
162
c5c39ee5
AA
163### Upgrading to 0.20.11
164
d40d136a 165New `IPV4_TREE_SHOW_UNALLOCATED` configuration option introduced to disable
c5c39ee5 166dsplaying unallocated networks in IPv4 space tree. Setting it also disables
e1e193fe 167the "knight" feature.
c5c39ee5 168
2797f2c7
DO
169### Upgrading to 0.20.7
170
171From now on the minimum (oldest) release of PHP that can run RackTables is
1725.2.10. In particular, to continue running RackTables on CentOS 5 it is
173necessary to replace its php* RPM packages with respective php53* packages
174before the upgrade (except the JSON package, which PHP 5.3 provides internally).
175
176Database triggers are used for some data consistency measures. The database
177user account must have the 'TRIGGER' privilege, which was introduced in
178MySQL 5.1.7.
179
180The `IPV4OBJ_LISTSRC` configuration option is reset to an expression which enables
181the IP addressing feature for all object types except those listed.
182
183Tags could now be assigned on the Edit/Properties tab using a text input with
184auto-completion. Type a star '*' to view full tag tree in auto-complete menu.
185It is worth to add the following line to the permissions script if the
186old-fashioned 'Tags' tab is not needed any more:
187```
188 deny {$tab_tags} # this hides 'Tags' tab
189```
190
191This release converts collation of all DB fields to the `utf8_unicode_ci`. This
192procedure may take some time, and could fail if there are rows that differ only
193by letter case. If this happen, you'll see the failed SQL query in upgrade report
194with the "Duplicate entry" error message. Feel free to continue using your
195installation. If desired so, you could eliminate the case-duplicating rows
196and re-apply the failed query.
197
198### Upgrading to 0.20.6
199
200New `MGMT_PROTOS` configuration option replaces the `TELNET_OBJS_LISTSRC`,
201`SSH_OBJS_LISTSRC` and `RDP_OBJS_LISTSRC` options (converting existing settings as
202necessary). `MGMT_PROTOS` allows to specify any management protocol for a
203particular device list using a RackCode filter. The default value
204(`ssh: {$typeid_4}, telnet: {$typeid_8}`) produces `ssh://server.fqdn` for
205servers and `telnet://switch.fqdn` for network switches.
206
207### Upgrading to 0.20.5
208
209This release introduces the VS groups feature. VS groups is a new way to store
210and display virtual services configuration. There is a new "ipvs" (VS group)
211realm. All previously existing VS configuration remains functional and user
212is free to convert it to the new format, which displays it in a more natural way
213and allows to generate virtual_server_group keepalived configs. To convert a
214virtual service to the new format, it is necessary to manually create a VS group
215object and assign IP addresses to it. The VS group will display a "Migrate" tab
216to convert the old-style VS objects, which can be removed after a successful
217conversion.
218
219The old-style VS configuration becomes **deprecated**. Its support will be removed
220in a future major release. So it is strongly recommended to convert it to the
221new format.
222
223### Upgrading to 0.20.4
224
225Please note that some dictionary items of Cisco Catalyst 2960 series switches
226were renamed to meet official Cisco classification:
227
228old name | new name
229------------|---------
2302960-48TT | 2960-48TT-L
2312960-24TC | 2960-24TC-L
2322960-24TT | 2960-24TT-L
2332960-8TC | 2960-8TC-L
2342960G-48TC | 2960G-48TC-L
2352960G-24TC | 2960G-24TC-L
2362960G-8TC | 2960G-8TC-L
237C2960-24 | C2960-24-S
238C2960G-24PC | C2960-24PC-L
239
240The `DATETIME_FORMAT` configuration option used in setting date and time output
241format now uses a [different](http://php.net/manual/en/function.strftime.php)
242syntax. During upgrade the option is reset to
243the default value, which is now %Y-%m-%d (YYYY-MM-DD) per ISO 8601.
244
245This release intoduces two new configuration options:
246`REVERSED_RACKS_LISTSRC` and `NEAREST_RACKS_CHECKBOX`.
247
248### Upgrading to 0.20.1
249
250The 0.20.0 release includes bug which breaks IP networks' capacity displaying on
25132-bit architecture machines. To fix this, this release makes use of PHP's BC
252Math module. It is a new reqiurement. Most PHP distributions have this module
253already enabled, but if yours does not - you need yo recompile PHP.
254
255Security context of 'ipaddress' page now includes tags from the network
256containing an IP address. This means that you should audit your permission rules
257to check there is no unintended allows of changing IPs based on network's
258tagset. Example:
259```
260 allow {client network} and {New York}
261```
262This rule now not only allows any operation on NY client networks, but also any
263operation with IP addresses included in those networks. To fix this, you should
264change the rule this way:
265```
266 allow {client network} and {New York} and not {$page_ipaddress}
267```
268
269### Upgrading to 0.20.0
270
271WARNING: This release have too many internal changes, some of them were waiting
272more than a year to be released. So this release is considered "BETA" and is
273recommended only to curiuos users, who agree to sacrifice the stability to the
274progress.
275
276Racks and Rows are now stored in the database as Objects. The RackObject table
277was renamed to Object. SQL views were created to ease the migration of custom
278reports and scripts.
279
280New plugins engine instead of `local.php` file. To make your own code stored in
281`local.php` work, you must move the `local.php` file into the `plugins/` directory.
282The name of this file does not matter any more. You also can store multiple
283files in that dir, separate your plugins by features, share them and try the
284plugins from other people just placing them into `plugins/` dir, no more merging.
285
286* `$path_to_local_php` variable has no special meaning any more.
287* `$racktables_confdir` variable is now used only to search for `secret.php` file.
288* `$racktables_plugins_dir` is a new overridable special variable pointing to `plugins/` directory.
289
290Beginning with this version it is possible to delete IP prefixes, VLANs, Virtual
291services and RS pools from within theirs properties tab. So please inspect your
292permissions rules to assure there are no undesired allows for deletion of these
293objects. To ensure this, you could try this code in the beginning of permissions
294script:
295```
296allow {userid_1} and {$op_del}
297deny {$op_del} and ({$tab_edit} or {$tab_properties})
298```
299
300Hardware gateways engine was rewritten in this version of RackTables. This means
301that the file `gateways/deviceconfig/switch.secrets.php` is not used any more. To
302get information about configuring connection properties and credentials in a new
303way please read [this](http://wiki.racktables.org/index.php/Gateways).
304
305This also means that recently added features based on old API (D-Link switches
306and Linux gateway support contributed by Ilya Evseev) are not working any more
307and waiting to be forward-ported to new gateways API. Sorry for that.
308
309Two new config variables appeared in this version:
310 - `SEARCH_DOMAINS`. Comma-separated list of DNS domains which are considered
311 "base" for your network. If RackTables search engine finds multiple objects
312 based on your search input, but there is only one which FQDN consists of
313 your input and one of these search domains, you will be redirected to this
314 object and other results will be discarded. Such behavior was unconditional
315 since 0.19.3, which caused many objections from users. So welcome this
316 config var.
317 - `QUICK_LINK_PAGES`. Comma-separated list of RackTables pages to display links
318 to them on top. Each user could have his own list.
319
320Also some of config variables have changed their default values in this version.
321This means that upgrade script will change their values if you have them in
322previous default state. This could be inconvenient, but it is the most effective
323way to encourage users to use new features. If this behavior is not what you
324want, simply revert these variables' values:
325
326variable | old | new | comment
327------------------------|-------------|-------|--------
328`SHOW_LAST_TAB` | no | yes
329`IPV4_TREE_SHOW_USAGE` | yes | no | Networks' usage is still available by click.
330`IPV4LB_LISTSRC` | {$typeid_4} | false
331`FILTER_DEFAULT_ANDOR` | or | and | This implicitly enables the feature of dynamic tree shrinking.
332`FILTER_SUGGEST_EXTRA` | no | yes | Yes, we have extra logical filters!
333`IPV4_TREE_RTR_AS_CELL` | yes | no | Display routers as simple text, not cell.
334
335Also please note that variable `IPV4_TREE_RTR_AS_CELL` now has third special value
336besides 'yes' and 'no': 'none'. Use 'none' value if you are experiencing low
337performance on IP tree page. It will completely disable IP ranges scan for
338used/spare IPs and the speed of IP tree will increase radically. The price is
339you will not see the routers in IP tree at all.