Difference between revisions of "Freeside:2.1:Documentation:Installation"
From Freeside
(→Database Access) |
|||
(8 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | == | + | == Introduction == |
− | |||
− | |||
− | |||
− | + | Install Freeside on a firewalled, private server, not a public (web, RADIUS, etc.) server. | |
− | + | ||
− | + | == Prerequisites == | |
− | + | ||
− | + | === Packages === | |
− | + | ||
− | + | * [http://www.perl.org/ Perl], minimum version 5.8.4 | |
− | + | * [http://httpd.apache.org/ Apache], SSL highly recommended) | |
+ | * [http://perl.apache.org/ mod_perl] | ||
+ | ** If compiling your own mod_perl, make sure you set the EVERYTHING=1 compile-time option | ||
+ | * A '''transactional''' database engine [http://search.cpan.org/search?mode=module&query=DBD%3A%3A supported] by Perl's [http://dbi.perl.org/ DBI]. | ||
+ | ** [http://www.postgresql.org PostgreSQL] is recommended (v7.2 or later, v8.1 or later recommended). | ||
+ | ** [http://www.mysql.com MySQL] (v4.1 or later, v5 recommended) is supported. DBIx::DBSchema 0.35 or later is required. | ||
+ | |||
+ | ''Note: the above only applies to the database used by the Freeside software itself. Freeside can integrate with RADIUS and other servers running a different database than the backend.'' | ||
+ | |||
+ | * TeX (teTeX / TeX Live) and Ghostscript (included with most distributions) (Optional, enables typeset invoices) | ||
+ | |||
+ | === Perl modules === | ||
− | + | ==== Popular modules ==== | |
− | |||
− | |||
− | + | These modules are included in most distributions. | |
− | + | <!-- reference: CentOS/RHEL 5, i.e. http://linux.mirrors.es.net/centos/5/os/x86_64/CentOS/ | |
− | + | if its there, its everywhere... right? --> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | * [http://search.cpan.org/dist/libwww-perl libwww-perl] (CPAN: "install Bundle::LWP") | |
− | + | ** [http://search.cpan.org/dist/URI URI] | |
− | + | ** [http://search.cpan.org/dist/HTML-Tagset HTML::Tagset] | |
− | + | ** [http://search.cpan.org/dist/HTML-Parser HTML::Parser] | |
+ | * [http://search.cpan.org/dist/DBI DBI] | ||
+ | ** [http://search.cpan.org/search?mode=module&query=DBD%3A%3A DBD] for your database engine ([http://search.cpan.org/dist/DBD-Pg DBD::Pg] for PostgreSQL or [http://search.cpan.org/dist/DBD-mysql DBD::mysql] for MySQL) | ||
+ | * [http://search.cpan.org/dist/TimeDate TimeDate] (CPAN: "install Date::Format") | ||
+ | * [http://search.cpan.org/dist/DateManip Date::Manip] | ||
− | + | ==== Common modules ==== | |
− | |||
− | |||
− | + | These modules are included in many distributions. | |
− | + | <!-- more nebulous criteria, but should be included in at least Debian, FreeBSD ports, have sigificant Perl mindshare --> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | * [http://search.cpan.org/dist/Chart Chart] (CPAN: "install Chart::Base") | |
− | + | * [http://search.cpan.org/dist/Cache-Cache Cache::Cache] | |
− | / | + | * [http://search.cpan.org/dist/DateTime DateTime] |
− | + | * [http://search.cpan.org/dist/DateTime-Format-Strptime DateTime::Format::Strptime] | |
+ | * [http://search.cpan.org/dist/DateTime-Format-Natural DateTime-Format-Natural] | ||
+ | * [http://search.cpan.org/dist/Email-Sender Email::Sender] | ||
+ | * [http://search.cpan.org/dist/Email-Sender-Transport-SMTP-TLS Email::Sender::Transport::SMTP::TLS] | ||
+ | * [http://search.cpan.org/dist/HTML-Mason HTML::Mason] | ||
+ | * [http://search.cpan.org/dist/Locale-Codes Locale-Codes] (CPAN: "install Locale::Country") | ||
+ | * [http://search.cpan.org/dist/Locale-SubCountry Locale::SubCountry] | ||
+ | * [http://search.cpan.org/dist/MailTools MailTools] (CPAN: "install Mail::Internet") | ||
+ | * [http://search.cpan.org/dist/MIME-tools MIME::Tools] (Note: do not use version 5.423) | ||
+ | * [http://search.cpan.org/dist/NetAddr-IP NetAddr::IP] | ||
+ | * [http://search.cpan.org/dist/Net-Ping Net::Ping] | ||
+ | * [http://search.cpan.org/dist/Net-Ping-External Net::Ping::External] | ||
+ | * [http://search.cpan.org/dist/Number-Format Number::Format] | ||
+ | * [http://search.cpan.org/dist/Spreadsheet-WriteExcel Spreadsheet::WriteExcel] | ||
+ | * [http://search.cpan.org/dist/String-Approx String::Approx] | ||
+ | * [http://search.cpan.org/dist/Text-CSV_XS Text::CSV_XS] | ||
+ | * [http://search.cpan.org/dist/Term-ReadKey Term::ReadKey] | ||
+ | * [http://search.cpan.org/dist/Text-Template Text::Template] | ||
− | == | + | ==== Additional modules ==== |
− | < | + | <!-- our modules (DBIx::DBSchema, Net::SSH, H:W:SelectLayers, etc.) and other modules with questionable mindshare and distro pickup. --> |
− | |||
− | |||
− | |||
− | + | * [http://search.cpan.org/dist/Authen-Passphrase Authen::Passphrase] | |
− | + | * [http://search.cpan.org/dist/Business-CreditCard Business::CreditCard] | |
− | + | * [http://search.cpan.org/dist/Business-US-USPS-WebTools Business::US::USPS::WebTools] | |
− | + | * [http://search.cpan.org/dist/CAM-PDF CAM::PDF] | |
− | + | * [http://search.cpan.org/dist/Color-Scheme Color::Scheme] | |
+ | * [http://search.cpan.org/dist/Crypt::PasswdMD5 Crypt::PasswdMD5] | ||
+ | * [http://search.cpan.org/dist/DBIx-DBSchema DBIx::DBSchema] | ||
+ | * [http://search.cpan.org/dist/File-CounterFile File::CounterFile] | ||
+ | * [http://search.cpan.org/dist/File-Slurp File::Slurp] | ||
+ | * [http://search.cpan.org/dist/Frontier-RPC Frontier::RPC2] | ||
+ | * [http://search.cpan.org/dist/HTML-Defang HTML::Defang] | ||
+ | * [http://search.cpan.org/dist/HTML-Widgets-SelectLayers HTML::Widgets::SelectLayers] | ||
+ | * [http://search.cpan.org/dist/IPC-Run IPC::Run] | ||
+ | * [http://search.cpan.org/dist/IPC-Run3 IPC::Run3] | ||
+ | * [http://search.cpan.org/dist/JSON JSON] | ||
+ | * [http://search.cpan.org/dist/Lingua-EN-NameParse Lingua::EN::NameParse] | ||
+ | * [http://search.cpan.org/dist/Lingua-EN-Inflect Lingua::EN::Inflect] | ||
+ | * [http://search.cpan.org/dist/Net-Domain-TLD Net::Domain::TLD] | ||
+ | * [http://search.cpan.org/dist/Net-SSH Net::SSH] | ||
+ | * [http://search.cpan.org/dist/Net-Whois-Raw Net::Whois::Raw] | ||
+ | * [http://search.cpan.org/dist/String-ShellQuote String::ShellQuote] | ||
+ | * [http://search.cpan.org/dist/Tie-IxHash Tie::IxHash] | ||
+ | * [http://search.cpan.org/dist/Time-Duration Time::Duration] | ||
− | + | ==== Optional modules ==== | |
− | |||
− | |||
− | |||
+ | * [http://search.cpan.org/dist/Fax-Hylafax-Client Fax::Hylafax::Client] ''(Required if faxing invoices)'' | ||
+ | * [http://search.cpan.org/dist/Apache-DBI Apache::DBI] ''(recommended for better web interface performance)'' | ||
− | + | ==== Note on missing modules ==== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Prerequisites missing from 2.1 documentation? Please add them. | |
− | Download | + | == Download Freeside == |
− | + | * Get the source from one of the normal places | |
− | + | **[http://www.freeside.biz/freeside/developers.html Open source link from the home page] | |
− | + | **[http://www.freeside.biz/freeside/cvs.html Anonymous CVS] | |
− | + | * Uncompress the tarball | |
− | |||
− | |||
− | + | == Installation == | |
− | |||
− | |||
− | |||
− | + | === System User === | |
+ | * Add the user and group `freeside' to your system. | ||
+ | === Database User === | ||
+ | * Allow the freeside user full access to the freeside database. | ||
+ | with Postgresql: | ||
<pre> | <pre> | ||
− | + | [ as postgres/pgsql user ] | |
− | $createuser -P freeside | + | $ createuser -P freeside |
Enter password for new role: | Enter password for new role: | ||
Enter it again: | Enter it again: | ||
Line 112: | Line 121: | ||
Shall the new role be allowed to create databases? (y/n) y | Shall the new role be allowed to create databases? (y/n) y | ||
Shall the new role be allowed to create more new roles? (y/n) n | Shall the new role be allowed to create more new roles? (y/n) n | ||
− | |||
</pre> | </pre> | ||
+ | or with MySQL: | ||
+ | <pre> | ||
+ | $ mysqladmin -u root password 'set_a_root_database_password' | ||
+ | $ mysql -u root -p | ||
+ | mysql> GRANT SELECT,INSERT,UPDATE,DELETE,INDEX,ALTER,CREATE,DROP on freeside.* TO freeside@localhost IDENTIFIED BY 'set_a_freeside_database_password'; | ||
+ | </pre> | ||
+ | === Database Access === | ||
+ | Edit the top-level Makefile: | ||
+ | * Configure the DATASOURCE to your DBI data source | ||
+ | ** Set the DB_TYPE (Pg or mysql) | ||
+ | ** See the DBI manpage and the manpage for your DBD for the exact syntax of your DBI data source. | ||
+ | * Set DB_PASSWORD to the freeside database user's password. | ||
+ | * If you are not using the integrated RT ticketing system, set RT_ENABLED to 0 | ||
− | + | === Database === | |
− | + | * Add the freeside database to your database engine: | |
+ | with Postgres: | ||
<pre> | <pre> | ||
− | + | $ su freeside | |
− | + | $ createdb -E sql_ascii freeside | |
</pre> | </pre> | ||
− | + | or with Postgres 8.3 +: | |
− | |||
<pre> | <pre> | ||
− | + | $ su freeside | |
− | $createdb -E LATIN1 freeside | + | $ createdb -E LATIN1 freeside |
</pre> | </pre> | ||
− | + | or with MySQL: | |
− | |||
− | |||
<pre> | <pre> | ||
− | + | $ mysqladmin -u freeside -p create freeside | |
</pre> | </pre> | ||
− | * | + | === Perl Modules === |
+ | * Build and install the Perl modules: | ||
<pre> | <pre> | ||
− | + | $ make perl-modules | |
− | + | $ su | |
+ | # make install-perl-modules | ||
</pre> | </pre> | ||
− | + | === Basic configuration Files === | |
− | + | * Create the necessary configuration files: | |
− | == | ||
− | |||
− | |||
<pre> | <pre> | ||
− | + | $ su | |
− | + | # make create-config | |
− | su | ||
− | make | ||
</pre> | </pre> | ||
− | + | === Invoice Typesetting === | |
+ | * If you are using typeset invoices, install fslongtable.sty: | ||
<pre> | <pre> | ||
− | make | + | $ su |
+ | # make install-texmf | ||
</pre> | </pre> | ||
− | + | === Apache & Web GUI === | |
+ | * Configuration | ||
+ | ** Enable mod_perl | ||
+ | ** Run as <code>User freeside</code> | ||
+ | *** If you have other things being served by Apache on this machine (hopefully internal things), it is recommended to run a '''separate''' iteration of Apache as the freeside user. | ||
+ | |||
+ | * Edit the Makefile and set <code>FREESIDE_DOCUMENT_ROOT</code>. | ||
+ | |||
+ | * To install the web interface, run: | ||
<pre> | <pre> | ||
− | make install- | + | $ su |
+ | # make install-docs | ||
</pre> | </pre> | ||
− | + | * Edit the Makefile and set <code>APACHE_VERSION</code> to '''1''' (mod_perl v1.XX), '''1.99''' (mod_perl v2 prereleases up to and including 1.999_21, shipped with Debian 3.1, CentOS/RHEL 4, others), or '''2''' (mod_perl v2 proper and prereleases 1.999_22 and later). | |
+ | |||
+ | * Edit the Makefile and set <code>APACHE_CONF</code> to the location of an Apache include directory (not a file). (If your Apache doesn't have an existing include directory, create one and add a line such as "<code>Include /etc/apache/conf.d</code>" to httpd.conf.) | ||
+ | |||
+ | * To install the apache configs, run: | ||
<pre> | <pre> | ||
− | make install- | + | $ su |
+ | # make install-apache | ||
</pre> | </pre> | ||
− | + | ''Note: Do not attempt to restart Apache (httpd) yet.'' | |
+ | |||
+ | === Initialize Data === | ||
+ | * As the freeside UNIX user, run <code>freeside-setup -d your.domain.name</code> to create the database tables and initial data. | ||
<pre> | <pre> | ||
− | + | $ su freeside | |
+ | $ freeside-setup -d example.com | ||
</pre> | </pre> | ||
− | + | === Additional System Users === | |
+ | * Create the Freeside system users: | ||
<pre> | <pre> | ||
− | su freeside | + | $ su freeside |
+ | $ freeside-adduser -g 1 fs_queue | ||
+ | $ freeside-adduser -g 1 fs_daily | ||
+ | $ freeside-adduser -g 1 fs_selfservice | ||
</pre> | </pre> | ||
− | + | === Create Freeside Users === | |
+ | * Create one or more Freeside users (your internal sales/tech folks, not customer accounts): | ||
<pre> | <pre> | ||
− | freeside- | + | $ su freeside |
+ | $ freeside-adduser -g 1 username | ||
+ | $ htpasswd /usr/local/etc/freeside/htpasswd username | ||
+ | Password: | ||
</pre> | </pre> | ||
+ | Additional users can be added using the same command or from the web interface. | ||
+ | |||
+ | === Queue Daemon === | ||
+ | |||
+ | * freeside-queued was installed with the Perl modules. Start it now and ensure that is run upon system startup (Do this manually, or edit the top-level Makefile, replacing <code>INIT_FILE</code> with the appropriate location on your system and <code>QUEUED_USER</code> with the username of a Freeside user you created above, and run <code>make install-init</code>) | ||
+ | |||
+ | === RT === | ||
+ | * Either [[Freeside:1.9:Documentation:RT_Installation|install the integrated RT ticketing system]], or delete the <code>ticket_system</code> entry from your conf table. | ||
− | |||
<pre> | <pre> | ||
− | freeside | + | su freeside |
− | freeside | + | psql freeside |
− | + | delete from conf where name = 'ticket_system'; | |
</pre> | </pre> | ||
+ | === Finalize === | ||
+ | * Restart Apache (httpd) and log into the web interface using the username and password you entered above. | ||
− | + | * Now proceed to the initial [[Freeside:1.9:Documentation:Administration|administration]] of your installation. | |
− | * | ||
− |
Latest revision as of 19:38, 16 January 2012
Introduction
Install Freeside on a firewalled, private server, not a public (web, RADIUS, etc.) server.
Prerequisites
Packages
- Perl, minimum version 5.8.4
- Apache, SSL highly recommended)
- mod_perl
- If compiling your own mod_perl, make sure you set the EVERYTHING=1 compile-time option
- A transactional database engine supported by Perl's DBI.
- PostgreSQL is recommended (v7.2 or later, v8.1 or later recommended).
- MySQL (v4.1 or later, v5 recommended) is supported. DBIx::DBSchema 0.35 or later is required.
Note: the above only applies to the database used by the Freeside software itself. Freeside can integrate with RADIUS and other servers running a different database than the backend.
- TeX (teTeX / TeX Live) and Ghostscript (included with most distributions) (Optional, enables typeset invoices)
Perl modules
Popular modules
These modules are included in most distributions.
- libwww-perl (CPAN: "install Bundle::LWP")
- DBI
- DBD for your database engine (DBD::Pg for PostgreSQL or DBD::mysql for MySQL)
- TimeDate (CPAN: "install Date::Format")
- Date::Manip
Common modules
These modules are included in many distributions.
- Chart (CPAN: "install Chart::Base")
- Cache::Cache
- DateTime
- DateTime::Format::Strptime
- DateTime-Format-Natural
- Email::Sender
- Email::Sender::Transport::SMTP::TLS
- HTML::Mason
- Locale-Codes (CPAN: "install Locale::Country")
- Locale::SubCountry
- MailTools (CPAN: "install Mail::Internet")
- MIME::Tools (Note: do not use version 5.423)
- NetAddr::IP
- Net::Ping
- Net::Ping::External
- Number::Format
- Spreadsheet::WriteExcel
- String::Approx
- Text::CSV_XS
- Term::ReadKey
- Text::Template
Additional modules
- Authen::Passphrase
- Business::CreditCard
- Business::US::USPS::WebTools
- CAM::PDF
- Color::Scheme
- Crypt::PasswdMD5
- DBIx::DBSchema
- File::CounterFile
- File::Slurp
- Frontier::RPC2
- HTML::Defang
- HTML::Widgets::SelectLayers
- IPC::Run
- IPC::Run3
- JSON
- Lingua::EN::NameParse
- Lingua::EN::Inflect
- Net::Domain::TLD
- Net::SSH
- Net::Whois::Raw
- String::ShellQuote
- Tie::IxHash
- Time::Duration
Optional modules
- Fax::Hylafax::Client (Required if faxing invoices)
- Apache::DBI (recommended for better web interface performance)
Note on missing modules
Prerequisites missing from 2.1 documentation? Please add them.
Download Freeside
- Get the source from one of the normal places
- Uncompress the tarball
Installation
System User
- Add the user and group `freeside' to your system.
Database User
- Allow the freeside user full access to the freeside database.
with Postgresql:
[ as postgres/pgsql user ] $ createuser -P freeside Enter password for new role: Enter it again: Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) y Shall the new role be allowed to create more new roles? (y/n) n
or with MySQL:
$ mysqladmin -u root password 'set_a_root_database_password' $ mysql -u root -p mysql> GRANT SELECT,INSERT,UPDATE,DELETE,INDEX,ALTER,CREATE,DROP on freeside.* TO freeside@localhost IDENTIFIED BY 'set_a_freeside_database_password';
Database Access
Edit the top-level Makefile:
- Configure the DATASOURCE to your DBI data source
- Set the DB_TYPE (Pg or mysql)
- See the DBI manpage and the manpage for your DBD for the exact syntax of your DBI data source.
- Set DB_PASSWORD to the freeside database user's password.
- If you are not using the integrated RT ticketing system, set RT_ENABLED to 0
Database
- Add the freeside database to your database engine:
with Postgres:
$ su freeside $ createdb -E sql_ascii freeside
or with Postgres 8.3 +:
$ su freeside $ createdb -E LATIN1 freeside
or with MySQL:
$ mysqladmin -u freeside -p create freeside
Perl Modules
- Build and install the Perl modules:
$ make perl-modules $ su # make install-perl-modules
Basic configuration Files
- Create the necessary configuration files:
$ su # make create-config
Invoice Typesetting
- If you are using typeset invoices, install fslongtable.sty:
$ su # make install-texmf
Apache & Web GUI
- Configuration
- Enable mod_perl
- Run as
User freeside
- If you have other things being served by Apache on this machine (hopefully internal things), it is recommended to run a separate iteration of Apache as the freeside user.
- Edit the Makefile and set
FREESIDE_DOCUMENT_ROOT
.
- To install the web interface, run:
$ su # make install-docs
- Edit the Makefile and set
APACHE_VERSION
to 1 (mod_perl v1.XX), 1.99 (mod_perl v2 prereleases up to and including 1.999_21, shipped with Debian 3.1, CentOS/RHEL 4, others), or 2 (mod_perl v2 proper and prereleases 1.999_22 and later).
- Edit the Makefile and set
APACHE_CONF
to the location of an Apache include directory (not a file). (If your Apache doesn't have an existing include directory, create one and add a line such as "Include /etc/apache/conf.d
" to httpd.conf.)
- To install the apache configs, run:
$ su # make install-apache
Note: Do not attempt to restart Apache (httpd) yet.
Initialize Data
- As the freeside UNIX user, run
freeside-setup -d your.domain.name
to create the database tables and initial data.
$ su freeside $ freeside-setup -d example.com
Additional System Users
- Create the Freeside system users:
$ su freeside $ freeside-adduser -g 1 fs_queue $ freeside-adduser -g 1 fs_daily $ freeside-adduser -g 1 fs_selfservice
Create Freeside Users
- Create one or more Freeside users (your internal sales/tech folks, not customer accounts):
$ su freeside $ freeside-adduser -g 1 username $ htpasswd /usr/local/etc/freeside/htpasswd username Password:
Additional users can be added using the same command or from the web interface.
Queue Daemon
- freeside-queued was installed with the Perl modules. Start it now and ensure that is run upon system startup (Do this manually, or edit the top-level Makefile, replacing
INIT_FILE
with the appropriate location on your system andQUEUED_USER
with the username of a Freeside user you created above, and runmake install-init
)
RT
- Either install the integrated RT ticketing system, or delete the
ticket_system
entry from your conf table.
su freeside psql freeside delete from conf where name = 'ticket_system';
Finalize
- Restart Apache (httpd) and log into the web interface using the username and password you entered above.
- Now proceed to the initial administration of your installation.