- Installing LedgerSMB 1.2
- ========================
- This document contains information on how to install LedgerSMB. We
- recommend that the reader start by reading the section on manual
- installation and then start by trying the automated means mentioned
- later.
- Also this document assumes that the reader is already familiar with the
- release notes. If you have not already done so, please read the
- release_notes file in the doc/ directory.
- DISTRO AND OS-SPECIFIC NOTES
- ============================
- Debian users should read README.debian
- OpenBSD users, please consult the README.OpenBSD
- For Unix systems, '$' signifies the bash prompt, '=>' the psql prompt.
- MANUAL INSTALL
- ==============
- 1) Untar in desired location (for example, /usr/local/ledgersmb,
- refered to as LEDGERPATH for the remainder of this INSTALL file).
- LedgerSMB files should be owned by the apache user, apache:apache on
- many systems.
- 2) Install the procedural language on your database server
- Note: installing here on the template1 database will permit it
- to propogate to every future database created, both those used
- by LedgerSMB (which require it) and to other databases you
- may create for other applications (which may not need it).
- If that is not what you want, consider first creating a
- template2-plpgsql database, adapting this command to install
- the language on that application specific template, leaving
- your template1 clean. Then you can use your template2-plpgsql
- database as a starting point for any datasets you create
- for LedgerSMB.
- We start by ensuring that the plpgsql language has not already
- been installed. If that first query does not result in a
- record where the 'lanname' field is 'plpgsql', then you need
- to install the procedural language.
- # su - postgres
- $ psql
- => \c template1
- => SELECT * FROM pg_language;
- => \q
- $ createlang plpgsql template1
- $ psql
- => ALTER ROLE postgres WITH PASSWORD 'YOURPASSWORD';
- Some distributions will create a postgres database user without
- ever prompting the user for an administrative password for
- the user. If you start as root, su - postgres and invoke
- psql from the postgres shell prompt, you would never need the
- postgres database user's password. But you will need to know
- the password later when you start creating accounting datasets.
- So might as well create one now.
- 3) Create a postgresql admin database role, by convention named
- 'ledgersmb':
- $ createuser --no-superuser --createdb --no-createrole \
- -U postgres --pwprompt --encrypted ledgersmb
- (\ is a bash line continuation character, this is a single command)
- The prompted password (referred to as MYROLEPASSWORD) will later be
- used in the DBConnect: string in the configuration file
- 'ledgersmb.conf'
- If you prefer to work in postgresql's psql console, the equivalent SQL
- statement to create the ledgersmb role is:
- => CREATE ROLE ledgersmb LOGIN PASSWORD 'MYROLEPASSWORD' NOINHERIT
- CREATEDB;
- Further commands and database interaction should be conducted using
- the new LedgerSMB admin role 'ledgersmb'.
- 4) Create a central user database, owned by the LedgerSMB admin role,
- 'ledgersmb':
- $ createdb -U ledgersmb -O ledgersmb ledgersmb
- The equivalent SQL statement is:
- => CREATE DATABASE ledgersmb WITH ENCODING='SQL_ASCII'
- OWNER=ledgersmb;
- 5) On the database that will store your user and session information,
- run the included Pg-central.sql SQL commands to configure the user
- and session tables and functions:
- $ psql -U ledgersmb -d ledgersmb -f LEDGERPATH/sql/Pg-central.sql
- (LEDGERPATH is in the location you expanded the release
- tarball file. If you untarred in '/usr/local' then LEDGERPATH will
- be '/usr/local/ledgersmb').
- NOTE: LedgerSMB's preferred configuration is to store the user and
- session management tables in a separate database from the company
- databases (aka 'datasets', created in admin.pl). If you are already
- working with or prefer to have your user and session tables in one
- company dataset, see further information in the manual. You must have
- PLPGSQL installed in the dataset as well. However that is beyond the
- scope of these instructions.
- 6) The SQL commands in step 5) created an LedgerSMB-managed admin user,
- e.g. a row in the users and users_conf table. You must now update the
- 'admin' user's password in users_conf from the default password.
- $ psql -U ledgersmb -d ledgersmb
- ledgersmb=> UPDATE users_conf SET password = md5('MYPASSWORD')
- WHERE id = 1;
- (Change MYPASSWORD to your preferred administrative password, which
- is separate, but can be the same spelling as MYROLEPASSWORD).
- ledgersmb=> \q
- 7) Edit the LEDGERPATH/ledgersmb.conf file:
- a) Copy 'ledgersmb.conf.default' to 'ledgersmb.conf'
- b) Make sure to set the section under [globaldb] to point to the
- central user and session database, using password MYROLEPASSWORD:
- [globaldb]
- DBname = ledgersmb
- DBhost = localhost
- DBport = 5432
- DBUserName = ledgersmb
- DBPassword = MYROLEPASSWORD
- 8) Add configuration to Apache:
- $ sh configure_apache.sh
- You will be prompted for the user which runs your apache server.
- This user is usually known as: apache, www-data, nobody or
- something similiar.
- You will also be prompted for the directory where you want to install
- the modified apache configuration file for LedgerSMB. On an apache2
- installation (at least on a Debian server) that would be:
- /etc/apache2/sites-available
- $ cd /etc/apache2/sites-available
- $ a2en ledgersmb-http.conf
- That will create a symlink in your ../sites-enabled/ directory
- and prompt you to restart your server.
- 9) Check Dependencies:
- The Build.PL script can be used to test for unmet dependencies and
- run other tests. It doesn't install anything yet, but it will tell
- you what you are missing. To check for dependencies, run:
- $ perl Build.PL
- Missing dependencies can generally be installed via a Linux
- distribution's package manager, or by CPAN. (Build.PL itself uses
- Module::Build, which is available in packages like perl-Module-Build
- or libmodule-build-perl.)
- Alternately you can use the Makefile.PL as follows:
- $ perl Makefile.PL
- That should serve essentially the same function as running
- Build.PL would.
- Once this is done and dependencies are satisfied, you can check to
- see whether the installation nominally works by running:
- $ ./Build test
- or, if you are using the makefile, try this instead:
- $ make
- $ make test
- The test suites currently check to make sure all the perl modules
- load and that a number of numeric tests are passed.
- Dependencies which are recommended are needed only for specific
- functionality and may not be required in all circumstances. These
- include:
- * Net::TCLink for credit card processing in a POS environment
- * Parse::RecDescent for the CLI script host
- Finally, if you are using the makefile, instead of the Build
- method, to install the application, as the root user, use this:
- # make install
- 10) Restart Apache (instructions vary with your Linux distro or operating
- system).
- On a Debian system try:
- # /etc/init.d/apache2 reload
- Create Datasets and Users
- =========================
- 1) Create Datasets:
- Browse to:
- http://hostname/ledgersmb/admin.pl
- login with 'MYPASSWORD'
- Create dataset(s) with:
- User: ledgersmb
- Password: MYPASSWORD
- Superuser: postgres
- Password: (postgres password)
- Create one dataset (a postgresql datatabase) for each separate
- company which will use LedgerSMB for accounting, e.g.:
- ledgeracme
- ledgerbigco
- (...)
- 2) Create User(s) pointing to specific datasets:
- Browse to:
- http://hostname/ledgersmb/admin.pl
- login with 'MYPASSWORD'
- Create user(s) pointing to a specific dataset (ledgeracme, etc.)
- with database login information:
- User: ledgersmb
- Password: MYPASSWORD
- Congratulations, you have installed and configured LedgerSMB 1.2
- FTP INSTALLATION
- ================
- If you control the server and have shell access, the instructions above
- are preferred over those given here. instead of those given here. This
- is simply a set of notes for those who must install on a shared server.
- If you do not have access to the server's configuration files install
- LedgerSMB in userspace by ftp'ing all the files to your server.
- 1) Untar ledgersmb in your private_html directory.
- 2) turn on script execution for the folder ledgersmb. You can control
- this with an .htaccess file:
- Options +ExecCGI
- DirectoryIndex login.pl
- 3) Protect the users directory with an .htpasswd file:
- order allow,deny
- deny from all
- 4) Protect the templates directory with an .htpasswd file:
- order allow,deny
- deny from all
- 5) Set up your PostgreSQL database and the tables. The procedure is
- specified above.
- You will most likely only have access to PostgreSQL with some other
- tools like pgadmin.
- TROUBLESHOOTING
- ===============
- Error: Access Denied in admin.pl
- ---------------------------------
- Likely causes:
- 1) The password entered may not match the password set in Manual Install
- step 5). You can repreat that step as often as you need to get login
- to admin.pl working, but in case your 'admin' user is not id=1, try
- using the expanded version of the SQL:
- ledgersmb==> UPDATE users_conf SET password=md5('MYPASSWORD')
- WHERE id = (SELECT id FROM user
- WHERE username = 'admin');
- (Substitute 'MYPASSWORD' for your chosen password).
- 2) The central database may have been created with a different postgres
- user (role) than you are using for the connection. In this case, you
- may not have permission to access the required database entities.
- To correct this, assuming that the admin database role is ledgersmb,
- issue the following commands from psql:
- ledgersmb==> GRANT ALL ON users TO ledgersmb;
- ledgersmb==> GRANT ALL ON users_id_seq TO ledgersmb;
- ledgersmb==> GRANT ALL ON users_conf TO ledgersmb;
- ledgersmb==> GRANT ALL ON session TO ledgersmb;
- ledgersmb==> GRANT ALL ON session_session_id_seq TO ledgersmb;
- Error: "No GlobalDBH Configured or Could not Connect"
- -----------------------------------------------------
- LedgerSMB 1.2 uses a dedicated connection to the central database for
- user authentication. When the attempt to connect to that database fails,
- the error message above is displayed. In this case, check the following
- parameters under the [globaldbh] of the ledgersmb.conf file.
- 1) DBUserName should match the database user you imported Pg-central
- as (if you followed the instructions above, that would be ledgersmb).
- 2) DBPassword needs to match the database password to used to connect
- to.
- You can test the above causes by running (from the command line):
- $ psql -U [DBUserName]
- password: [DBPassword]
- When you enter the password, it will not show up on the screen.
- The other line that you should pay attention to is the DBConnect
- line. Parameters in the form of name=value need to match those for
- your host. The following parameters need to be set correctly in that
- line:
- dbname=ledgersmb (the database you imported Pg-Central.sql into).
- host=localhost (don't change unless you know what you are doing!)
- port=5432 (don't change unless you know what you are doing!)
- The full line should then be something like:
- DBConnect: dbi:Pg:dbname=ledgersmb;host=localhost;port=5432
- And that section of ledgersmb.conf looks like:
- [globaldb]
- DBname = ledgersmb
- DBhost = localhost
- DBport = 5432
- DBUserName = ledgersmb
- DBPassword = MYROLEPASSWORD
- OTHER ISSUES:
- ===================================
- Before submitting a bug, please consult the COMPATABILITY list. This documents
- which versions of software have known interoperability problems with LedgerSMB.
|