# Requirements

## Hardware Requirements

There are many possible configurations that could run this application. The scale of the enterprise obviously will have a significant bearing on the final configuration.

Each client connection to the web server and database engine will also consume RAM so the more connections the larger the RAM requirement. Similarly disk space required is a function of the volume of customers, suppliers and transactions. Suffice it to say that due to the efficiency of the components of the system the demands on the hardware are exceptionally light by client server application standards.

As a guide, an installation for up to 50 simultaneous users could consist of the following: a Linux operating system, using nginx, lighthttpd, hiawatha or apache with even an entry level hardware server. This would provide more than adequate performance. A NAS or SAN with disk redundancy would be preferred in larger installations. With multiple servers with with SMP, load balancing, a separate database server, and large amounts of RAM the limit on database size and the number can be scaled to the most demanding enterprises.

In practise most businesses will elect to outsource the hardware to a web-hosting company where dedicated servers can be rented for minimal cost. When using the hosting facilities of a 3rd party it is important to consider the infrastructure that the host has in place:

- Backups - the business should always configure its own backup in any event
- Hardware redundancy - ie failover spare servers, disks etc
- The security and physical protection of the hosts hardware
- Backup power generation
- Backup connectivity options of the host ie more than one connection to the internet is preferable

⬆ Top

## Software Requirements

If the business elects to have their own on-site web-server there are many software bundles that will provide the necessary infrastructure of:

- PHP a versions later than 5.1
- MySQL version 4.3 or above - innodb transaction compliant tables are required

The latest binaries can be downloaded separately for both by following the above links but in a windows environment the apache2triad bundle provides all the software required and comes with a convenient installer.

In a windows/linux/unix environment the XAMPP also provides all the software required and is easy to install.

Installing either of the above two server software bundles will provide all you need to get going. To get the latest and greatest revisions of the individual components you need:

- PHP Any version greater than 5.1 will work. PHP works on all operating systems so EMP is therefore operating system independent. If transfer of EDI orders is required the ftp extensions for PHP will be needed. If using translations the gettext extension for PHP is also required. The graphing functions also require the GD extension.
- MySQL-Max with Innodb transactional tables support. Innodb was introduced in 2001 to MySQL and has Oracle like functionality – with similar speed. MySQL later than version 4 has Innodb tables in by default. Since MySQL represents such good value for money it has been used. An example configuration file my.cnf normally under /usr/local/mysql/var is available in the mysql documentation to show typical settings for the Innodb configuration. The expected size of the data is useful although additional data files can be created retrospectively as necessary. Note that only the tables that require transaction support are defined as Innodb tables.
- A web server. EMP is tested with nginx, lighthttpd, hiawatha and Apache, but most web servers are supported by PHP in various forms. PHP running in Fast CGI mode ensures that throughput and performance is optomised.
- If the web server is accessible over the Internet and not just over a LAN then encrypted communications are required. The openssl and mod-ssl modules for apache can be easily used to ensure all data is transmitted in encrypted form. Using https is strongly recommended.

The system could be used with many other database servers but it is tested and developed on MySQL. Independent benchmarks show that MySQL is one of the fastest for most common database tasks, particularly at establishing connections – since this is required for every page, MySQL is therefore ideally suited to the web environment.

⬆ Top

## Using EMP with a Wiki

Wikis are an unfortunate name for a marvellous business tool. They are a genre of software that allow user editing of a web-site. EMP defines the names for wiki pages and provides a structure for the information held on the wiki - where users can add their experiences and information about customer, products and suppliers. EMP links to a customer page - if the page does not exist then there is a prompt to create it - it is then up to the business how they implement the wiki into their business. Possible scenarios might be that the customer page contains links to:

- Credit control History
- Customer Service Inquiries Log
- Sales call Log

If an integrated wiki is enabled from

Setup->General->Configuration Settings

then select the wiki application to integrate with. EMP has links from the Selection menus for Items (SelectProduct.php), Customers (SelectCustomer.php) and Suppliers (SelectSupplier.php). Clicking on the link brings up the wiki if the page does not currently exist you will be able to create it - in future it will go directly to the page created.

The EMP product link to the wiki might contain details about the development of the item, links to drawings, specification, warranty, instructions, competing products and competitor product details. Some thought about how the wiki is structured is required. The more this tool is used the more indispensible and value it will provide to the business as a single integrated business knowledge base.

The wacko wiki is very lightweight and imposes minimal additional overhead on a web-server and is possibly one of the most functional and flexible wikis available.

Simply install this on the same web server as your EMP install and provide the path to the wiki in Setup->General->Configuration Settings.

You should make the wiki only visible to registered users - see the configuration pages of the wacko wiki - in particular the setting in config.inc.php for:

- "default_read_acl" => "*" - this setting determines who can read the page by default "*" means anyone can read change this to "?" for only registered users
- "default_comment_acl" => "*" - this determines who can comment on the page by default "*" allows anyone to comment on the page - change this to "?" for just registered users
- "allow_registration" => "1" - change this to "0" to ensure that unuathorised people need to contact the system administrator to register