Getting Started
Prerequisites
- PHP greater than 4.2. The system is therefore operating system
independent since PHP can be configured as a CGI module for use on MS
IIS or as a module for Apache under either Windows (NT, 2000 or XP) or
Unix/Linux. It has been tested under both Windows (NT and XP) and
Linux.
- MySQL greater than version 4 with Innodb transactional
tables support. Foreign key constraints are also required. These were
added to Innodb in 2003. Innodb was introduced in 2001 to MySQL and has
Oracle like functionality - row level locking and database transactions
with similar speed. (The system could be used with Oracle or other
database systems, with minimal modification.) An example configuration
file, my.cnf, normally under /usr/local/mysql/var is available in the
MyySQL documentation to show typical settings for the Innodb
configuration. The expected size of the data is useful although Innodb
can create an auto-extending data file and does so by default as of
MySQL 4. All tables are defined as Innodb tables as of version 2.8.
- A web server. Apache - the software serving most
web pages - is recommended but most web servers are supported by PHP
in various forms. The most popular choice on Windows will likely be MS
IIS.
- 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 Apache with mod_ssl and openssl secure sockets makes
sense where there is any data transmitted over the Internet and not
just over a LAN.
Getting PHP and MySQL installed are well covered elsewhere - see the
following links:
http://logidac.com/apache/apache-install-rpm.phtml
http://www.linux-sottises.net/en_apache_install.php
It is important to ensure that the php.ini setting for
session.auto_start = 0. Some rpm distributions come with this set to 1
which makes it impossible to use classes within php code. Classes are
used extensively in the system and the system starts sessions whenever
it needs them. It is safe to set this to 0.
The main issues with installation of PHP appear to be:
- Some Windows installations come with a setting for
session.save_path= /tmp this is an inappropriate directory for Windows
and should be changed to session.save_path=C:\temp or something more
appropriate.
- When the system is hosted on a multi-homed web server farm,
the session needs a directory to be specified as a permanent directory
otherwise alternative servers serving subsequent pages depending on the
load at the time will not be able to find the session cookie. There is
a config.php setting for $SessionSavePath which should be set
appropriately for the web server host.
- For a reason unknown some servers are unable to obtain the
correct directory automatically using the line: $rootpath =
dirname($_SERVER['PHP_SELF']); This will be evidenced by the system's
inability to find the page links for the various system options. If
this happens the $rootpath variable can be set to the root path of the
scripts directly.
The system could be used with many other database servers but
it is tested and developed on MySQL. A Postgres ConnectDB.inc is
provided and there is a $dbtype setting in config.php that allows the
system administrator to use a Postgres database if preferred.
Postgres database dumps are also available for building a postgres webERP installation.
Independent benchmarks show that MySQL is one of the fastest databases
for most common database tasks. It is especially fast at initiating a
connection. Due to the stateless nature of the web, a new connection
is required to be established on every page. This makes MySQL
particularly suitable for web based applications.
If integration with a company knowledge base is required
then an installation of Wacko Wiki on the same web-server is required.
This is entirely optional but is highly recommended as a way to share
free form information across the business.
http://wackowiki.com/WackoDownload/InEnglish?v=xlv
The ftp library for PHP is only required for sending order files to a Radio Beacon ftp server for remote warehouse services.
Assuming that a web server with PHP functionality is
operational and a MySQL database server is available either on the same machine
or on the network, a new installation consists of the following five
steps:
- Copying all the PHP scripts and include files to a directory under the web server document root directory.
- Creating the database and populating it with initial data
- Editing config.php for the database connection information and any other requirements
- Logging into the system for the first time
- Setting system parameters
- Setting up company specific information in the system
Copying the PHP Scripts
All files in the archive except the installation instructions
in INSTALL.txt, weberp-demo.sql and weberp-new.sql should be copied
to a directory under the web server DocumentRoot directory. This varies
by distribution but:
/srv/www/htdocs
is the default Apache DocumentRoot directory under SuSE.
Copy the archive to this directory and then extract the
archive. The webERP directory will be created here (/srv/www/htdocs/webERP)
and all scripts and other directories will be copied to that directory.
Creating the Database
The information provided assumes that you are using a MySQL
database server. An sql dump file suitable for Postgres is also
provided. However these instructions refer to the set up necessary
using MySQL.
You need to know the user name and password for the MySQL server. If you have not set these up the default is
user root
password ""
BUT ... you should NOT use this account. You should set up
another user for your MySQL installation and change the root password
to something other than "".
All instructions for using MySQL refer to the command
line client that comes with MySQL. To run this under Windows a DOS box
must be opened. From XP or 2000 click Start, Run, enter "cmd" and click
Run. The mysql.exe binary is located by default under
C:\mysql\bin\mysql.exe. This would be the command line statement
required to run the mysql client. The options discussed below should be
appended as required.
From the MySQL manual (edited):
The MySQL root user is created as a superuser who can do
anything. Connections must be made from the local host. NOTE: The
initial root password is empty, so anyone can connect as root without a
password and would have all privileges. Because your installation is
initially wide open, one of the first things you should do is specify a
password for the MySQL root user. You can do this as follows (note that
you specify the password using the PASSWORD() function):
You can, in MySQL Version 3.22 and above, use the SET PASSWORD statement:
shell> mysql -u root mysql
mysql> SET PASSWORD FOR root=PASSWORD('new_password');"
where 'new_password' is the new password you chose for the root user.
Also from the MySQL manual (edited):
Also, if you have changed the root user password, you must specify it for the mysql commands below.
You can add new users by issuing GRANT statements:
shell> mysql --user=root -p 'new_password' mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO weberp@localhost IDENTIFIED BY 'some_pass' WITH GRANT OPTION;"
Where 'some_pass' is a password of your choice for the new user
'weberp'. Note that this user 'weberp' can only connect from the local
machine so if the web server is on a different machine then the MySQL
server you need to give privileges to connect from other computers.
See the MySQL manual.
Innodb tables must be enabled in the MySQL server. These
tables allow database transactions which are a critical component of
ERP software. Innodb tables require some parameters to be set up in
my.cnf. There are some examples in the MySQL manual under table types
- Innodb tables.
If you have an account set up already in MySQL and Innodb
tables enabled, then all you need to do is to run one of the sql
scripts.
Two scripts are provided:
- weberp-demo.sql This has a minimal amount of demonstration data
with a bogus company set up so that transactions can be tried to see
how the system works.
- weberp-new.sql This script has only the basic data necessary
to start a new company. If you wish to set up your company
using the webERP software, then this is the script to use. This creates
a webERP database and populates it with only the very basic starting data.
The files weberp-demo.sql and web-erp-new.sql should be in
the directory with all the PHP scripts. Change to the directory
where the scripts are held or use the full path and enter:
shell > mysql --user=weberp --password='some_pass' < /path_to_the_sql_script/weberp-demo.sql
or
shell > mysql --user=weberp --password='some_pass' < /path_to_the_sql_script/weberp-new.sql
as required. Modify the user entered here as 'weberp' to the
user you created in MySQL for the purpose, and modify the password stated here
as 'some_pass' to the password appropriate for the user. Also modify the
path_to_the_sql_script to the appropriate path - perhaps something like
/srv/www/htdocs/webERP/.
Editing config.php
config.php contains a series of user defined variables that
determine how the system behaves. Critically it contains the host
(computer name), username and password of the database connection
required to connect to the database server. There is also an option to
chose which type of database server is to be used. Currently there are
only options for mysql and postgres. There is no going forward without
this data.
The default contents of the config.php file are as follows and
must be edited in an editor of choice (KATE, Wordpad, etc.). Then,
save config.php in the web directory where the scripts are located.
Note, the system is continually evolving and may well have changed
since this was written.
============================================
beginning of config.php
============================================
<?php
/* $Revision: 1.8 $
config.php
Web-ERP - http://web-erp.sourceforge.net
*/
// User configurable variables
//---------------------------------------------------
//DefaultLanguage to use for the login screen and the setup of new users - the users language selection will override
$DefaultLanguage ='en_GB';
// Whether to display the demo login and password or not on the login screen
$allow_demo_mode = false;
// webERP version
$Version = '3.04';
// The timezone of the business - this allows the possibility of having
// the web-server on a overseas machine but record local time
// this is not necessary if you have your own server locally
// putenv('TZ=Europe/London');
// putenv('Australia/Melbourne');
// putenv('Australia/Sydney');
// putenv('TZ=Pacific/Auckland');
// Connection information for the database
// $host is the computer ip address or name where the database is located
// assuming that the web server is also the sql server
$host = 'localhost';
//The type of db server being used - currently only postgres or mysql
$dbType = 'mysql';
//$dbType = 'mysqli';
// sql user & password
$dbuser = 'weberp_db_user';
$dbpassword = 'weberp_db_pwd';
//It would probably be inappropriate to allow selection of the company in a hosted environment so this option can be turned off with this parameter
$AllowCompanySelectionBox = true;
//If $AllowCompanySelectionBox = false above then the $DefaultCompany string is entered in the login screen as a default - otherwise the user is expected to know the name of the company to log into and a selection is required from the company selection box which is populated from the list of directories under the companies directory. These directories are created automatically each time a company is created from the Z_MakeNewCompany.php script - this script also creates the company databases.
$DefaultCompany = 'weberp';
//The maximum time that a login session can be idle before automatic logout
//time is in seconds 3600 seconds in an hour
$SessionLifeTime = 3600;
//The maximum time that a script can execute for before the web-server should terminate it
$MaximumExecutionTime =120;
//The path to which session files should be stored in the server - useful for some multi-host web servers
//this can be left commented out
//$SessionSavePath = '/tmp';
// which encryption function should be used
//$CryptFunction = "md5"; // MD5 Hash
$CryptFunction = "sha1"; // SHA1 Hash
//$CryptFunction = ""; // Plain Text
// END OF USER CONFIGURABLE VARIABLES
/*The $rootpath is used in most scripts to tell the script the installation details of the files.
NOTE: In some windows installation this command doesn't work and the administrator must set this to the path of the installation manually:
eg. if the files are under the web server root directory then rootpath =''; if they are under weberp then weberp is the rootpath - notice no additional slashes are necessary.
*/
$rootpath = dirname($_SERVER['PHP_SELF']);
if ($rootpath == "/" OR $rootpath == "\\") {
$rootpath = "";
}
//$rootpath = '/web-erp';
/* Report all errors except E_NOTICE
This is the default value set in php.ini for most installations but just to be sure it is forced here
turning on NOTICES destroys things */
error_reporting (E_ALL & ~E_NOTICE);
/*Make sure there is nothing - not even spaces after this last ?> */
?>
============================================
end of config.php
============================================
Logging In For the First Time
Open a browser connected to the network upon which the
web server is also connected. Enter the URL for the web server
directory where webERP is installed. If the browser is on the same
machine as the web server then perhaps:
http://localhost/webERP/index.php
enter user name 'demo'
enter password 'weberp'
The quotation marks are not required. To set up additional users go to
Main Menu > Setup > User Accounts. Users can change there own
passwords at any time by clicking on their user name shown at the top
left of the screen. For example: "webERP Demo: administrator".
Be careful not to delete the demonstration user until a new System
Administrator user has been set up. If there are no users defined the
next time you try to login you won't be able to! In this situation the
only way then to create a user to login with is to manually edit the
SQL table WWW_Users to insert a user. If phpMyAdmin is installed on the
web server as well then this can be achieved by adding a new record to
WWW_Users.
NB The importance of setting a password for the root user of
MySQL, otherwise anyone could modify WWW_Users and gain access to
private company information.
Adding New Companies
At this point having followed all the instructions above you should be able to log into the single company database you set up above. However, you may wish to add additional companies. If you system is set up such that the user account that is running your web-server is able to write to the webERP directory then it is possible to enter the URL:
http://yourdomain/webERP/Z_MakeNewCompany.php
This script allows you to set up any number of additional companies - a fresh database is set up as is the directory structure required under webERP/companies. Each time you get to the login prompt the list of companies shows and you must select the company you require.
This script may not work because it requires that the web-server has write permission to the scripts directory, in which case you may need to fall back to the manual method described below.
In the default install above you created a database called weberp and there is a directory under webERP/companies also called weberp. To make another company you need to copy the
Configuration Parameters
In versions prior to version 3.0, configuration
parameters were stored under the config.php file which required manual
editing of the system parameters. Since version 3.0 a new screen for
System Parameters was developed that allows all the system wide
configuration variables to be set. These are now stored in the
database allowing for upgrades without then having to re-edit the
config.php file. The system parameters screen is at Main Menu > Setup
> Configuration Settings. Each of these settings should
be reviewed in detail. Notes describing the function of each variable
are shown along side it.
There is additional information on installation in webERP/doc/INSTALL.txt
Themes and GUI Modification
Often what visually appeals to one does not appeal to another.
Whilst accounting software is primarily about function - appearances do
matter! Some flexibility is available with the colour scheme and font
sizes of the GUI using cascading style sheets (css).
The user interface can be modified by adopting one of the
defined themes or making up a new theme. There are currently four
themes defined in the distribution: 'silverwold', 'default', 'professional' and
'fresh'.
Each user can select their own preference from the user settings screen.
This is revealed by clicking on their user name shown at the top left of
the screen. For example: "webERP Demo: administrator".
To create a new theme copy the directory of one of the
defined themes to a new name. The themes are held under the css
directory of the distribution. There is a directory under the css
directory for each theme. After copying the files to a new directory,
say 'New_theme', they should be edited to reflect the look desired. New
theme directories are revealed automatically on the user setting
screen so users can select the customised theme.
Setting Up Users
Having logged in as user 'demo'. A new user should
be defined whom has administrative privileges and the user 'demo'
should be deleted. From the menu click on the 'Setup' tab and then
click 'User Accounts'. The users defined are displayed. User
names must be 5 characters or more. Passwords entered must be 5
characters or more too. The password cannot also be the user name or
contain the user name. It is not necessary to enter the full name
telephone and other details. The access level selected is important as
this determines the pages that the user can access. In any business
where the employees are not also the owners it is advisable to split
the functions between staff so that no user can complete an entire
transaction. There are occasions in smaller businesses where this is
impractical. However, the system has great flexibility to allow the
user access to be finely defined. See the security schema section.
As well as allowing the access to be restricted there is some
flexibility about the links that are made available to a user. In the
'User Accounts' screen the system administrator can define which tabs of
the main menu are activated and available to the user.
There is also the facility to set up customers with their own
logon. This restricts them to inquiries on their account including
invoice re-prints and to entering new sales orders. Customer logins do
not allow any modification to the pricing. To do this the access level
must be set to customer logon and the settings for customer logon in
config.php must not be modified - i.e. $PageSecurity = 1 allowed only. In
addition, the customer code and branch code applicable to the person
logging on must be entered.