http://www.freeside.biz/mediawiki/api.php?action=feedcontributions&user=Khoff&feedformat=atom
Freeside - User contributions [en]
2024-03-29T08:43:46Z
User contributions
MediaWiki 1.27.7
http://www.freeside.biz/mediawiki/index.php?title=Freeside:4:Documentation:InstallingOnDebian8&diff=9652
Freeside:4:Documentation:InstallingOnDebian8
2017-02-21T21:32:08Z
<p>Khoff: /* Apache & Web GUI */</p>
<hr />
<div>= Configure package repositories =<br />
* Add the following apt sources to <code>/etc/apt/sources.list</code> (for Debian 8.x "jessie"):<br />
<br />
<pre><br />
deb http://freeside.biz/~ivan/freeside-jessie/ ./<br />
deb http://freeside.biz/~jeremyd/freeside4-jessie-stable/ ./<br />
</pre><br />
<br />
* Run <code>aptitude update</code>.<br />
<br />
= Install =<br />
<br />
<pre><br />
aptitude install freeside freeside-lib freeside-webui<br />
apt-mark hold freeside*<br />
</pre><br />
<br />
= Database setup =<br />
<br />
== Database User ==<br />
* Allow the freeside user full access to the freeside database. <br />
with Postgresql:<br />
<pre><br />
[ as postgres/pgsql user ]<br />
$ createuser -P -d freeside <br />
Enter password for new role: <br />
Enter it again: <br />
</pre><br />
or with MySQL:<br />
<pre><br />
$ mysqladmin -u root password 'set_a_root_database_password'<br />
$ mysql -u root -p<br />
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,INDEX,ALTER,CREATE,DROP on freeside.* TO freeside@localhost IDENTIFIED BY 'set_a_freeside_database_password';<br />
</pre><br />
<br />
== Database Access ==<br />
* Configure /usr/local/etc/freeside/secrets if necessary. This file contains three lines: DBI datasource, username and password<br />
** See the DBI manpage and the manpage for your DBD for the exact syntax of your DBI data source. <br />
<br />
== Database ==<br />
* Add the freeside database to your database engine: <br />
with Postgres: <br />
<pre><br />
$ su freeside<br />
$ createdb -E UTF8 freeside<br />
</pre><br />
or with MySQL: <br />
<pre><br />
$ mysqladmin -u freeside -p create freeside <br />
</pre><br />
<br />
= Bootstrap Freeside =<br />
<br />
== Freeside database ==<br />
<br />
* As the freeside UNIX user, run <code>freeside-setup -d your.domain.name</code> to create the database tables and initial data.<br />
<pre><br />
$ su freeside<br />
$ freeside-setup -d example.com<br />
</pre><br />
<br />
== RT database ==<br />
<br />
* As the freeside UNIX user, run:<br />
<pre><br />
$ su freeside<br />
$ /opt/rt3/sbin/rt-setup-database --action schema<br />
$ /opt/rt3/sbin/rt-setup-database --action coredata<br />
$ /opt/rt3/sbin/rt-setup-database --action insert --datafile /opt/rt3/etc/initialdata<br />
</pre><br />
<br />
== System users ==<br />
* Create the Freeside system users: <br />
<pre><br />
$ su freeside<br />
$ freeside-adduser -g 1 fs_queue<br />
$ freeside-adduser -g 1 fs_daily<br />
$ freeside-adduser -g 1 fs_selfservice<br />
$ freeside-adduser -g 1 fs_api<br />
</pre><br />
<br />
== Employees ==<br />
* Create one or more Freeside users (your internal sales/tech folks, not customer accounts):<br />
<pre><br />
$ su freeside<br />
$ freeside-adduser -g 1 username<br />
$ htpasswd /usr/local/etc/freeside/htpasswd username<br />
Password: <br />
</pre><br />
Additional users can be added using the same command or from the web interface.<br />
<br />
= Restart freeside =<br />
<br />
* <code>/etc/init.d/freeside restart</code><br />
<br />
= Apache & Web GUI =<br />
* Edit /etc/apache2/envvars and set APACHE_RUN_USER and APACHE_RUN_GROUP to <code>freeside</code><br />
* <code>a2enconf freeside-base2</code> or for apache 2.4 <code>a2enconf freeside-base2.4</code><br />
* <code>a2enconf freeside-rt</code><br />
* <code>a2dismod mpm_event</code><br />
* <code>a2enmod mpm_prefork</code><br />
* <code>a2enmod rewrite</code><br />
* <code>a2enmod perl</code><br />
* <code>chown freeside /var/lock/apache2</code><br />
* Restart Apache<br />
* The web interface will be available at /freeside<br />
<br />
= Next steps =<br />
* Log into the web interface using the username and password you entered above.<br />
* Proceed to the initial [[Freeside:3:Documentation:Administration|administration]] of your installation.</div>
Khoff
http://www.freeside.biz/mediawiki/index.php?title=Freeside:1.7:Documentation:InstallingOnCentOS4&diff=2407
Freeside:1.7:Documentation:InstallingOnCentOS4
2007-09-17T19:00:39Z
<p>Khoff: /* RT Prereqs */</p>
<hr />
<div>= Installing Freeside 1.7.x on CentOS 4.4 =<br />
<br />
This is a (hopefully) step-by-step guide for doing a basic installation of Freeside on CentOS 4.4 using RPMs whenever possible. It would probably be easier to use CPAN directly in some cases, but that wouldn't be very fun now would it?<br />
<br />
== Software Installation ==<br />
<br />
Run the correct command below depending on your architecture. The ''BASEARCH'' environment variable '''must''' be set before running many of the commands contained in this document. If you close your terminal and resume the process at a later time, you must '''re-run''' the export command. If you find that rpm or wget is unable to download a particular file, run ''echo $BASEARCH'' and make sure it outputs either ''i386'' or ''x86_64''.<br />
<br />
'''Please''' stop updating this wiki replacing the occurances of ''$BASEARCH'' with ''i386'' or ''x86_64''.<br />
<br />
<pre><br />
# export BASEARCH=i386<br />
</pre><br />
...or...<br />
<pre><br />
# export BASEARCH=x86_64<br />
</pre><br />
<br />
=== Binary Packages ===<br />
{| border="1"<br />
|-<br />
|*Package*||*Repo*||*Version*<br />
|-<br />
|httpd||base||2.0.52-28.ent.centos4<br />
|-<br />
|postgresql-server||update||7.4.16-1.RHEL4.1<br />
|-<br />
|tetex||base||2.0.2-22.EL4.7<br />
|-<br />
|ghostscript||base||7.07-33<br />
|-<br />
|perl||centosplus||4:5.8.8-4.el4s1<br />
|-<br />
|gcc||base||3.4.6-8<br />
<br />
|}<br />
<br />
<pre><br />
# yum install httpd postgresql-server tetex ghostscript.$BASEARCH<br />
</pre><br />
<br />
Upgrade to perl 5.8.8 to get CGI >= 3.08.<br />
<br />
<pre><br />
# yum --enablerepo=centosplus upgrade perl<br />
</pre><br />
<br />
Next install the gcc complier<br />
<br />
<pre><br />
# yum install gcc<br />
</pre><br />
<br />
=== Perl Packages ===<br />
<br />
Setup 3rd party repos for most of the extra perl modules.<br />
<br />
<pre><br />
# wget -O /tmp/rpmforge-release-0.3.6-1.el4.rf.$BASEARCH.rpm http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.$BASEARCH.rpm<br />
# rpm -ivh /tmp/rpmforge-release-0.3.6-1.el4.rf.$BASEARCH.rpm<br />
# rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt<br />
<br />
# cat &lt;&lt;END&gt;/etc/yum.repos.d/dries.repo<br />
[dries]<br />
name=Extra Fedora rpms dries - \$releasever - \$basearch<br />
baseurl=http://ftp.belnet.be/packages/dries.ulyssis.org/redhat/el\$releasever/en/\$basearch/dries/RPMS<br />
END<br />
# rpm --import http://dries.ulyssis.org/rpm/RPM-GPG-KEY.dries.txt<br />
</pre><br />
<br />
Install the cpan2rpm tool so we can build RPMs from CPAN packages.<br />
<br />
<pre><br />
# rpm --import http://perl.arix.com/cpan2rpm/gpg.pub.asc<br />
# yum install rpm-build perl-Module-Build<br />
# rpm -ivh http://superb-east.dl.sourceforge.net/sourceforge/cpan2rpm/cpan2rpm-2.027-1.noarch.rpm<br />
</pre><br />
<br />
==== mod_perl2 ====<br />
<br />
Grab mod_perl 2.03 from the centosplus repo.<br />
<br />
<pre><br />
# yum --enablerepo=centosplus install mod_perl<br />
</pre><br />
<br />
<br />
==== Freeside Prereqs ====<br />
{| border="1"<br />
|-<br />
|*Perl Module*||*Package*||*Version*||*Repo*<br />
|-<br />
|libnet||libnet||1.1.2.1-2.rf||extras<br />
|-<br />
|libwww-perl||perl-libwww-perl.noarch||5.79-5||base<br />
|-<br />
|URI||perl-URI.noarch||1.30-4||base<br />
|-<br />
|HTML::Tagset||perl-HTML-Tagset.noarch||3.03-30||base<br />
|-<br />
|HTML::Parser||perl-HTML-Parser||3.35-6||base<br />
|-<br />
|DBI||perl-DBI||1.40-8||base<br />
|-<br />
|DBD::MySQL||perl-DBD-MySQL||2.9004-3.1||base<br />
|-<br />
|MailTools||perl-MailTools.noarch||1.74-1.c4||extras<br />
|-<br />
|TimeDate||perl-TimeDate.noarch||1.16-1.c4||extras<br />
|-<br />
|Date::Manip||perl-DateManip.noarch||5.42a-3||base<br />
|-<br />
|HTML::Mason||perl-HTML-Mason||1.3200-1.el4.rf||rpmforge<br />
|-<br />
|Text::Template||perl-Text-Template||1.44-1.2.el4.rf||dries<br />
|-<br />
|DateTime||perl-DateTime||0.2901-1.2.el4.rf||rpmforge<br />
|-<br />
|Chart||perl-Chart||2.4.1-1.el4.rf||dries<br />
|-<br />
|Cache::Cache||perl-Cache-Cache||1.05-1.el4.rf||dries<br />
|-<br />
|NetAddr::IP||perl-NetAddr-IP||4.004-1.el4.rf||rpmforge<br />
|-<br />
|String::Approx||perl-String-Approx||3.26-1.el4.rf||dries<br />
|-<br />
|Locale::SubCountry||perl-Locale-SubCountry||1.38-1.el4.rf||dries<br />
|-<br />
|Term::ReadKey||perl-Term-ReadKey||2.30-2.2.el4.rf||dries<br />
|-<br />
|DateTime::Format::Strptime||perl-DateTime-Format-Strptime||1.0700-1.2.el4.rf||dries<br />
|-<br />
|Net::Whois::Raw||perl-Net-Whois-Raw||1.20-1.el4.rf||dries<br />
|-<br />
|DBIx::DBSchema||perl-DBIx-DBSchema||0.31-1.el4.rf||dries<br />
|-<br />
|Tie::IxHash||perl-Tie-IxHash||1.21-1.2.el4.rf||dries<br />
|-<br />
|Crypt::PasswdMD5||perl-Crypt-PasswdMD5||1.3-1.2.el4.rf||dries<br />
|-<br />
|File::CounterFile||perl-File-CounterFile||1.04-1.2.el4.rf||dries<br />
|-<br />
|IPC::Run3||perl-IPC-Run3||0.036-1.el4.rf||dries<br />
|-<br />
|Net::SSH||perl-Net-SSH||0.08-1.2.el4.rf||dries<br />
|-<br />
|String::ShellQuote||perl-String-ShellQuote||1.03-2.2.el4.rf||dries<br />
|-<br />
|JSON||perl-JSON||1.07-1.el4.rf||dries<br />
|-<br />
|Data::Table||perl-Data-Table||1.50-1.el4.rf||dries<br />
|-<br />
|Lingua::EN::NameParse||perl-Lingua-EN-NameParse||1.22-2.2.el4.rf||dries<br />
|-<br />
|Lingua::EN::Inflect||perl-Lingua-EN-Inflect||1.89-1.2.el4.rf||dries<br />
|-<br />
|Apache::DBI||perl-Apache-DBI||0.9901-2.2.el4.rf||dries<br />
|-<br />
|IO::Scalar||perl-IO-stringy||2.110-1.2.el4.rf||dries<br />
|-<br />
|Text::CSV_XS||perl-Text-CSV_XS||0.23-1.2.el4.rf||dries<br />
|-<br />
|Spreadsheet::WriteExcel||perl-Spreadsheet-WriteExcel||2.17-1.el4.rf||dries<br />
|-<br />
|MIME-tools||perl-MIME-tools||5.420-1.el4.rf||dries<br />
|-<br />
|Date::Manip||perl-DateManip||5.42a-3||base<br />
|-<br />
|Crypt::DES||perl-Crypt-DES||2.05-3.2.el4.rf||dries<br />
|-<br />
|Crypt::Blowfish||perl-Crypt-Blowfish||2.10-1.2.el4.rf||dries<br />
|-<br />
|Digest::MD4||perl-Digest-MD4||1.5-1.2.el4.rf||dries<br />
|-<br />
|Crypt::Rijndael||perl-Crypt-Rijndael||0.05-1.2.el4.rf||dries<br />
|-<br />
|ExtUtils::CBuilder||perl-ExtUtils-CBuilder||0.18-1.el4.rf||dries<br />
|-<br />
|DBD::Pg||perl-DBD-Pg||1.49-1.el4s1||centosplus<br />
|-<br />
|Locale-Codes|| | ||cpan2rpm<br />
|-<br />
|Frontier::RPC2|| | ||cpan2rpm<br />
|-<br />
|Business::CreditCard|| | ||cpan2rpm<br />
|-<br />
|Time::Duration|| | ||cpan2rpm<br />
|-<br />
|HTML::Widgets::SelectLayers|| | ||cpan2rpm<br />
|-<br />
|Color::Scheme|| | ||cpan2rpm<br />
|-<br />
|Params::Classify||||cpan2rpm<br />
|-<br />
|Scalar::Number||||cpan2rpm<br />
|-<br />
|Data::Integer||||cpan2rpm<br />
|-<br />
|Data::Float||||cpan2rpm<br />
|-<br />
|Module::Runtime||||cpan2rpm<br />
|-<br />
|Authen::DecHpwd||||cpan2rpm<br />
|-<br />
|Authen::Passphrase||||cpan2rpm<br />
|-<br />
|Data::Entropy::Algorithms||||cpan2rpm<br />
|-<br />
|Crypt::MySQL||||cpan2rpm<br />
|-<br />
|Crypt::Eksblowfish||||cpan2rpm<br />
|-<br />
|Crypt::UnixCrypt_XS||||cpan2rpm<br />
|-<br />
|Fax::Hylafax::Client||||cpan2rpm<br />
|}<br />
<br />
<pre><br />
# yum -y install libnet perl-libwww-perl perl-URI perl-HTML-Tagset<br />
# yum -y install perl-HTML-Parser <br />
# yum -y install perl-MailTools perl-TimeDate<br />
# yum -y install perl-HTML-Mason perl-Text-Template perl-DateTime perl-Chart<br />
# yum -y install perl-Cache-Cache perl-NetAddr-IP perl-String-Approx<br />
# yum -y install perl-Locale-SubCountry perl-Term-ReadKey<br />
# yum -y install perl-DateTime-Format-Strptime perl-Net-Whois-Raw<br />
# yum -y install perl-Tie-IxHash perl-Crypt-PasswdMD5<br />
# yum -y install perl-File-CounterFile perl-IPC-Run3 perl-Net-SSH<br />
# yum -y install perl-String-ShellQuote perl-JSON perl-Data-Table<br />
# yum -y install perl-Lingua-EN-NameParse perl-Lingua-EN-Inflect<br />
# yum -y install perl-IO-stringy perl-Text-CSV_XS perl-Spreadsheet-WriteExcel<br />
# yum -y install perl-MIME-tools perl-DateManip<br />
# yum -y install perl-DBI perl-DBD-MySQL perl-Apache-DBI <br />
# yum -y install --enablerepo=centosplus perl-DBD-Pg<br />
# yum -y install perl-Crypt-DES perl-Crypt-Blowfish perl-Digest-MD4<br />
# yum -y install perl-Crypt-Rijndael perl-ExtUtils-CBuilder<br />
</pre><br />
<br />
You can install these using cpan, or follow the directions here using cpan2rpm.<br />
<br />
* DBIx::DBSchema<br />
<br />
<pre><br />
# yum -y install perl-DBIx-DBSchema<br />
</pre><br />
<br />
* Frontier::RPC2<br />
<br />
<pre><br />
# yum -y install perl-XML-Parser<br />
# cpan2rpm --author='Ken MacLeod &lt;ken@bitsko.slc.ut.us&gt;' --version='0.07b4' Frontier-RPC<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Frontier-RPC-0.07b4-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Business::CreditCard<br />
<br />
<pre><br />
# cpan2rpm Business::CreditCard<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Business-CreditCard-0.30-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Time::Duration<br />
<br />
<pre><br />
# yum -y install perl-Test-Pod perl-Test-Pod-Coverage<br />
# cpan2rpm Time::Duration<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Time-Duration-1.04-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* HTML::Widgets::SelectLayers<br />
<br />
<pre><br />
# cpan2rpm http://search.cpan.org/CPAN/authors/id/I/IV/IVAN/HTML-Widgets-SelectLayers-0.07.tar.gz<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-HTML-Widgets-SelectLayers-0.07-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Color::Scheme<br />
<br />
Ran into much brokenness when trying to build Test-Simple-0.67. Just skip the dep checks and test phase and hope. I mean, come on, it's Color::Scheme for crying out loud!<br />
<br />
<pre><br />
# yum -y install perl-Test-Differences<br />
# cpan2rpm --make-no-test --no-depchk Color::Scheme<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Color-Scheme-1.02-1.noarch.rpm<br />
</pre><br />
<br />
* Params::Classify<br />
<br />
Install some deps first...<br />
<br />
** Scalar::Number<br />
<br />
*** Data::Integer<br />
<pre><br />
# cpan2rpm Data::Integer<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Integer-0.001-1.noarch.rpm<br />
</pre><br />
<br />
*** Data::Float<br />
<pre><br />
# cpan2rpm Data::Float<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Float-0.005-1.noarch.rpm<br />
</pre><br />
<br />
<pre><br />
# cpan2rpm Scalar::Number<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Scalar-Number-0.001-1.noarch.rpm<br />
<br />
# cpan2rpm Params::Classify<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Params-Classify-0.002-1.noarch.rpm<br />
</pre><br />
<br />
* Module::Runtime<br />
<pre><br />
# cpan2rpm Module::Runtime<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Module-Runtime-0.003-1.noarch.rpm<br />
</pre><br />
<br />
* Authen::DecHpwd<br />
<pre><br />
# cpan2rpm Authen::DecHpwd<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Authen-DecHpwd-2.001-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Data::Entropy::Algorithms<br />
<pre><br />
# cpan2rpm --make-no-test Data::Entropy<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Entropy-0.003-1.noarch.rpm<br />
</pre><br />
<br />
* Crypt::MySQL<br />
<pre><br />
# cpan2rpm --version='0.04' --author='IKEBE Tomohiro <ikebe@shebang.jp>' Crypt::MySQL<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Crypt-MySQL-0.04-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Crypt::Eksblowfish<br />
<pre><br />
# cpan2rpm Crypt::Eksblowfish<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Crypt-Eksblowfish-0.001-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Crypt::UnixCrypt_XS<br />
<pre><br />
# cpan2rpm Crypt::UnixCrypt_XS<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Crypt-UnixCrypt_XS-0.06-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Authen::Passphrase<br />
<pre><br />
# cpan2rpm Authen::Passphrase<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Authen-Passphrase-0.005-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Fax::Hylafax::Client (Optional)<br />
<br />
Skip the tests here as well, unless you happen to have a properly configured HylaFAX server handy.<br />
Or, skip the package entirely if you don't plan on sending FAX invoices.<br />
<br />
<pre><br />
# cpan2rpm --make-no-test Fax::Hylafax::Client<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Fax-Hylafax-Client-1.02-1.noarch.rpm<br />
</pre><br />
<br />
==== RT Prereqs ====<br />
<br />
{| border="1"<br />
|-<br />
|*Perl Module*||*Package*||*Version*||*Repo*<br />
|-<br />
|Apache::Session||perl-Apache-Session||1.81-1.el4.rf||dries<br />
|-<br />
|HTML-Format||perl-HTML-Format||2.04-1.2.el4.rf||dries<br />
|-<br />
|Class::ReturnValue||perl-Class-ReturnValue||0.53-1.2.el4.rf||dries<br />
|-<br />
|DBIx::SearchBuilder||perl-DBIx-SearchBuilder||1.43-1.el4.rf||rpmforge<br />
|-<br />
|Log::Dispatch||perl-Log-Dispatch||2.11-1.2.el4.rf||rpmforge<br />
|-<br />
|Locale::Maketext::Lexicon||perl-Locale-Maketext-Lexicon||0.62-1.el4.rf||dries<br />
|-<br />
|Locale::Maketext::Fuzzy||perl-Locale-Maketext-Fuzzy||0.02-1.2.el4.rf||dries<br />
|-<br />
|Text::Wrapper||perl-Text-Wrapper||1.000-1.2.el4.rf||dries<br />
|-<br />
|Time-modules||perl-Time-modules||2003.1126-1.2.el4.rf||dries<br />
|-<br />
|Text::Autoformat||perl-Text-Autoformat||1.13-1.2.el4.rf||dries<br />
|-<br />
|Text::Quoted||perl-Text-Quoted||1.8-1.2.el4.rf||dries<br />
|-<br />
|Regexp::Common||perl-Regexp-Common||2.120-1.2.el4.rf||dries<br />
|-<br />
|HTML::Scrubber||perl-HTML-Scrubber||0.08-1.2.el4.rf||dries<br />
|-<br />
|Tree::Simple||perl-Tree-Simple||1.17-1.el4.rf||dries<br />
|-<br />
|HTML::TreeBuilder||perl-HTML-Tree||3.23-1.el4.rf||dries<br />
<br />
|}<br />
<br />
<pre><br />
# yum -y install perl-Apache-Session perl-HTML-Format perl-Class-ReturnValue<br />
# yum -y install perl-Locale-Maketext-Lexicon perl-Locale-Maketext-Fuzzy<br />
# yum -y install perl-Text-Wrapper perl-Time-modules<br />
# yum -y install perl-Text-Autoformat perl-Text-Quoted perl-Regexp-Common<br />
# yum -y install perl-HTML-Scrubber perl-Tree-Simple perl-HTML-Tree<br />
</pre><br />
<br />
* Log::Dispatch<br />
<br />
Use the SRPM from Fedora Core 5. They have the correct and properly patched version that supports mod_perl 2.<br />
<br />
But first, a couple of prereqs.<br />
<br />
<pre><br />
# yum -y install perl-File-Find-Rule perl-IO-String<br />
# yum -y install perl-MIME-Lite perl-Mail-Sender perl-Mail-Sendmail<br />
</pre><br />
<br />
Now build and install Log::Dispatch itself. (There seems to be another rpm too, but it need Apache::Log)<br />
<br />
<pre><br />
# wget -O /usr/src/redhat/SRPMS/perl-Log-Dispatch-2.15-2.fc5.src.rpm http://download.fedora.redhat.com/pub/fedora/linux/extras/5/SRPMS/perl-Log-Dispatch-2.15-2.fc5.src.rpm<br />
<br />
# rpmbuild --rebuild /usr/src/redhat/SRPMS/perl-Log-Dispatch-2.15-2.fc5.src.rpm<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Log-Dispatch-2.15-2.noarch.rpm<br />
</pre><br />
<br />
* DBIx::SearchBuilder<br />
<br />
DBIx::searchBuilder is a little painful to install because it requires DBD::Oracle. You can just run "yum install perl-DBIx-SearchBuilder" if you want to go through the trouble of building and installing DBD::Oracle first. Again, that can be rather painful and isn't within the scope of this guide.<br />
<br />
The alternative below is to force install the RPM for DBIx::SearchBuilder since we're not going to use Oracle anyway. You have to exclude it from future updates in yum otherwise you'll get dep failures everytime you do a "yum upgrade".<br />
<br />
If you're not going to use RT, just skip DBIx::SearchBuilder altogether.<br />
<br />
<pre><br />
# yum -y install perl-Want perl-Clone perl-Cache-Simple-TimedExpiry<br />
# yum -y install perl-DBD-SQLite perl-capitalization perl-Class-Accessor<br />
<br />
# rpm -ivh --nodeps http://apt.sw.be/redhat/el4/en/${BASEARCH}/dag/RPMS/perl-DBIx-SearchBuilder-1.43-1.el4.rf.noarch.rpm<br />
<br />
# echo "exclude=perl-DBIx-SearchBuilder" >> /etc/yum.conf<br />
</pre><br />
<br />
== System configuration ==<br />
<br />
This is just following the directions with CentOS-specific commands.<br />
<br />
<pre><br />
# groupadd freeside<br />
# useradd -g freeside freeside<br />
</pre><br />
<br />
With CentOS 4.4, postgresql wouldn't start if SELinux was enabled. We call "setenforce 0" here to temporarily disable it. Some claim that it only needs to be disabled the first time postgresql is started.<br />
<br />
Enable postgresql at startup, disable selinux temporarily, and start postgresql.<br />
<br />
<pre><br />
# chkconfig postgresql on<br />
# setenfore 0<br />
# service postgresql start<br />
</pre><br />
<br />
Create the freeside datbase user for postgresql.<br />
<br />
<pre><br />
# su -c "createuser -P freeside" - postgres<br />
</pre><br />
<br />
== Installing Freeside ==<br />
<br />
su to the freeside user, extract a copy of the freeside tarball or check out the code from CVS into the freeside user's home directory. You should have the freeside top-level Makefile in /home/freeside/freeside/Makefile or /home/freeside/freeside-1.7.0/Makefile at this point. 1.7.0 wasn't officially released at the time of writing, so we're using a version checked-out from CVS.<br />
<br />
Edit freeside's top-level Makefile with your configuration. Here are some examples...<br />
<br />
<pre><br />
FREESIDE_CONF = /etc/freeside<br />
FREESIDE_LOG = /var/log/freeside<br />
FREESIDE_LOCK = /var/lib/freeside<br />
FREESIDE_CACHE = /var/lib/freeside<br />
FREESIDE_EXPORT = /var/lib/freeside<br />
<br />
APACHE_VERSION = 2<br />
FREESIDE_DOCUMENT_ROOT = /var/www/freeside/html<br />
<br />
INIT_FILE = /etc/init.d/freeside<br />
INIT_INSTALL = /sbin/chkconfig freeside on<br />
<br />
HTTPD_RESTART = /etc/init.d/httpd restart<br />
APACHE_CONF = /etc/httpd-freeside/conf.d<br />
</pre><br />
<br />
As the freeside user, create the database and make the perl modules.<br />
<br />
<pre><br />
$ createdb -E sql_ascii freeside<br />
<br />
$ make perl-modules<br />
</pre><br />
<br />
As root, install the perl modules and create the initial config.<br />
<br />
<pre><br />
# make install-perl-modules<br />
<br />
# mkdir -m 770 /var/lib/freeside<br />
# chown -R freeside:root /var/lib/freeside/<br />
# make create-config<br />
</pre><br />
<br />
== Apache Configuration ==<br />
<br />
=== Creating Freeside's Apache Instance ===<br />
<br />
The default Apache init script for CentOS doesn't make it very easy to setup multiple instances of Apache. A few small modifications take care of that problem.<br />
<br />
Start by making a copy of the init script, as well as download the patch and apply it to your httpd-freeside init script. You can make a symlink if you'd like to eventually setup additional Apache instances.<br />
<br />
<pre><br />
# ln -s /etc/init.d/httpd /etc/init.d/httpd-freeside<br />
<br />
# cd /etc/init.d/<br />
# wget -O /tmp/httpd-freeside.patch http://users.fire2wire.com/~khoff/freeside/1.7.0/httpd-freeside.patch<br />
# patch < /tmp/httpd-freeside.patch<br />
</pre><br />
<br />
Make a copy of the Apache server root.<br />
<br />
<pre><br />
# cp -av /etc/httpd /etc/httpd-freeside<br />
</pre><br />
<br />
You can remove any extra conf files from /etc/httpd-freeside/conf.d (webdav, php, etc.) if you're not using them. They'll only take up more memory and potentially make freeside slower.<br />
<br />
=== /etc/httpd-freeside/conf/httpd.conf ===<br />
<br />
Change the following Apache configuration directives in /etc/httpd-freeside/conf/httpd.conf to match our previous changes.<br />
<br />
* ServerRoot "/etc/httpd-freeside"<br />
* PidFile run/httpd-freeside.pid<br />
<br />
We're changing the listening port in case you're using the default Apache configuration (and port) for something else. This can be remedied by binding to a specific IP address as well (eg. 192.168.0.2:80).<br />
<br />
* Listen 8080<br />
<br />
Freeside's instance of Apache needs to run as the freeside user and group.<br />
<br />
* User freeside<br />
* Group freeside<br />
<br />
* DocumentRoot "/var/www/freeside/html"<br />
<br />
* &lt;Directory "/var/www/freeside/html"&gt;<br />
<br />
* ErrorLog logs/freeside_error_log<br />
* CustomLog logs/freeside_access_log combined<br />
<br />
<br />
=== Install Docs and Freeside's Apache Includes ===<br />
<br />
Inside the freeside source directory, run "make install-docs" and "make install-apache" as root.<br />
<br />
<pre><br />
# make install-docs<br />
# make install-apache<br />
</pre><br />
<br />
Edit the config file that was just created (/etc/httpd-freeside/conf.d/freeside-base2.conf) by "make install-apache" and change the AuthUserFile directive to match our new path.<br />
<br />
* AuthUserFile /etc/freeside/htpasswd<br />
<br />
<br />
== Populating the Database ==<br />
<br />
Populate the freeside database with the initial data, as the freeside user.<br />
<br />
<pre><br />
$ freeside-setup -d example.com<br />
</pre><br />
<br />
Create the freeside system users, as the freeside user.<br />
<br />
<pre><br />
$ freeside-adduser -g 1 fs_queue<br />
$ freeside-adduser -g 1 fs_daily<br />
$ freeside-adduser -g 1 fs_selfservice<br />
</pre><br />
<br />
Create whatever other freeside users you want, again, as the freeside user.<br />
<br />
<pre><br />
freeside-adduser -g 1 username<br />
htpasswd /etc/freeside/htpasswd username<br />
</pre><br />
<br />
Repeat the last two commands as many times as you want for your internal staff's freeside accounts.<br />
<br />
== Startup Configuration ==<br />
<br />
We just need to make sure that our new instance of Apache and the freeside queue daemon start when we boot.<br />
<br />
<pre><br />
# make install-init<br />
<br />
# chkconfig freeside on<br />
# chkconfig httpd-freeside on<br />
</pre><br />
<br />
And last but not least...start freeside's Apache instance.<br />
<br />
<pre><br />
# service httpd-freeside start<br />
</pre><br />
<br />
Hopefully, Apache should start without errors. If you do get errors, check /var/log/httpd/freeside_error_log.<br />
<br />
Assuming Apache started correctly, you should now be able to access freeside via http://&lt;Your server's FQDN or IP&gt;:8080/. You can login using the username and password you set earlier with htpasswd.<br />
<br />
From here, consult the standard freeside install documentation in the wiki on how to proceed with initial configuration. Good luck!<br />
<br />
== Problems ==<br />
<br />
There might be some formatting issues as this was converted from TWiki to MediaWiki markup. If the syntax of a command doesn't look correct or doesn't make sense, it probably didn't get escaped correctly, or your web browser gobbled up some angle brackets, or both!</div>
Khoff
http://www.freeside.biz/mediawiki/index.php?title=Freeside:1.7:Documentation:InstallingOnCentOS4&diff=2350
Freeside:1.7:Documentation:InstallingOnCentOS4
2007-07-25T19:15:30Z
<p>Khoff: /* Installing Freeside 1.7.x on CentOS 4.4 */</p>
<hr />
<div>= Installing Freeside 1.7.x on CentOS 4.4 =<br />
<br />
This is a (hopefully) step-by-step guide for doing a basic installation of Freeside on CentOS 4.4 using RPMs whenever possible. It would probably be easier to use CPAN directly in some cases, but that wouldn't be very fun now would it?<br />
<br />
== Software Installation ==<br />
<br />
Run the correct command below depending on your architecture. The ''BASEARCH'' environment variable '''must''' be set before running many of the commands contained in this document. If you close your terminal and resume the process at a later time, you must '''re-run''' the export command. If you find that rpm or wget is unable to download a particular file, run ''echo $BASEARCH'' and make sure it outputs either ''i386'' or ''x86_64''.<br />
<br />
'''Please''' stop updating this wiki replacing the occurances of ''$BASEARCH'' with ''i386'' or ''x86_64''.<br />
<br />
<pre><br />
# export BASEARCH=i386<br />
</pre><br />
...or...<br />
<pre><br />
# export BASEARCH=x86_64<br />
</pre><br />
<br />
=== Binary Packages ===<br />
{| border="1"<br />
|-<br />
|*Package*||*Repo*||*Version*<br />
|-<br />
|httpd||base||2.0.52-28.ent.centos4<br />
|-<br />
|postgresql-server||update||7.4.16-1.RHEL4.1<br />
|-<br />
|tetex||base||2.0.2-22.EL4.7<br />
|-<br />
|ghostscript||base||7.07-33<br />
|-<br />
|perl||centosplus||4:5.8.8-4.el4s1<br />
|-<br />
|gcc||base||3.4.6-8<br />
<br />
|}<br />
<br />
<pre><br />
# yum install httpd postgresql-server tetex ghostscript.$BASEARCH<br />
</pre><br />
<br />
Upgrade to perl 5.8.8 to get CGI >= 3.08.<br />
<br />
<pre><br />
# yum --enablerepo=centosplus upgrade perl<br />
</pre><br />
<br />
Next install the gcc complier<br />
<br />
<pre><br />
# yum install gcc<br />
</pre><br />
<br />
=== Perl Packages ===<br />
<br />
Setup 3rd party repos for most of the extra perl modules.<br />
<br />
<pre><br />
# wget -O /tmp/rpmforge-release-0.3.6-1.el4.rf.$BASEARCH.rpm http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.$BASEARCH.rpm<br />
# rpm -ivh /tmp/rpmforge-release-0.3.6-1.el4.rf.$BASEARCH.rpm<br />
# rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt<br />
<br />
# cat &lt;&lt;END&gt;/etc/yum.repos.d/dries.repo<br />
[dries]<br />
name=Extra Fedora rpms dries - \$releasever - \$basearch<br />
baseurl=http://ftp.belnet.be/packages/dries.ulyssis.org/redhat/el\$releasever/en/\$basearch/dries/RPMS<br />
END<br />
# rpm --import http://dries.ulyssis.org/rpm/RPM-GPG-KEY.dries.txt<br />
</pre><br />
<br />
Install the cpan2rpm tool so we can build RPMs from CPAN packages.<br />
<br />
<pre><br />
# rpm --import http://perl.arix.com/cpan2rpm/gpg.pub.asc<br />
# yum install rpm-build perl-Module-Build<br />
# rpm -ivh http://superb-east.dl.sourceforge.net/sourceforge/cpan2rpm/cpan2rpm-2.027-1.noarch.rpm<br />
</pre><br />
<br />
==== mod_perl2 ====<br />
<br />
Grab mod_perl 2.03 from the centosplus repo.<br />
<br />
<pre><br />
# yum --enablerepo=centosplus install mod_perl<br />
</pre><br />
<br />
<br />
==== Freeside Prereqs ====<br />
{| border="1"<br />
|-<br />
|*Perl Module*||*Package*||*Version*||*Repo*<br />
|-<br />
|libnet||libnet||1.1.2.1-2.rf||extras<br />
|-<br />
|libwww-perl||perl-libwww-perl.noarch||5.79-5||base<br />
|-<br />
|URI||perl-URI.noarch||1.30-4||base<br />
|-<br />
|HTML::Tagset||perl-HTML-Tagset.noarch||3.03-30||base<br />
|-<br />
|HTML::Parser||perl-HTML-Parser||3.35-6||base<br />
|-<br />
|DBI||perl-DBI||1.40-8||base<br />
|-<br />
|DBD::MySQL||perl-DBD-MySQL||2.9004-3.1||base<br />
|-<br />
|MailTools||perl-MailTools.noarch||1.74-1.c4||extras<br />
|-<br />
|TimeDate||perl-TimeDate.noarch||1.16-1.c4||extras<br />
|-<br />
|Date::Manip||perl-DateManip.noarch||5.42a-3||base<br />
|-<br />
|HTML::Mason||perl-HTML-Mason||1.3200-1.el4.rf||rpmforge<br />
|-<br />
|Text::Template||perl-Text-Template||1.44-1.2.el4.rf||dries<br />
|-<br />
|DateTime||perl-DateTime||0.2901-1.2.el4.rf||rpmforge<br />
|-<br />
|Chart||perl-Chart||2.4.1-1.el4.rf||dries<br />
|-<br />
|Cache::Cache||perl-Cache-Cache||1.05-1.el4.rf||dries<br />
|-<br />
|NetAddr::IP||perl-NetAddr-IP||4.004-1.el4.rf||rpmforge<br />
|-<br />
|String::Approx||perl-String-Approx||3.26-1.el4.rf||dries<br />
|-<br />
|Locale::SubCountry||perl-Locale-SubCountry||1.38-1.el4.rf||dries<br />
|-<br />
|Term::ReadKey||perl-Term-ReadKey||2.30-2.2.el4.rf||dries<br />
|-<br />
|DateTime::Format::Strptime||perl-DateTime-Format-Strptime||1.0700-1.2.el4.rf||dries<br />
|-<br />
|Net::Whois::Raw||perl-Net-Whois-Raw||1.20-1.el4.rf||dries<br />
|-<br />
|DBIx::DBSchema||perl-DBIx-DBSchema||0.31-1.el4.rf||dries<br />
|-<br />
|Tie::IxHash||perl-Tie-IxHash||1.21-1.2.el4.rf||dries<br />
|-<br />
|Crypt::PasswdMD5||perl-Crypt-PasswdMD5||1.3-1.2.el4.rf||dries<br />
|-<br />
|File::CounterFile||perl-File-CounterFile||1.04-1.2.el4.rf||dries<br />
|-<br />
|IPC::Run3||perl-IPC-Run3||0.036-1.el4.rf||dries<br />
|-<br />
|Net::SSH||perl-Net-SSH||0.08-1.2.el4.rf||dries<br />
|-<br />
|String::ShellQuote||perl-String-ShellQuote||1.03-2.2.el4.rf||dries<br />
|-<br />
|JSON||perl-JSON||1.07-1.el4.rf||dries<br />
|-<br />
|Data::Table||perl-Data-Table||1.50-1.el4.rf||dries<br />
|-<br />
|Lingua::EN::NameParse||perl-Lingua-EN-NameParse||1.22-2.2.el4.rf||dries<br />
|-<br />
|Lingua::EN::Inflect||perl-Lingua-EN-Inflect||1.89-1.2.el4.rf||dries<br />
|-<br />
|Apache::DBI||perl-Apache-DBI||0.9901-2.2.el4.rf||dries<br />
|-<br />
|IO::Scalar||perl-IO-stringy||2.110-1.2.el4.rf||dries<br />
|-<br />
|Text::CSV_XS||perl-Text-CSV_XS||0.23-1.2.el4.rf||dries<br />
|-<br />
|Spreadsheet::WriteExcel||perl-Spreadsheet-WriteExcel||2.17-1.el4.rf||dries<br />
|-<br />
|MIME-tools||perl-MIME-tools||5.420-1.el4.rf||dries<br />
|-<br />
|Date::Manip||perl-DateManip||5.42a-3||base<br />
|-<br />
|Crypt::DES||perl-Crypt-DES||2.05-3.2.el4.rf||dries<br />
|-<br />
|Crypt::Blowfish||perl-Crypt-Blowfish||2.10-1.2.el4.rf||dries<br />
|-<br />
|Digest::MD4||perl-Digest-MD4||1.5-1.2.el4.rf||dries<br />
|-<br />
|Crypt::Rijndael||perl-Crypt-Rijndael||0.05-1.2.el4.rf||dries<br />
|-<br />
|ExtUtils::CBuilder||perl-ExtUtils-CBuilder||0.18-1.el4.rf||dries<br />
|-<br />
|DBD::Pg||perl-DBD-Pg||1.49-1.el4s1||centosplus<br />
|-<br />
|Locale-Codes|| | ||cpan2rpm<br />
|-<br />
|Frontier::RPC2|| | ||cpan2rpm<br />
|-<br />
|Business::CreditCard|| | ||cpan2rpm<br />
|-<br />
|Time::Duration|| | ||cpan2rpm<br />
|-<br />
|HTML::Widgets::SelectLayers|| | ||cpan2rpm<br />
|-<br />
|Color::Scheme|| | ||cpan2rpm<br />
|-<br />
|Params::Classify||||cpan2rpm<br />
|-<br />
|Scalar::Number||||cpan2rpm<br />
|-<br />
|Data::Integer||||cpan2rpm<br />
|-<br />
|Data::Float||||cpan2rpm<br />
|-<br />
|Module::Runtime||||cpan2rpm<br />
|-<br />
|Authen::DecHpwd||||cpan2rpm<br />
|-<br />
|Authen::Passphrase||||cpan2rpm<br />
|-<br />
|Data::Entropy::Algorithms||||cpan2rpm<br />
|-<br />
|Crypt::MySQL||||cpan2rpm<br />
|-<br />
|Crypt::Eksblowfish||||cpan2rpm<br />
|-<br />
|Crypt::UnixCrypt_XS||||cpan2rpm<br />
|-<br />
|Fax::Hylafax::Client||||cpan2rpm<br />
|}<br />
<br />
<pre><br />
# yum -y install libnet perl-libwww-perl perl-URI perl-HTML-Tagset<br />
# yum -y install perl-HTML-Parser <br />
# yum -y install perl-MailTools perl-TimeDate<br />
# yum -y install perl-HTML-Mason perl-Text-Template perl-DateTime perl-Chart<br />
# yum -y install perl-Cache-Cache perl-NetAddr-IP perl-String-Approx<br />
# yum -y install perl-Locale-SubCountry perl-Term-ReadKey<br />
# yum -y install perl-DateTime-Format-Strptime perl-Net-Whois-Raw<br />
# yum -y install perl-Tie-IxHash perl-Crypt-PasswdMD5<br />
# yum -y install perl-File-CounterFile perl-IPC-Run3 perl-Net-SSH<br />
# yum -y install perl-String-ShellQuote perl-JSON perl-Data-Table<br />
# yum -y install perl-Lingua-EN-NameParse perl-Lingua-EN-Inflect<br />
# yum -y install perl-IO-stringy perl-Text-CSV_XS perl-Spreadsheet-WriteExcel<br />
# yum -y install perl-MIME-tools perl-DateManip<br />
# yum -y install perl-DBI perl-DBD-MySQL perl-Apache-DBI <br />
# yum -y install --enablerepo=centosplus perl-DBD-Pg<br />
# yum -y install perl-Crypt-DES perl-Crypt-Blowfish perl-Digest-MD4<br />
# yum -y install perl-Crypt-Rijndael perl-ExtUtils-CBuilder<br />
</pre><br />
<br />
You can install these using cpan, or follow the directions here using cpan2rpm.<br />
<br />
* DBIx::DBSchema<br />
<br />
<pre><br />
# yum -y install perl-DBIx-DBSchema<br />
</pre><br />
<br />
* Frontier::RPC2<br />
<br />
<pre><br />
# yum -y install perl-XML-Parser<br />
# cpan2rpm --author='Ken MacLeod &lt;ken@bitsko.slc.ut.us&gt;' --version='0.07b4' Frontier-RPC<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Frontier-RPC-0.07b4-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Business::CreditCard<br />
<br />
<pre><br />
# cpan2rpm Business::CreditCard<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Business-CreditCard-0.30-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Time::Duration<br />
<br />
<pre><br />
# yum -y install perl-Test-Pod perl-Test-Pod-Coverage<br />
# cpan2rpm Time::Duration<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Time-Duration-1.04-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* HTML::Widgets::SelectLayers<br />
<br />
<pre><br />
# cpan2rpm http://search.cpan.org/CPAN/authors/id/I/IV/IVAN/HTML-Widgets-SelectLayers-0.07.tar.gz<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-HTML-Widgets-SelectLayers-0.07-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Color::Scheme<br />
<br />
Ran into much brokenness when trying to build Test-Simple-0.67. Just skip the dep checks and test phase and hope. I mean, come on, it's Color::Scheme for crying out loud!<br />
<br />
<pre><br />
# yum -y install perl-Test-Differences<br />
# cpan2rpm --make-no-test --no-depchk Color::Scheme<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Color-Scheme-1.02-1.noarch.rpm<br />
</pre><br />
<br />
* Params::Classify<br />
<br />
Install some deps first...<br />
<br />
** Scalar::Number<br />
<br />
*** Data::Integer<br />
<pre><br />
# cpan2rpm Data::Integer<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Integer-0.001-1.noarch.rpm<br />
</pre><br />
<br />
*** Data::Float<br />
<pre><br />
# cpan2rpm Data::Float<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Float-0.005-1.noarch.rpm<br />
</pre><br />
<br />
<pre><br />
# cpan2rpm Scalar::Number<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Scalar-Number-0.001-1.noarch.rpm<br />
<br />
# cpan2rpm Params::Classify<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Params-Classify-0.002-1.noarch.rpm<br />
</pre><br />
<br />
* Module::Runtime<br />
<pre><br />
# cpan2rpm Module::Runtime<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Module-Runtime-0.003-1.noarch.rpm<br />
</pre><br />
<br />
* Authen::DecHpwd<br />
<pre><br />
# cpan2rpm Authen::DecHpwd<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Authen-DecHpwd-2.001-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Data::Entropy::Algorithms<br />
<pre><br />
# cpan2rpm --make-no-test Data::Entropy<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Entropy-0.003-1.noarch.rpm<br />
</pre><br />
<br />
* Crypt::MySQL<br />
<pre><br />
# cpan2rpm --version='0.04' --author='IKEBE Tomohiro <ikebe@shebang.jp>' Crypt::MySQL<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Crypt-MySQL-0.04-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Crypt::Eksblowfish<br />
<pre><br />
# cpan2rpm Crypt::Eksblowfish<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Crypt-Eksblowfish-0.001-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Crypt::UnixCrypt_XS<br />
<pre><br />
# cpan2rpm Crypt::UnixCrypt_XS<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Crypt-UnixCrypt_XS-0.06-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Authen::Passphrase<br />
<pre><br />
# cpan2rpm Authen::Passphrase<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Authen-Passphrase-0.005-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Fax::Hylafax::Client (Optional)<br />
<br />
Skip the tests here as well, unless you happen to have a properly configured HylaFAX server handy.<br />
Or, skip the package entirely if you don't plan on sending FAX invoices.<br />
<br />
<pre><br />
# cpan2rpm --make-no-test Fax::Hylafax::Client<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Fax-Hylafax-Client-1.02-1.noarch.rpm<br />
</pre><br />
<br />
==== RT Prereqs ====<br />
<br />
{| border="1"<br />
|-<br />
|*Perl Module*||*Package*||*Version*||*Repo*<br />
|-<br />
|Apache::Session||perl-Apache-Session||1.81-1.el4.rf||dries<br />
|-<br />
|HTML-Format||perl-HTML-Format||2.04-1.2.el4.rf||dries<br />
|-<br />
|Class::ReturnValue||perl-Class-ReturnValue||0.53-1.2.el4.rf||dries<br />
|-<br />
|DBIx::SearchBuilder||perl-DBIx-SearchBuilder||1.43-1.el4.rf||rpmforge<br />
|-<br />
|Log::Dispatch||perl-Log-Dispatch||2.11-1.2.el4.rf||rpmforge<br />
|-<br />
|Locale::Maketext::Lexicon||perl-Locale-Maketext-Lexicon||0.62-1.el4.rf||dries<br />
|-<br />
|Locale::Maketext::Fuzzy||perl-Locale-Maketext-Fuzzy||0.02-1.2.el4.rf||dries<br />
|-<br />
|Text::Wrapper||perl-Text-Wrapper||1.000-1.2.el4.rf||dries<br />
|-<br />
|Time-modules||perl-Time-modules||2003.1126-1.2.el4.rf||dries<br />
|-<br />
|Text::Autoformat||perl-Text-Autoformat||1.13-1.2.el4.rf||dries<br />
|-<br />
|Text::Quoted||perl-Text-Quoted||1.8-1.2.el4.rf||dries<br />
|-<br />
|Regexp::Common||perl-Regexp-Common||2.120-1.2.el4.rf||dries<br />
|-<br />
|HTML::Scrubber||perl-HTML-Scrubber||0.08-1.2.el4.rf||dries<br />
|-<br />
|Tree::Simple||perl-Tree-Simple||1.17-1.el4.rf||dries<br />
|-<br />
|HTML::TreeBuilder||perl-HTML-Tree||3.23-1.el4.rf||dries<br />
<br />
|}<br />
<br />
<pre><br />
# yum -y install perl-Apache-Session perl-HTML-Format perl-Class-ReturnValue<br />
# yum -y install perl-Locale-Maketext-Lexicon perl-Locale-Maketext-Fuzzy<br />
# yum -y install perl-Text-Wrapper perl-Time-modules<br />
# yum -y install perl-Text-Autoformat perl-Text-Quoted perl-Regexp-Common<br />
# yum -y install perl-HTML-Scrubber perl-Tree-Simple perl-HTML-Tree<br />
</pre><br />
<br />
* Log::Dispatch<br />
<br />
Use the SRPM from Fedora Core 5. They have the correct and properly patched version that supports mod_perl 2.<br />
<br />
But first, a couple of prereqs.<br />
<br />
<pre><br />
# yum -y install perl-File-Find-Rule perl-IO-String<br />
# yum -y install perl-MIME-Lite perl-Mail-Sender perl-Mail-Sendmail<br />
</pre><br />
<br />
Now build and install Log::Dispatch itself. (There seems to be another rpm too, but it need Apache::Log)<br />
<br />
<pre><br />
# wget -O /usr/src/redhat/SRPMS/perl-Log-Dispatch-2.15-2.fc5.src.rpm http://download.fedora.redhat.com/pub/fedora/linux/extras/5/SRPMS/perl-Log-Dispatch-2.15-2.fc5.src.rpm<br />
<br />
# rpmbuild --rebuild /usr/src/redhat/SRPMS/perl-Log-Dispatch-2.15-2.src.rpm<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Log-Dispatch-2.15-2.noarch.rpm<br />
</pre><br />
<br />
* DBIx::SearchBuilder<br />
<br />
DBIx::searchBuilder is a little painful to install because it requires DBD::Oracle. You can just run "yum install perl-DBIx-SearchBuilder" if you want to go through the trouble of building and installing DBD::Oracle first. Again, that can be rather painful and isn't within the scope of this guide.<br />
<br />
The alternative below is to force install the RPM for DBIx::SearchBuilder since we're not going to use Oracle anyway. You have to exclude it from future updates in yum otherwise you'll get dep failures everytime you do a "yum upgrade".<br />
<br />
If you're not going to use RT, just skip DBIx::SearchBuilder altogether.<br />
<br />
<pre><br />
# yum -y install perl-Want perl-Clone perl-Cache-Simple-TimedExpiry<br />
# yum -y install perl-DBD-SQLite perl-capitalization perl-Class-Accessor<br />
<br />
# rpm -ivh --nodeps http://apt.sw.be/redhat/el4/en/${BASEARCH}/dag/RPMS/perl-DBIx-SearchBuilder-1.43-1.el4.rf.noarch.rpm<br />
<br />
# echo "exclude=perl-DBIx-SearchBuilder" >> /etc/yum.conf<br />
</pre><br />
<br />
== System configuration ==<br />
<br />
This is just following the directions with CentOS-specific commands.<br />
<br />
<pre><br />
# groupadd freeside<br />
# useradd -g freeside freeside<br />
</pre><br />
<br />
With CentOS 4.4, postgresql wouldn't start if SELinux was enabled. We call "setenforce 0" here to temporarily disable it. Some claim that it only needs to be disabled the first time postgresql is started.<br />
<br />
Enable postgresql at startup, disable selinux temporarily, and start postgresql.<br />
<br />
<pre><br />
# chkconfig postgresql on<br />
# setenfore 0<br />
# service postgresql start<br />
</pre><br />
<br />
Create the freeside datbase user for postgresql.<br />
<br />
<pre><br />
# su -c "createuser -P freeside" - postgres<br />
</pre><br />
<br />
== Installing Freeside ==<br />
<br />
su to the freeside user, extract a copy of the freeside tarball or check out the code from CVS into the freeside user's home directory. You should have the freeside top-level Makefile in /home/freeside/freeside/Makefile or /home/freeside/freeside-1.7.0/Makefile at this point. 1.7.0 wasn't officially released at the time of writing, so we're using a version checked-out from CVS.<br />
<br />
Edit freeside's top-level Makefile with your configuration. Here are some examples...<br />
<br />
<pre><br />
FREESIDE_CONF = /etc/freeside<br />
FREESIDE_LOG = /var/log/freeside<br />
FREESIDE_LOCK = /var/lib/freeside<br />
FREESIDE_CACHE = /var/lib/freeside<br />
FREESIDE_EXPORT = /var/lib/freeside<br />
<br />
APACHE_VERSION = 2<br />
FREESIDE_DOCUMENT_ROOT = /var/www/freeside/html<br />
<br />
INIT_FILE = /etc/init.d/freeside<br />
INIT_INSTALL = /sbin/chkconfig freeside on<br />
<br />
HTTPD_RESTART = /etc/init.d/httpd restart<br />
APACHE_CONF = /etc/httpd-freeside/conf.d<br />
</pre><br />
<br />
As the freeside user, create the database and make the perl modules.<br />
<br />
<pre><br />
$ createdb -E sql_ascii freeside<br />
<br />
$ make perl-modules<br />
</pre><br />
<br />
As root, install the perl modules and create the initial config.<br />
<br />
<pre><br />
# make install-perl-modules<br />
<br />
# mkdir -m 770 /var/lib/freeside<br />
# chown -R freeside:root /var/lib/freeside/<br />
# make create-config<br />
</pre><br />
<br />
== Apache Configuration ==<br />
<br />
=== Creating Freeside's Apache Instance ===<br />
<br />
The default Apache init script for CentOS doesn't make it very easy to setup multiple instances of Apache. A few small modifications take care of that problem.<br />
<br />
Start by making a copy of the init script, as well as download the patch and apply it to your httpd-freeside init script. You can make a symlink if you'd like to eventually setup additional Apache instances.<br />
<br />
<pre><br />
# ln -s /etc/init.d/httpd /etc/init.d/httpd-freeside<br />
<br />
# cd /etc/init.d/<br />
# wget -O /tmp/httpd-freeside.patch http://users.fire2wire.com/~khoff/freeside/1.7.0/httpd-freeside.patch<br />
# patch < /tmp/httpd-freeside.patch<br />
</pre><br />
<br />
Make a copy of the Apache server root.<br />
<br />
<pre><br />
# cp -av /etc/httpd /etc/httpd-freeside<br />
</pre><br />
<br />
You can remove any extra conf files from /etc/httpd-freeside/conf.d (webdav, php, etc.) if you're not using them. They'll only take up more memory and potentially make freeside slower.<br />
<br />
=== /etc/httpd-freeside/conf/httpd.conf ===<br />
<br />
Change the following Apache configuration directives in /etc/httpd-freeside/conf/httpd.conf to match our previous changes.<br />
<br />
* ServerRoot "/etc/httpd-freeside"<br />
* PidFile run/httpd-freeside.pid<br />
<br />
We're changing the listening port in case you're using the default Apache configuration (and port) for something else. This can be remedied by binding to a specific IP address as well (eg. 192.168.0.2:80).<br />
<br />
* Listen 8080<br />
<br />
Freeside's instance of Apache needs to run as the freeside user and group.<br />
<br />
* User freeside<br />
* Group freeside<br />
<br />
* DocumentRoot "/var/www/freeside/html"<br />
<br />
* &lt;Directory "/var/www/freeside/html"&gt;<br />
<br />
* ErrorLog logs/freeside_error_log<br />
* CustomLog logs/freeside_access_log combined<br />
<br />
<br />
=== Install Docs and Freeside's Apache Includes ===<br />
<br />
Inside the freeside source directory, run "make install-docs" and "make install-apache" as root.<br />
<br />
<pre><br />
# make install-docs<br />
# make install-apache<br />
</pre><br />
<br />
Edit the config file that was just created (/etc/httpd-freeside/conf.d/freeside-base2.conf) by "make install-apache" and change the AuthUserFile directive to match our new path.<br />
<br />
* AuthUserFile /etc/freeside/htpasswd<br />
<br />
<br />
== Populating the Database ==<br />
<br />
Populate the freeside database with the initial data, as the freeside user.<br />
<br />
<pre><br />
$ freeside-setup -d example.com<br />
</pre><br />
<br />
Create the freeside system users, as the freeside user.<br />
<br />
<pre><br />
$ freeside-adduser -g 1 fs_queue<br />
$ freeside-adduser -g 1 fs_daily<br />
$ freeside-adduser -g 1 fs_selfservice<br />
</pre><br />
<br />
Create whatever other freeside users you want, again, as the freeside user.<br />
<br />
<pre><br />
freeside-adduser -g 1 username<br />
htpasswd /etc/freeside/htpasswd username<br />
</pre><br />
<br />
Repeat the last two commands as many times as you want for your internal staff's freeside accounts.<br />
<br />
== Startup Configuration ==<br />
<br />
We just need to make sure that our new instance of Apache and the freeside queue daemon start when we boot.<br />
<br />
<pre><br />
# make install-init<br />
<br />
# chkconfig freeside on<br />
# chkconfig httpd-freeside on<br />
</pre><br />
<br />
And last but not least...start freeside's Apache instance.<br />
<br />
<pre><br />
# service httpd-freeside start<br />
</pre><br />
<br />
Hopefully, Apache should start without errors. If you do get errors, check /var/log/httpd/freeside_error_log.<br />
<br />
Assuming Apache started correctly, you should now be able to access freeside via http://&lt;Your server's FQDN or IP&gt;:8080/. You can login using the username and password you set earlier with htpasswd.<br />
<br />
From here, consult the standard freeside install documentation in the wiki on how to proceed with initial configuration. Good luck!<br />
<br />
== Problems ==<br />
<br />
There might be some formatting issues as this was converted from TWiki to MediaWiki markup. If the syntax of a command doesn't look correct or doesn't make sense, it probably didn't get escaped correctly, or your web browser gobbled up some angle brackets, or both!</div>
Khoff
http://www.freeside.biz/mediawiki/index.php?title=Freeside:1.7:Documentation:InstallingOnCentOS4&diff=2349
Freeside:1.7:Documentation:InstallingOnCentOS4
2007-07-25T19:06:24Z
<p>Khoff: /* Perl Packages */</p>
<hr />
<div>= Installing Freeside 1.7.x on CentOS 4.4 =<br />
<br />
This is a (hopefully) step-by-step guide for doing a basic installation of Freeside on CentOS 4.4 using RPMs whenever possible. It would probably be easier to use CPAN directly in some cases, but that wouldn't be very fun now would it?<br />
<br />
== Software Installation ==<br />
<br />
Run the correct command below depending on your architecture.<br />
<br />
<pre><br />
# export BASEARCH=i386<br />
</pre><br />
...or...<br />
<pre><br />
# export BASEARCH=x86_64<br />
</pre><br />
<br />
=== Binary Packages ===<br />
{| border="1"<br />
|-<br />
|*Package*||*Repo*||*Version*<br />
|-<br />
|httpd||base||2.0.52-28.ent.centos4<br />
|-<br />
|postgresql-server||update||7.4.16-1.RHEL4.1<br />
|-<br />
|tetex||base||2.0.2-22.EL4.7<br />
|-<br />
|ghostscript||base||7.07-33<br />
|-<br />
|perl||centosplus||4:5.8.8-4.el4s1<br />
|-<br />
|gcc||base||3.4.6-8<br />
<br />
|}<br />
<br />
<pre><br />
# yum install httpd postgresql-server tetex ghostscript.$BASEARCH<br />
</pre><br />
<br />
Upgrade to perl 5.8.8 to get CGI >= 3.08.<br />
<br />
<pre><br />
# yum --enablerepo=centosplus upgrade perl<br />
</pre><br />
<br />
Next install the gcc complier<br />
<br />
<pre><br />
# yum install gcc<br />
</pre><br />
<br />
=== Perl Packages ===<br />
<br />
Setup 3rd party repos for most of the extra perl modules.<br />
<br />
<pre><br />
# wget -O /tmp/rpmforge-release-0.3.6-1.el4.rf.$BASEARCH.rpm http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.$BASEARCH.rpm<br />
# rpm -ivh /tmp/rpmforge-release-0.3.6-1.el4.rf.$BASEARCH.rpm<br />
# rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt<br />
<br />
# cat &lt;&lt;END&gt;/etc/yum.repos.d/dries.repo<br />
[dries]<br />
name=Extra Fedora rpms dries - \$releasever - \$basearch<br />
baseurl=http://ftp.belnet.be/packages/dries.ulyssis.org/redhat/el\$releasever/en/\$basearch/dries/RPMS<br />
END<br />
# rpm --import http://dries.ulyssis.org/rpm/RPM-GPG-KEY.dries.txt<br />
</pre><br />
<br />
Install the cpan2rpm tool so we can build RPMs from CPAN packages.<br />
<br />
<pre><br />
# rpm --import http://perl.arix.com/cpan2rpm/gpg.pub.asc<br />
# yum install rpm-build perl-Module-Build<br />
# rpm -ivh http://superb-east.dl.sourceforge.net/sourceforge/cpan2rpm/cpan2rpm-2.027-1.noarch.rpm<br />
</pre><br />
<br />
==== mod_perl2 ====<br />
<br />
Grab mod_perl 2.03 from the centosplus repo.<br />
<br />
<pre><br />
# yum --enablerepo=centosplus install mod_perl<br />
</pre><br />
<br />
<br />
==== Freeside Prereqs ====<br />
{| border="1"<br />
|-<br />
|*Perl Module*||*Package*||*Version*||*Repo*<br />
|-<br />
|libnet||libnet||1.1.2.1-2.rf||extras<br />
|-<br />
|libwww-perl||perl-libwww-perl.noarch||5.79-5||base<br />
|-<br />
|URI||perl-URI.noarch||1.30-4||base<br />
|-<br />
|HTML::Tagset||perl-HTML-Tagset.noarch||3.03-30||base<br />
|-<br />
|HTML::Parser||perl-HTML-Parser||3.35-6||base<br />
|-<br />
|DBI||perl-DBI||1.40-8||base<br />
|-<br />
|DBD::MySQL||perl-DBD-MySQL||2.9004-3.1||base<br />
|-<br />
|MailTools||perl-MailTools.noarch||1.74-1.c4||extras<br />
|-<br />
|TimeDate||perl-TimeDate.noarch||1.16-1.c4||extras<br />
|-<br />
|Date::Manip||perl-DateManip.noarch||5.42a-3||base<br />
|-<br />
|HTML::Mason||perl-HTML-Mason||1.3200-1.el4.rf||rpmforge<br />
|-<br />
|Text::Template||perl-Text-Template||1.44-1.2.el4.rf||dries<br />
|-<br />
|DateTime||perl-DateTime||0.2901-1.2.el4.rf||rpmforge<br />
|-<br />
|Chart||perl-Chart||2.4.1-1.el4.rf||dries<br />
|-<br />
|Cache::Cache||perl-Cache-Cache||1.05-1.el4.rf||dries<br />
|-<br />
|NetAddr::IP||perl-NetAddr-IP||4.004-1.el4.rf||rpmforge<br />
|-<br />
|String::Approx||perl-String-Approx||3.26-1.el4.rf||dries<br />
|-<br />
|Locale::SubCountry||perl-Locale-SubCountry||1.38-1.el4.rf||dries<br />
|-<br />
|Term::ReadKey||perl-Term-ReadKey||2.30-2.2.el4.rf||dries<br />
|-<br />
|DateTime::Format::Strptime||perl-DateTime-Format-Strptime||1.0700-1.2.el4.rf||dries<br />
|-<br />
|Net::Whois::Raw||perl-Net-Whois-Raw||1.20-1.el4.rf||dries<br />
|-<br />
|DBIx::DBSchema||perl-DBIx-DBSchema||0.31-1.el4.rf||dries<br />
|-<br />
|Tie::IxHash||perl-Tie-IxHash||1.21-1.2.el4.rf||dries<br />
|-<br />
|Crypt::PasswdMD5||perl-Crypt-PasswdMD5||1.3-1.2.el4.rf||dries<br />
|-<br />
|File::CounterFile||perl-File-CounterFile||1.04-1.2.el4.rf||dries<br />
|-<br />
|IPC::Run3||perl-IPC-Run3||0.036-1.el4.rf||dries<br />
|-<br />
|Net::SSH||perl-Net-SSH||0.08-1.2.el4.rf||dries<br />
|-<br />
|String::ShellQuote||perl-String-ShellQuote||1.03-2.2.el4.rf||dries<br />
|-<br />
|JSON||perl-JSON||1.07-1.el4.rf||dries<br />
|-<br />
|Data::Table||perl-Data-Table||1.50-1.el4.rf||dries<br />
|-<br />
|Lingua::EN::NameParse||perl-Lingua-EN-NameParse||1.22-2.2.el4.rf||dries<br />
|-<br />
|Lingua::EN::Inflect||perl-Lingua-EN-Inflect||1.89-1.2.el4.rf||dries<br />
|-<br />
|Apache::DBI||perl-Apache-DBI||0.9901-2.2.el4.rf||dries<br />
|-<br />
|IO::Scalar||perl-IO-stringy||2.110-1.2.el4.rf||dries<br />
|-<br />
|Text::CSV_XS||perl-Text-CSV_XS||0.23-1.2.el4.rf||dries<br />
|-<br />
|Spreadsheet::WriteExcel||perl-Spreadsheet-WriteExcel||2.17-1.el4.rf||dries<br />
|-<br />
|MIME-tools||perl-MIME-tools||5.420-1.el4.rf||dries<br />
|-<br />
|Date::Manip||perl-DateManip||5.42a-3||base<br />
|-<br />
|Crypt::DES||perl-Crypt-DES||2.05-3.2.el4.rf||dries<br />
|-<br />
|Crypt::Blowfish||perl-Crypt-Blowfish||2.10-1.2.el4.rf||dries<br />
|-<br />
|Digest::MD4||perl-Digest-MD4||1.5-1.2.el4.rf||dries<br />
|-<br />
|Crypt::Rijndael||perl-Crypt-Rijndael||0.05-1.2.el4.rf||dries<br />
|-<br />
|ExtUtils::CBuilder||perl-ExtUtils-CBuilder||0.18-1.el4.rf||dries<br />
|-<br />
|DBD::Pg||perl-DBD-Pg||1.49-1.el4s1||centosplus<br />
|-<br />
|Locale-Codes|| | ||cpan2rpm<br />
|-<br />
|Frontier::RPC2|| | ||cpan2rpm<br />
|-<br />
|Business::CreditCard|| | ||cpan2rpm<br />
|-<br />
|Time::Duration|| | ||cpan2rpm<br />
|-<br />
|HTML::Widgets::SelectLayers|| | ||cpan2rpm<br />
|-<br />
|Color::Scheme|| | ||cpan2rpm<br />
|-<br />
|Params::Classify||||cpan2rpm<br />
|-<br />
|Scalar::Number||||cpan2rpm<br />
|-<br />
|Data::Integer||||cpan2rpm<br />
|-<br />
|Data::Float||||cpan2rpm<br />
|-<br />
|Module::Runtime||||cpan2rpm<br />
|-<br />
|Authen::DecHpwd||||cpan2rpm<br />
|-<br />
|Authen::Passphrase||||cpan2rpm<br />
|-<br />
|Data::Entropy::Algorithms||||cpan2rpm<br />
|-<br />
|Crypt::MySQL||||cpan2rpm<br />
|-<br />
|Crypt::Eksblowfish||||cpan2rpm<br />
|-<br />
|Crypt::UnixCrypt_XS||||cpan2rpm<br />
|-<br />
|Fax::Hylafax::Client||||cpan2rpm<br />
|}<br />
<br />
<pre><br />
# yum -y install libnet perl-libwww-perl perl-URI perl-HTML-Tagset<br />
# yum -y install perl-HTML-Parser <br />
# yum -y install perl-MailTools perl-TimeDate<br />
# yum -y install perl-HTML-Mason perl-Text-Template perl-DateTime perl-Chart<br />
# yum -y install perl-Cache-Cache perl-NetAddr-IP perl-String-Approx<br />
# yum -y install perl-Locale-SubCountry perl-Term-ReadKey<br />
# yum -y install perl-DateTime-Format-Strptime perl-Net-Whois-Raw<br />
# yum -y install perl-Tie-IxHash perl-Crypt-PasswdMD5<br />
# yum -y install perl-File-CounterFile perl-IPC-Run3 perl-Net-SSH<br />
# yum -y install perl-String-ShellQuote perl-JSON perl-Data-Table<br />
# yum -y install perl-Lingua-EN-NameParse perl-Lingua-EN-Inflect<br />
# yum -y install perl-IO-stringy perl-Text-CSV_XS perl-Spreadsheet-WriteExcel<br />
# yum -y install perl-MIME-tools perl-DateManip<br />
# yum -y install perl-DBI perl-DBD-MySQL perl-Apache-DBI <br />
# yum -y install --enablerepo=centosplus perl-DBD-Pg<br />
# yum -y install perl-Crypt-DES perl-Crypt-Blowfish perl-Digest-MD4<br />
# yum -y install perl-Crypt-Rijndael perl-ExtUtils-CBuilder<br />
</pre><br />
<br />
You can install these using cpan, or follow the directions here using cpan2rpm.<br />
<br />
* DBIx::DBSchema<br />
<br />
<pre><br />
# yum -y install perl-DBIx-DBSchema<br />
</pre><br />
<br />
* Frontier::RPC2<br />
<br />
<pre><br />
# yum -y install perl-XML-Parser<br />
# cpan2rpm --author='Ken MacLeod &lt;ken@bitsko.slc.ut.us&gt;' --version='0.07b4' Frontier-RPC<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Frontier-RPC-0.07b4-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Business::CreditCard<br />
<br />
<pre><br />
# cpan2rpm Business::CreditCard<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Business-CreditCard-0.30-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Time::Duration<br />
<br />
<pre><br />
# yum -y install perl-Test-Pod perl-Test-Pod-Coverage<br />
# cpan2rpm Time::Duration<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Time-Duration-1.04-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* HTML::Widgets::SelectLayers<br />
<br />
<pre><br />
# cpan2rpm http://search.cpan.org/CPAN/authors/id/I/IV/IVAN/HTML-Widgets-SelectLayers-0.07.tar.gz<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-HTML-Widgets-SelectLayers-0.07-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Color::Scheme<br />
<br />
Ran into much brokenness when trying to build Test-Simple-0.67. Just skip the dep checks and test phase and hope. I mean, come on, it's Color::Scheme for crying out loud!<br />
<br />
<pre><br />
# yum -y install perl-Test-Differences<br />
# cpan2rpm --make-no-test --no-depchk Color::Scheme<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Color-Scheme-1.02-1.noarch.rpm<br />
</pre><br />
<br />
* Params::Classify<br />
<br />
Install some deps first...<br />
<br />
** Scalar::Number<br />
<br />
*** Data::Integer<br />
<pre><br />
# cpan2rpm Data::Integer<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Integer-0.001-1.noarch.rpm<br />
</pre><br />
<br />
*** Data::Float<br />
<pre><br />
# cpan2rpm Data::Float<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Float-0.005-1.noarch.rpm<br />
</pre><br />
<br />
<pre><br />
# cpan2rpm Scalar::Number<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Scalar-Number-0.001-1.noarch.rpm<br />
<br />
# cpan2rpm Params::Classify<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Params-Classify-0.002-1.noarch.rpm<br />
</pre><br />
<br />
* Module::Runtime<br />
<pre><br />
# cpan2rpm Module::Runtime<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Module-Runtime-0.003-1.noarch.rpm<br />
</pre><br />
<br />
* Authen::DecHpwd<br />
<pre><br />
# cpan2rpm Authen::DecHpwd<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Authen-DecHpwd-2.001-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Data::Entropy::Algorithms<br />
<pre><br />
# cpan2rpm --make-no-test Data::Entropy<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Entropy-0.003-1.noarch.rpm<br />
</pre><br />
<br />
* Crypt::MySQL<br />
<pre><br />
# cpan2rpm --version='0.04' --author='IKEBE Tomohiro <ikebe@shebang.jp>' Crypt::MySQL<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Crypt-MySQL-0.04-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Crypt::Eksblowfish<br />
<pre><br />
# cpan2rpm Crypt::Eksblowfish<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Crypt-Eksblowfish-0.001-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Crypt::UnixCrypt_XS<br />
<pre><br />
# cpan2rpm Crypt::UnixCrypt_XS<br />
# rpm -ivh /usr/src/redhat/RPMS/i386/perl-Crypt-UnixCrypt_XS-0.06-1.i386.rpm<br />
</pre><br />
<br />
* Authen::Passphrase<br />
<pre><br />
# cpan2rpm Authen::Passphrase<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Authen-Passphrase-0.005-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Fax::Hylafax::Client (Optional)<br />
<br />
Skip the tests here as well, unless you happen to have a properly configured HylaFAX server handy.<br />
Or, skip the package entirely if you don't plan on sending FAX invoices.<br />
<br />
<pre><br />
# cpan2rpm --make-no-test Fax::Hylafax::Client<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Fax-Hylafax-Client-1.02-1.noarch.rpm<br />
</pre><br />
<br />
==== RT Prereqs ====<br />
<br />
{| border="1"<br />
|-<br />
|*Perl Module*||*Package*||*Version*||*Repo*<br />
|-<br />
|Apache::Session||perl-Apache-Session||1.81-1.el4.rf||dries<br />
|-<br />
|HTML-Format||perl-HTML-Format||2.04-1.2.el4.rf||dries<br />
|-<br />
|Class::ReturnValue||perl-Class-ReturnValue||0.53-1.2.el4.rf||dries<br />
|-<br />
|DBIx::SearchBuilder||perl-DBIx-SearchBuilder||1.43-1.el4.rf||rpmforge<br />
|-<br />
|Log::Dispatch||perl-Log-Dispatch||2.11-1.2.el4.rf||rpmforge<br />
|-<br />
|Locale::Maketext::Lexicon||perl-Locale-Maketext-Lexicon||0.62-1.el4.rf||dries<br />
|-<br />
|Locale::Maketext::Fuzzy||perl-Locale-Maketext-Fuzzy||0.02-1.2.el4.rf||dries<br />
|-<br />
|Text::Wrapper||perl-Text-Wrapper||1.000-1.2.el4.rf||dries<br />
|-<br />
|Time-modules||perl-Time-modules||2003.1126-1.2.el4.rf||dries<br />
|-<br />
|Text::Autoformat||perl-Text-Autoformat||1.13-1.2.el4.rf||dries<br />
|-<br />
|Text::Quoted||perl-Text-Quoted||1.8-1.2.el4.rf||dries<br />
|-<br />
|Regexp::Common||perl-Regexp-Common||2.120-1.2.el4.rf||dries<br />
|-<br />
|HTML::Scrubber||perl-HTML-Scrubber||0.08-1.2.el4.rf||dries<br />
|-<br />
|Tree::Simple||perl-Tree-Simple||1.17-1.el4.rf||dries<br />
|-<br />
|HTML::TreeBuilder||perl-HTML-Tree||3.23-1.el4.rf||dries<br />
<br />
|}<br />
<br />
<pre><br />
# yum -y install perl-Apache-Session perl-HTML-Format perl-Class-ReturnValue<br />
# yum -y install perl-Locale-Maketext-Lexicon perl-Locale-Maketext-Fuzzy<br />
# yum -y install perl-Text-Wrapper perl-Time-modules<br />
# yum -y install perl-Text-Autoformat perl-Text-Quoted perl-Regexp-Common<br />
# yum -y install perl-HTML-Scrubber perl-Tree-Simple perl-HTML-Tree<br />
</pre><br />
<br />
* Log::Dispatch<br />
<br />
Use the SRPM from Fedora Core 5. They have the correct and properly patched version that supports mod_perl 2.<br />
<br />
But first, a couple of prereqs.<br />
<br />
<pre><br />
# yum -y install perl-File-Find-Rule perl-IO-String<br />
# yum -y install perl-MIME-Lite perl-Mail-Sender perl-Mail-Sendmail<br />
</pre><br />
<br />
Now build and install Log::Dispatch itself. (There seems to be another rpm too, but it need Apache::Log)<br />
<br />
<pre><br />
# wget -O /usr/src/redhat/SRPMS/perl-Log-Dispatch-2.15-2.fc5.src.rpm http://download.fedora.redhat.com/pub/fedora/linux/extras/5/SRPMS/perl-Log-Dispatch-2.15-2.fc5.src.rpm<br />
<br />
# rpmbuild --rebuild /usr/src/redhat/SRPMS/perl-Log-Dispatch-2.15-2.src.rpm<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Log-Dispatch-2.15-2.noarch.rpm<br />
</pre><br />
<br />
* DBIx::SearchBuilder<br />
<br />
DBIx::searchBuilder is a little painful to install because it requires DBD::Oracle. You can just run "yum install perl-DBIx-SearchBuilder" if you want to go through the trouble of building and installing DBD::Oracle first. Again, that can be rather painful and isn't within the scope of this guide.<br />
<br />
The alternative below is to force install the RPM for DBIx::SearchBuilder since we're not going to use Oracle anyway. You have to exclude it from future updates in yum otherwise you'll get dep failures everytime you do a "yum upgrade".<br />
<br />
If you're not going to use RT, just skip DBIx::SearchBuilder altogether.<br />
<br />
<pre><br />
# yum -y install perl-Want perl-Clone perl-Cache-Simple-TimedExpiry<br />
# yum -y install perl-DBD-SQLite perl-capitalization perl-Class-Accessor<br />
<br />
# rpm -ivh --nodeps http://apt.sw.be/redhat/el4/en/${BASEARCH}/dag/RPMS/perl-DBIx-SearchBuilder-1.43-1.el4.rf.noarch.rpm<br />
<br />
# echo "exclude=perl-DBIx-SearchBuilder" >> /etc/yum.conf<br />
</pre><br />
<br />
== System configuration ==<br />
<br />
This is just following the directions with CentOS-specific commands.<br />
<br />
<pre><br />
# groupadd freeside<br />
# useradd -g freeside freeside<br />
</pre><br />
<br />
With CentOS 4.4, postgresql wouldn't start if SELinux was enabled. We call "setenforce 0" here to temporarily disable it. Some claim that it only needs to be disabled the first time postgresql is started.<br />
<br />
Enable postgresql at startup, disable selinux temporarily, and start postgresql.<br />
<br />
<pre><br />
# chkconfig postgresql on<br />
# setenfore 0<br />
# service postgresql start<br />
</pre><br />
<br />
Create the freeside datbase user for postgresql.<br />
<br />
<pre><br />
# su -c "createuser -P freeside" - postgres<br />
</pre><br />
<br />
== Installing Freeside ==<br />
<br />
su to the freeside user, extract a copy of the freeside tarball or check out the code from CVS into the freeside user's home directory. You should have the freeside top-level Makefile in /home/freeside/freeside/Makefile or /home/freeside/freeside-1.7.0/Makefile at this point. 1.7.0 wasn't officially released at the time of writing, so we're using a version checked-out from CVS.<br />
<br />
Edit freeside's top-level Makefile with your configuration. Here are some examples...<br />
<br />
<pre><br />
FREESIDE_CONF = /etc/freeside<br />
FREESIDE_LOG = /var/log/freeside<br />
FREESIDE_LOCK = /var/lib/freeside<br />
FREESIDE_CACHE = /var/lib/freeside<br />
FREESIDE_EXPORT = /var/lib/freeside<br />
<br />
APACHE_VERSION = 2<br />
FREESIDE_DOCUMENT_ROOT = /var/www/freeside/html<br />
<br />
INIT_FILE = /etc/init.d/freeside<br />
INIT_INSTALL = /sbin/chkconfig freeside on<br />
<br />
HTTPD_RESTART = /etc/init.d/httpd restart<br />
APACHE_CONF = /etc/httpd-freeside/conf.d<br />
</pre><br />
<br />
As the freeside user, create the database and make the perl modules.<br />
<br />
<pre><br />
$ createdb -E sql_ascii freeside<br />
<br />
$ make perl-modules<br />
</pre><br />
<br />
As root, install the perl modules and create the initial config.<br />
<br />
<pre><br />
# make install-perl-modules<br />
<br />
# mkdir -m 770 /var/lib/freeside<br />
# chown -R freeside:root /var/lib/freeside/<br />
# make create-config<br />
</pre><br />
<br />
== Apache Configuration ==<br />
<br />
=== Creating Freeside's Apache Instance ===<br />
<br />
The default Apache init script for CentOS doesn't make it very easy to setup multiple instances of Apache. A few small modifications take care of that problem.<br />
<br />
Start by making a copy of the init script, as well as download the patch and apply it to your httpd-freeside init script. You can make a symlink if you'd like to eventually setup additional Apache instances.<br />
<br />
<pre><br />
# ln -s /etc/init.d/httpd /etc/init.d/httpd-freeside<br />
<br />
# cd /etc/init.d/<br />
# wget -O /tmp/httpd-freeside.patch http://users.fire2wire.com/~khoff/freeside/1.7.0/httpd-freeside.patch<br />
# patch < /tmp/httpd-freeside.patch<br />
</pre><br />
<br />
Make a copy of the Apache server root.<br />
<br />
<pre><br />
# cp -av /etc/httpd /etc/httpd-freeside<br />
</pre><br />
<br />
You can remove any extra conf files from /etc/httpd-freeside/conf.d (webdav, php, etc.) if you're not using them. They'll only take up more memory and potentially make freeside slower.<br />
<br />
=== /etc/httpd-freeside/conf/httpd.conf ===<br />
<br />
Change the following Apache configuration directives in /etc/httpd-freeside/conf/httpd.conf to match our previous changes.<br />
<br />
* ServerRoot "/etc/httpd-freeside"<br />
* PidFile run/httpd-freeside.pid<br />
<br />
We're changing the listening port in case you're using the default Apache configuration (and port) for something else. This can be remedied by binding to a specific IP address as well (eg. 192.168.0.2:80).<br />
<br />
* Listen 8080<br />
<br />
Freeside's instance of Apache needs to run as the freeside user and group.<br />
<br />
* User freeside<br />
* Group freeside<br />
<br />
* DocumentRoot "/var/www/freeside/html"<br />
<br />
* &lt;Directory "/var/www/freeside/html"&gt;<br />
<br />
* ErrorLog logs/freeside_error_log<br />
* CustomLog logs/freeside_access_log combined<br />
<br />
<br />
=== Install Docs and Freeside's Apache Includes ===<br />
<br />
Inside the freeside source directory, run "make install-docs" and "make install-apache" as root.<br />
<br />
<pre><br />
# make install-docs<br />
# make install-apache<br />
</pre><br />
<br />
Edit the config file that was just created (/etc/httpd-freeside/conf.d/freeside-base2.conf) by "make install-apache" and change the AuthUserFile directive to match our new path.<br />
<br />
* AuthUserFile /etc/freeside/htpasswd<br />
<br />
<br />
== Populating the Database ==<br />
<br />
Populate the freeside database with the initial data, as the freeside user.<br />
<br />
<pre><br />
$ freeside-setup -d example.com<br />
</pre><br />
<br />
Create the freeside system users, as the freeside user.<br />
<br />
<pre><br />
$ freeside-adduser -g 1 fs_queue<br />
$ freeside-adduser -g 1 fs_daily<br />
$ freeside-adduser -g 1 fs_selfservice<br />
</pre><br />
<br />
Create whatever other freeside users you want, again, as the freeside user.<br />
<br />
<pre><br />
freeside-adduser -g 1 username<br />
htpasswd /etc/freeside/htpasswd username<br />
</pre><br />
<br />
Repeat the last two commands as many times as you want for your internal staff's freeside accounts.<br />
<br />
== Startup Configuration ==<br />
<br />
We just need to make sure that our new instance of Apache and the freeside queue daemon start when we boot.<br />
<br />
<pre><br />
# make install-init<br />
<br />
# chkconfig freeside on<br />
# chkconfig httpd-freeside on<br />
</pre><br />
<br />
And last but not least...start freeside's Apache instance.<br />
<br />
<pre><br />
# service httpd-freeside start<br />
</pre><br />
<br />
Hopefully, Apache should start without errors. If you do get errors, check /var/log/httpd/freeside_error_log.<br />
<br />
Assuming Apache started correctly, you should now be able to access freeside via http://&lt;Your server's FQDN or IP&gt;:8080/. You can login using the username and password you set earlier with htpasswd.<br />
<br />
From here, consult the standard freeside install documentation in the wiki on how to proceed with initial configuration. Good luck!<br />
<br />
== Problems ==<br />
<br />
There might be some formatting issues as this was converted from TWiki to MediaWiki markup. If the syntax of a command doesn't look correct or doesn't make sense, it probably didn't get escaped correctly, or your web browser gobbled up some angle brackets, or both!</div>
Khoff
http://www.freeside.biz/mediawiki/index.php?title=Freeside:1.7:Documentation:InstallingOnCentOS4&diff=1744
Freeside:1.7:Documentation:InstallingOnCentOS4
2007-03-05T22:19:45Z
<p>Khoff: </p>
<hr />
<div>= Installing Freeside 1.7.x on CentOS 4.4 =<br />
<br />
This is a (hopefully) step-by-step guide for doing a basic installation of Freeside on CentOS 4.4 using RPMs whenever possible. It would probably be easier to use CPAN directly in some cases, but that wouldn't be very fun now would it?<br />
<br />
== Software Installation ==<br />
<br />
Run the correct command below depending on your architecture.<br />
<br />
<pre><br />
# export BASEARCH=i386<br />
</pre><br />
...or...<br />
<pre><br />
# export BASEARCH=x86_64<br />
</pre><br />
<br />
=== Binary Packages ===<br />
{| border="1"<br />
|-<br />
|*Package*||*Repo*||*Version*<br />
|-<br />
|httpd||base||2.0.52-28.ent.centos4<br />
|-<br />
|postgresql-server||update||7.4.16-1.RHEL4.1<br />
|-<br />
|tetex||base||2.0.2-22.EL4.7<br />
|-<br />
|ghostscript||base||7.07-33<br />
|-<br />
|perl||centosplus||4:5.8.8-4.el4s1<br />
<br />
|}<br />
<br />
<pre><br />
# yum install httpd postgresql-server tetex ghostscript.$BASEARCH<br />
</pre><br />
<br />
Upgrade to perl 5.8.8 to get CGI >= 3.08.<br />
<br />
<pre><br />
# yum --enablerepo=centosplus upgrade perl<br />
</pre><br />
<br />
=== Perl Packages ===<br />
<br />
Setup 3rd party repos for most of the extra perl modules.<br />
<br />
<pre><br />
# rpm -ivh http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.$BASEARCH.rpm<br />
# rpm --import http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt<br />
<br />
# cat &lt;&lt;END&gt;/etc/yum.repos.d/dries.repo<br />
[dries]<br />
name=Extra Fedora rpms dries - \$releasever - \$basearch<br />
baseurl=http://ftp.belnet.be/packages/dries.ulyssis.org/redhat/el\$releasever/en/\$basearch/dries/RPMS<br />
END<br />
# rpm --import http://dries.ulyssis.org/rpm/RPM-GPG-KEY.dries.txt<br />
</pre><br />
<br />
Install the cpan2rpm tool so we can build RPMs from CPAN packages.<br />
<br />
<pre><br />
# rpm --import http://perl.arix.com/cpan2rpm/gpg.pub.asc<br />
# yum install rpm-build perl-Module-Build<br />
# rpm -ivh http://superb-east.dl.sourceforge.net/sourceforge/cpan2rpm/cpan2rpm-2.027-1.noarch.rpm<br />
</pre><br />
<br />
==== mod_perl2 ====<br />
<br />
Grab mod_perl 2.03 from the centosplus repo.<br />
<br />
<pre><br />
# yum --enablerepo=centosplus install mod_perl<br />
</pre><br />
<br />
<br />
==== Freeside Prereqs ====<br />
{| border="1"<br />
|-<br />
|*Perl Module*||*Package*||*Version*||*Repo*<br />
|-<br />
|libnet||libnet||1.1.2.1-2.rf||extras<br />
|-<br />
|libwww-perl||perl-libwww-perl.noarch||5.79-5||base<br />
|-<br />
|URI||perl-URI.noarch||1.30-4||base<br />
|-<br />
|HTML::Tagset||perl-HTML-Tagset.noarch||3.03-30||base<br />
|-<br />
|HTML::Parser||perl-HTML-Parser||3.35-6||base<br />
|-<br />
|DBI||perl-DBI||1.40-8||base<br />
|-<br />
|DBD::MySQL||perl-DBD-MySQL||2.9004-3.1||base<br />
|-<br />
|MailTools||perl-MailTools.noarch||1.74-1.c4||extras<br />
|-<br />
|TimeDate||perl-TimeDate.noarch||1.16-1.c4||extras<br />
|-<br />
|Date::Manip||perl-DateManip.noarch||5.42a-3||base<br />
|-<br />
|HTML::Mason||perl-HTML-Mason||1.3200-1.el4.rf||rpmforge<br />
|-<br />
|Text::Template||perl-Text-Template||1.44-1.2.el4.rf||dries<br />
|-<br />
|DateTime||perl-DateTime||0.2901-1.2.el4.rf||rpmforge<br />
|-<br />
|Chart||perl-Chart||2.4.1-1.el4.rf||dries<br />
|-<br />
|Cache::Cache||perl-Cache-Cache||1.05-1.el4.rf||dries<br />
|-<br />
|NetAddr::IP||perl-NetAddr-IP||4.004-1.el4.rf||rpmforge<br />
|-<br />
|String::Approx||perl-String-Approx||3.26-1.el4.rf||dries<br />
|-<br />
|Locale::SubCountry||perl-Locale-SubCountry||1.38-1.el4.rf||dries<br />
|-<br />
|Term::ReadKey||perl-Term-ReadKey||2.30-2.2.el4.rf||dries<br />
|-<br />
|DateTime::Format::Strptime||perl-DateTime-Format-Strptime||1.0700-1.2.el4.rf||dries<br />
|-<br />
|Net::Whois::Raw||perl-Net-Whois-Raw||1.20-1.el4.rf||dries<br />
|-<br />
|DBIx::DBSchema||perl-DBIx-DBSchema||0.31-1.el4.rf||dries<br />
|-<br />
|Tie::IxHash||perl-Tie-IxHash||1.21-1.2.el4.rf||dries<br />
|-<br />
|Crypt::PasswdMD5||perl-Crypt-PasswdMD5||1.3-1.2.el4.rf||dries<br />
|-<br />
|File::CounterFile||perl-File-CounterFile||1.04-1.2.el4.rf||dries<br />
|-<br />
|IPC::Run3||perl-IPC-Run3||0.036-1.el4.rf||dries<br />
|-<br />
|Net::SSH||perl-Net-SSH||0.08-1.2.el4.rf||dries<br />
|-<br />
|String::ShellQuote||perl-String-ShellQuote||1.03-2.2.el4.rf||dries<br />
|-<br />
|JSON||perl-JSON||1.07-1.el4.rf||dries<br />
|-<br />
|Data::Table||perl-Data-Table||1.50-1.el4.rf||dries<br />
|-<br />
|Lingua::EN::NameParse||perl-Lingua-EN-NameParse||1.22-2.2.el4.rf||dries<br />
|-<br />
|Lingua::EN::Inflect||perl-Lingua-EN-Inflect||1.89-1.2.el4.rf||dries<br />
|-<br />
|Apache::DBI||perl-Apache-DBI||0.9901-2.2.el4.rf||dries<br />
|-<br />
|IO::Scalar||perl-IO-stringy||2.110-1.2.el4.rf||dries<br />
|-<br />
|Text::CSV_XS||perl-Text-CSV_XS||0.23-1.2.el4.rf||dries<br />
|-<br />
|Spreadsheet::WriteExcel||perl-Spreadsheet-WriteExcel||2.17-1.el4.rf||dries<br />
|-<br />
|MIME-tools||perl-MIME-tools||5.420-1.el4.rf||dries<br />
|-<br />
|Date::Manip||perl-DateManip||5.42a-3||base<br />
|-<br />
|Crypt::DES||perl-Crypt-DES||2.05-3.2.el4.rf||dries<br />
|-<br />
|Crypt::Blowfish||perl-Crypt-Blowfish||2.10-1.2.el4.rf||dries<br />
|-<br />
|Digest::MD4||perl-Digest-MD4||1.5-1.2.el4.rf||dries<br />
|-<br />
|Crypt::Rijndael||perl-Crypt-Rijndael||0.05-1.2.el4.rf||dries<br />
|-<br />
|ExtUtils::CBuilder||perl-ExtUtils-CBuilder||0.18-1.el4.rf||dries<br />
|-<br />
|DBD::Pg||perl-DBD-Pg||1.49-1.el4s1||centosplus<br />
|-<br />
|Locale-Codes|| | ||cpan2rpm<br />
|-<br />
|Frontier::RPC2|| | ||cpan2rpm<br />
|-<br />
|Business::CreditCard|| | ||cpan2rpm<br />
|-<br />
|Time::Duration|| | ||cpan2rpm<br />
|-<br />
|HTML::Widgets::SelectLayers|| | ||cpan2rpm<br />
|-<br />
|Color::Scheme|| | ||cpan2rpm<br />
|-<br />
|Params::Classify||||cpan2rpm<br />
|-<br />
|Scalar::Number||||cpan2rpm<br />
|-<br />
|Data::Integer||||cpan2rpm<br />
|-<br />
|Data::Float||||cpan2rpm<br />
|-<br />
|Module::Runtime||||cpan2rpm<br />
|-<br />
|Authen::DecHpwd||||cpan2rpm<br />
|-<br />
|Authen::Passphrase||||cpan2rpm<br />
|-<br />
|Data::Entropy::Algorithms||||cpan2rpm<br />
|-<br />
|Crypt::MySQL||||cpan2rpm<br />
|-<br />
|Crypt::Eksblowfish||||cpan2rpm<br />
|-<br />
|Crypt::UnixCrypt_XS||||cpan2rpm<br />
|-<br />
|Fax::Hylafax::Client||||cpan2rpm<br />
|}<br />
<br />
<pre><br />
# yum install libnet perl-libwww-perl perl-URI perl-HTML-Tagset<br />
# yum install perl-HTML-Parser <br />
# yum install perl-MailTools perl-TimeDate<br />
<br />
# yum install perl-HTML-Mason perl-Text-Template perl-DateTime perl-Chart<br />
# yum install perl-Cache-Cache perl-NetAddr-IP perl-String-Approx<br />
# yum install perl-Locale-SubCountry perl-Term-ReadKey<br />
# yum install perl-DateTime-Format-Strptime perl-Net-Whois-Raw<br />
# yum install perl-Tie-IxHash perl-Crypt-PasswdMD5<br />
# yum install perl-File-CounterFile perl-IPC-Run3 perl-Net-SSH<br />
# yum install perl-String-ShellQuote perl-JSON perl-Data-Table<br />
# yum install perl-Lingua-EN-NameParse perl-Lingua-EN-Inflect<br />
# yum install perl-IO-stringy perl-Text-CSV_XS perl-Spreadsheet-WriteExcel<br />
# yum install perl-MIME-tools perl-DateManip<br />
# yum install perl-DBI perl-DBD-MySQL perl-Apache-DBI <br />
# yum install --enablerepo=centosplus perl-DBD-Pg<br />
# yum install perl-Crypt-DES perl-Crypt-Blowfish perl-Digest-MD4<br />
# yum install perl-Crypt-Rijndael perl-ExtUtils-CBuilder<br />
</pre><br />
<br />
You can install these using cpan, or follow the directions here using cpan2rpm.<br />
<br />
* DBIx::DBSchema<br />
<br />
<pre><br />
# yum install perl-DBIx-DBSchema<br />
</pre><br />
<br />
* Frontier::RPC2<br />
<br />
<pre><br />
# yum install perl-XML-Parser<br />
# cpan2rpm --author='Ken MacLeod &lt;ken@bitsko.slc.ut.us&gt;' --version='0.07b4' Frontier-RPC<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Frontier-RPC-0.07b4-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Business::CreditCard<br />
<br />
<pre><br />
# cpan2rpm Business::CreditCard<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Business-CreditCard-0.30-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Time::Duration<br />
<br />
<pre><br />
# yum install perl-Test-Pod perl-Test-Pod-Coverage<br />
# cpan2rpm Time::Duration<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Time-Duration-1.04-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* HTML::Widgets::SelectLayers<br />
<br />
<pre><br />
# cpan2rpm http://search.cpan.org/CPAN/authors/id/I/IV/IVAN/HTML-Widgets-SelectLayers-0.07.tar.gz<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-HTML-Widgets-SelectLayers-0.07-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Color::Scheme<br />
<br />
Ran into much brokenness when trying to build Test-Simple-0.67. Just skip the dep checks and test phase and hope. I mean, come on, it's Color::Scheme for crying out loud!<br />
<br />
<pre><br />
# yum install perl-Test-Differences<br />
# cpan2rpm --make-no-test --no-depchk Color::Scheme<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Color-Scheme-1.02-1.noarch.rpm<br />
</pre><br />
<br />
* Params::Classify<br />
<br />
Install some deps first...<br />
<br />
** Scalar::Number<br />
<br />
*** Data::Integer<br />
<pre><br />
# cpan2rpm Data::Integer<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Integer-0.001-1.noarch.rpm<br />
</pre><br />
<br />
*** Data::Float<br />
<pre><br />
# cpan2rpm Data::Float<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Float-0.005-1.noarch.rpm<br />
</pre><br />
<br />
<pre><br />
# cpan2rpm Scalar::Number<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Scalar-Number-0.001-1.noarch.rpm<br />
<br />
# cpan2rpm Params::Classify<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Params-Classify-0.002-1.noarch.rpm<br />
</pre><br />
<br />
* Module::Runtime<br />
<pre><br />
# cpan2rpm Module::Runtime<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Module-Runtime-0.003-1.noarch.rpm<br />
</pre><br />
<br />
* Authen::DecHpwd<br />
<pre><br />
# cpan2rpm Authen::DecHpwd<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Authen-DecHpwd-2.001-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Authen::Passphrase<br />
<pre><br />
# cpan2rpm Authen::Passphrase<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Authen-Passphrase-0.005-1.noarch.rpm<br />
</pre><br />
<br />
* Data::Entropy::Algorithms<br />
<pre><br />
# cpan2rpm --make-no-test Data::Entropy<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Entropy-0.003-1.noarch.rpm<br />
</pre><br />
<br />
* Crypt::MySQL<br />
<pre><br />
# cpan2rpm --version='0.04' --author='IKEBE Tomohiro <ikebe@shebang.jp>' Crypt::MySQL<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Crypt-MySQL-0.04-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Crypt::Eksblowfish<br />
<pre><br />
# cpan2rpm Crypt::Eksblowfish<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Crypt-Eksblowfish-0.001-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Crypt::UnixCrypt_XS<br />
<pre><br />
# cpan2rpm Crypt::UnixCrypt_XS<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Crypt-UnixCrypt_XS-0.05-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Fax::Hylafax::Client (Optional)<br />
<br />
Skip the tests here as well, unless you happen to have a properly configured HylaFAX server handy.<br />
Or, skip the package entirely if you don't plan on sending FAX invoices.<br />
<br />
<pre><br />
# cpan2rpm --make-no-test Fax::Hylafax::Client<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Fax-Hylafax-Client-1.02-1.noarch.rpm<br />
</pre><br />
<br />
==== RT Prereqs ====<br />
<br />
{| border="1"<br />
|-<br />
|*Perl Module*||*Package*||*Version*||*Repo*<br />
|-<br />
|Apache::Session||perl-Apache-Session||1.81-1.el4.rf||dries<br />
|-<br />
|HTML-Format||perl-HTML-Format||2.04-1.2.el4.rf||dries<br />
|-<br />
|Class::ReturnValue||perl-Class-ReturnValue||0.53-1.2.el4.rf||dries<br />
|-<br />
|DBIx::SearchBuilder||perl-DBIx-SearchBuilder||1.43-1.el4.rf||rpmforge<br />
|-<br />
|Log::Dispatch||perl-Log-Dispatch||2.11-1.2.el4.rf||rpmforge<br />
|-<br />
|Locale::Maketext::Lexicon||perl-Locale-Maketext-Lexicon||0.62-1.el4.rf||dries<br />
|-<br />
|Locale::Maketext::Fuzzy||perl-Locale-Maketext-Fuzzy||0.02-1.2.el4.rf||dries<br />
|-<br />
|Text::Wrapper||perl-Text-Wrapper||1.000-1.2.el4.rf||dries<br />
|-<br />
|Time-modules||perl-Time-modules||2003.1126-1.2.el4.rf||dries<br />
|-<br />
|Text::Autoformat||perl-Text-Autoformat||1.13-1.2.el4.rf||dries<br />
|-<br />
|Text::Quoted||perl-Text-Quoted||1.8-1.2.el4.rf||dries<br />
|-<br />
|Regexp::Common||perl-Regexp-Common||2.120-1.2.el4.rf||dries<br />
|-<br />
|HTML::Scrubber||perl-HTML-Scrubber||0.08-1.2.el4.rf||dries<br />
|-<br />
|Tree::Simple||perl-Tree-Simple||1.17-1.el4.rf||dries<br />
|-<br />
|HTML::TreeBuilder||perl-HTML-Tree||3.23-1.el4.rf||dries<br />
<br />
|}<br />
<br />
<pre><br />
# yum install perl-Apache-Session perl-HTML-Format perl-Class-ReturnValue<br />
# yum install perl-Locale-Maketext-Lexicon perl-Locale-Maketext-Fuzzy<br />
# yum install perl-Text-Wrapper perl-Time-modules<br />
# yum install perl-Text-Autoformat perl-Text-Quoted perl-Regexp-Common<br />
# yum install perl-HTML-Scrubber perl-Tree-Simple perl-HTML-Tree<br />
</pre><br />
<br />
* Log::Dispatch<br />
<br />
Use the SRPM from Fedora Core 5. They have the correct and properly patched version that supports mod_perl 2.<br />
<br />
But first, a couple of prereqs.<br />
<br />
<pre><br />
# yum install perl-File-Find-Rule perl-IO-String<br />
# yum install perl-MIME-Lite perl-Mail-Sender<br />
</pre><br />
<br />
Now build and install Log::Dispatch itself.<br />
<br />
<pre><br />
# wget -O /usr/src/redhat/SRPMS/perl-Log-Dispatch-2.15-2.fc5.src.rpm http://download.fedora.redhat.com/pub/fedora/linux/extras/5/SRPMS/perl-Log-Dispatch-2.15-2.fc5.src.rpm<br />
<br />
# rpmbuild --rebuild /usr/src/redhat/SRPMS/perl-Log-Dispatch-2.15-2.src.rpm<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Log-Dispatch-2.15-2.noarch.rpm<br />
</pre><br />
<br />
* DBIx::SearchBuilder<br />
<br />
DBIx::searchBuilder is a little painful to install because it requires DBD::Oracle. You can just run "yum install perl-DBIx-SearchBuilder" if you want to go through the trouble of building and installing DBD::Oracle first. Again, that can be rather painful and isn't within the scope of this guide.<br />
<br />
The alternative below is to force install the RPM for DBIx::SearchBuilder since we're not going to use Oracle anyway. You have to exclude it from future updates in yum otherwise you'll get dep failures everytime you do a "yum upgrade".<br />
<br />
If you're not going to use RT, just skip DBIx::SearchBuilder altogether.<br />
<br />
<pre><br />
# yum install perl-Want perl-Clone perl-Cache-Simple-TimedExpiry<br />
# yum install perl-DBD-SQLite perl-capitalization perl-Class-Accessor<br />
<br />
# rpm -ivh --nodeps http://apt.sw.be/redhat/el4/en/${BASEARCH}/dag/RPMS/perl-DBIx-SearchBuilder-1.43-1.el4.rf.noarch.rpm<br />
<br />
# echo "exclude=perl-DBIx-SearchBuilder" >> /etc/yum.conf<br />
</pre><br />
<br />
<br />
<br />
== System configuration ==<br />
<br />
This is just following the directions with CentOS-specific commands.<br />
<br />
<pre><br />
# groupadd freeside<br />
# useradd -g freeside freeside<br />
</pre><br />
<br />
With CentOS 4.4, postgresql wouldn't start if SELinux was enabled. We call "setenforce 0" here to temporarily disable it. Some claim that it only needs to be disabled the first time postgresql is started.<br />
<br />
Enable postgresql at startup, disable selinux temporarily, and start postgresql.<br />
<br />
<pre><br />
# chkconfig postgresql on<br />
# setenfore 0<br />
# service postgresql start<br />
</pre><br />
<br />
Create the freeside datbase user for postgresql.<br />
<br />
<pre><br />
# su -c "createuser -P freeside" - postgres<br />
</pre><br />
<br />
== Installing Freeside ==<br />
<br />
su to the freeside user, extract a copy of the freeside tarball or check out the code from CVS into the freeside user's home directory. You should have the freeside top-level Makefile in /home/freeside/freeside/Makefile or /home/freeside/freeside-1.7.0/Makefile at this point. 1.7.0 wasn't officially released at the time of writing, so we're using a version checked-out from CVS.<br />
<br />
Edit freeside's top-level Makefile with your configuration. Here are some examples...<br />
<br />
<pre><br />
FREESIDE_CONF = /etc/freeside<br />
FREESIDE_LOG = /var/log/freeside<br />
FREESIDE_LOCK = /var/lib/freeside<br />
FREESIDE_CACHE = /var/lib/freeside<br />
FREESIDE_EXPORT = /var/lib/freeside<br />
<br />
APACHE_VERSION = 2<br />
FREESIDE_DOCUMENT_ROOT = /var/www/freeside/html<br />
<br />
INIT_FILE = /etc/init.d/freeside<br />
INIT_INSTALL = /sbin/chkconfig freeside on<br />
<br />
HTTPD_RESTART = /etc/init.d/httpd restart<br />
APACHE_CONF = /etc/httpd-freeside/conf.d<br />
</pre><br />
<br />
As the freeside user, create the database and make the perl modules.<br />
<br />
<pre><br />
$ createdb -E sql_ascii freeside<br />
<br />
$ make perl-modules<br />
</pre><br />
<br />
As root, install the perl modules and create the initial config.<br />
<br />
<pre><br />
# make install-perl-modules<br />
<br />
# mkdir -m 770 /var/lib/freeside<br />
# chown -R freeside:root /var/lib/freeside/<br />
# make create-config<br />
</pre><br />
<br />
== Apache Configuration ==<br />
<br />
=== Creating Freeside's Apache Instance ===<br />
<br />
The default Apache init script for CentOS doesn't make it very easy to setup multiple instances of Apache. A few small modifications take care of that problem.<br />
<br />
Start by making a copy of the init script, as well as download the patch and apply it to your httpd-freeside init script. You can make a symlink if you'd like to eventually setup additional Apache instances.<br />
<br />
<pre><br />
# ln -s /etc/init.d/httpd /etc/init.d/httpd-freeside<br />
<br />
# cd /etc/init.d/<br />
# wget -O /tmp/httpd-freeside.patch http://users.fire2wire.com/~khoff/freeside/1.7.0/httpd-freeside.patch<br />
# patch < /tmp/httpd-freeside.patch<br />
</pre><br />
<br />
Make a copy of the Apache server root.<br />
<br />
<pre><br />
# cp -av /etc/httpd /etc/httpd-freeside<br />
</pre><br />
<br />
You can remove any extra conf files from /etc/httpd-freeside/conf.d (webdav, php, etc.) if you're not using them. They'll only take up more memory and potentially make freeside slower.<br />
<br />
=== /etc/httpd-freeside/conf/httpd.conf ===<br />
<br />
Change the following Apache configuration directives in /etc/httpd-freeside/conf/httpd.conf to match our previous changes.<br />
<br />
* ServerRoot "/etc/httpd-freeside"<br />
* PidFile run/httpd-freeside.pid<br />
<br />
We're changing the listening port in case you're using the default Apache configuration (and port) for something else. This can be remedied by binding to a specific IP address as well (eg. 192.168.0.2:80).<br />
<br />
* Listen 8080<br />
<br />
Freeside's instance of Apache needs to run as the freeside user and group.<br />
<br />
* User freeside<br />
* Group freeside<br />
<br />
* DocumentRoot "/var/www/freeside/html"<br />
<br />
* &lt;Directory "/var/www/freeside/html"&gt;<br />
<br />
* ErrorLog logs/freeside_error_log<br />
* CustomLog logs/freeside_access_log combined<br />
<br />
<br />
=== Install Docs and Freeside's Apache Includes ===<br />
<br />
Inside the freeside source directory, run "make install-docs" and "make install-apache" as root.<br />
<br />
<pre><br />
# make install-docs<br />
# make install-apache<br />
</pre><br />
<br />
Edit the config file that was just created (/etc/httpd-freeside/conf.d/freeside-base2.conf) by "make install-apache" and change the AuthUserFile directive to match our new path.<br />
<br />
* AuthUserFile /etc/freeside/htpasswd<br />
<br />
<br />
== Populating the Database ==<br />
<br />
Populate the freeside database with the initial data, as the freeside user.<br />
<br />
<pre><br />
$ freeside-setup -d example.com<br />
</pre><br />
<br />
Create the freeside system users, as the freeside user.<br />
<br />
<pre><br />
$ freeside-adduser -g 1 fs_queue<br />
$ freeside-adduser -g 1 fs_daily<br />
$ freeside-adduser -g 1 fs_selfservice<br />
</pre><br />
<br />
Create whatever other freeside users you want, again, as the freeside user.<br />
<br />
<pre><br />
freeside-adduser -g 1 username<br />
htpasswd /etc/freeside/htpasswd username<br />
</pre><br />
<br />
Repeat the last two commands as many times as you want for your internal staff's freeside accounts.<br />
<br />
== Startup Configuration ==<br />
<br />
We just need to make sure that our new instance of Apache and the freeside queue daemon start when we boot.<br />
<br />
<pre><br />
# make install-init<br />
<br />
# chkconfig freeside on<br />
# chkconfig httpd-freeside on<br />
</pre><br />
<br />
And last but not least...start freeside's Apache instance.<br />
<br />
<pre><br />
# service httpd-freeside start<br />
</pre><br />
<br />
Hopefully, Apache should start without errors. If you do get errors, check /var/log/httpd/freeside_error_log.<br />
<br />
Assuming Apache started correctly, you should now be able to access freeside via http://&lt;Your server's FQDN or IP&gt;:8080/. You can login using the username and password you set earlier with htpasswd.<br />
<br />
From here, consult the standard freeside install documentation in the wiki on how to proceed with initial configuration. Good luck!<br />
<br />
== Problems ==<br />
<br />
There might be some formatting issues as this was converted from TWiki to MediaWiki markup. If the syntax of a command doesn't look correct or doesn't make sense, it probably didn't get escaped correctly, or your web browser gobbled up some angle brackets, or both!</div>
Khoff
http://www.freeside.biz/mediawiki/index.php?title=Freeside:1.7:Documentation:InstallingOnCentOS4&diff=1743
Freeside:1.7:Documentation:InstallingOnCentOS4
2007-03-05T22:15:52Z
<p>Khoff: </p>
<hr />
<div>= Installing Freeside 1.7.x on CentOS 4.4 =<br />
<br />
This is a (hopefully) step-by-step guide for doing a basic installation of Freeside on CentOS 4.4 using RPMs whenever possible. It would probably be easier to use CPAN directly in some cases, but that wouldn't be very fun now would it?<br />
<br />
== Software Installation ==<br />
<br />
Run the correct command below depending on your architecture.<br />
<br />
<pre><br />
# export BASEARCH=i386<br />
</pre><br />
...or...<br />
<pre><br />
# export BASEARCH=x86_64<br />
</pre><br />
<br />
=== Binary Packages ===<br />
{| border="1"<br />
|-<br />
|*Package*||*Repo*||*Version*<br />
|-<br />
|httpd||base||2.0.52-28.ent.centos4<br />
|-<br />
|postgresql-server||update||7.4.16-1.RHEL4.1<br />
|-<br />
|tetex||base||2.0.2-22.EL4.7<br />
|-<br />
|ghostscript||base||7.07-33<br />
|-<br />
|perl||centosplus||4:5.8.8-4.el4s1<br />
<br />
|}<br />
<br />
<pre><br />
# yum install httpd postgresql-server tetex ghostscript.$BASEARCH<br />
</pre><br />
<br />
Upgrade to perl 5.8.8 to get CGI >= 3.08.<br />
<br />
<pre><br />
# yum --enablerepo=centosplus upgrade perl<br />
</pre><br />
<br />
=== Perl Packages ===<br />
<br />
Setup 3rd party repos for most of the extra perl modules.<br />
<br />
<pre><br />
# rpm -ivh http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.$BASEARCH.rpm<br />
# rpm --import http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt<br />
<br />
# cat &lt;&lt;END&gt;/etc/yum.repos.d/dries.repo<br />
[dries]<br />
name=Extra Fedora rpms dries - \$releasever - \$basearch<br />
baseurl=http://ftp.belnet.be/packages/dries.ulyssis.org/redhat/el\$releasever/en/\$basearch/dries/RPMS<br />
END<br />
# rpm --import http://dries.ulyssis.org/rpm/RPM-GPG-KEY.dries.txt<br />
</pre><br />
<br />
Install the cpan2rpm tool so we can build RPMs from CPAN packages.<br />
<br />
<pre><br />
# rpm --import http://perl.arix.com/cpan2rpm/gpg.pub.asc<br />
# yum install rpm-build perl-Module-Build<br />
# rpm -ivh http://superb-east.dl.sourceforge.net/sourceforge/cpan2rpm/cpan2rpm-2.027-1.noarch.rpm<br />
</pre><br />
<br />
==== mod_perl2 ====<br />
<br />
Grab mod_perl 2.03 from the centosplus repo.<br />
<br />
<pre><br />
# yum --enablerepo=centosplus install mod_perl<br />
</pre><br />
<br />
<br />
==== Freeside Prereqs ====<br />
{| border="1"<br />
|-<br />
|*Perl Module*||*Package*||*Version*||*Repo*<br />
|-<br />
|libnet||libnet||1.1.2.1-2.rf||extras<br />
|-<br />
|libwww-perl||perl-libwww-perl.noarch||5.79-5||base<br />
|-<br />
|URI||perl-URI.noarch||1.30-4||base<br />
|-<br />
|HTML::Tagset||perl-HTML-Tagset.noarch||3.03-30||base<br />
|-<br />
|HTML::Parser||perl-HTML-Parser||3.35-6||base<br />
|-<br />
|DBI||perl-DBI||1.40-8||base<br />
|-<br />
|DBD::MySQL||perl-DBD-MySQL||2.9004-3.1||base<br />
|-<br />
|MailTools||perl-MailTools.noarch||1.74-1.c4||extras<br />
|-<br />
|TimeDate||perl-TimeDate.noarch||1.16-1.c4||extras<br />
|-<br />
|Date::Manip||perl-DateManip.noarch||5.42a-3||base<br />
|-<br />
|HTML::Mason||perl-HTML-Mason||1.3200-1.el4.rf||rpmforge<br />
|-<br />
|Text::Template||perl-Text-Template||1.44-1.2.el4.rf||dries<br />
|-<br />
|DateTime||perl-DateTime||0.2901-1.2.el4.rf||rpmforge<br />
|-<br />
|Chart||perl-Chart||2.4.1-1.el4.rf||dries<br />
|-<br />
|Cache::Cache||perl-Cache-Cache||1.05-1.el4.rf||dries<br />
|-<br />
|NetAddr::IP||perl-NetAddr-IP||4.004-1.el4.rf||rpmforge<br />
|-<br />
|String::Approx||perl-String-Approx||3.26-1.el4.rf||dries<br />
|-<br />
|Locale::SubCountry||perl-Locale-SubCountry||1.38-1.el4.rf||dries<br />
|-<br />
|Term::ReadKey||perl-Term-ReadKey||2.30-2.2.el4.rf||dries<br />
|-<br />
|DateTime::Format::Strptime||perl-DateTime-Format-Strptime||1.0700-1.2.el4.rf||dries<br />
|-<br />
|Net::Whois::Raw||perl-Net-Whois-Raw||1.20-1.el4.rf||dries<br />
|-<br />
|DBIx::DBSchema||perl-DBIx-DBSchema||0.31-1.el4.rf||dries<br />
|-<br />
|Tie::IxHash||perl-Tie-IxHash||1.21-1.2.el4.rf||dries<br />
|-<br />
|Crypt::PasswdMD5||perl-Crypt-PasswdMD5||1.3-1.2.el4.rf||dries<br />
|-<br />
|File::CounterFile||perl-File-CounterFile||1.04-1.2.el4.rf||dries<br />
|-<br />
|IPC::Run3||perl-IPC-Run3||0.036-1.el4.rf||dries<br />
|-<br />
|Net::SSH||perl-Net-SSH||0.08-1.2.el4.rf||dries<br />
|-<br />
|String::ShellQuote||perl-String-ShellQuote||1.03-2.2.el4.rf||dries<br />
|-<br />
|JSON||perl-JSON||1.07-1.el4.rf||dries<br />
|-<br />
|Data::Table||perl-Data-Table||1.50-1.el4.rf||dries<br />
|-<br />
|Lingua::EN::NameParse||perl-Lingua-EN-NameParse||1.22-2.2.el4.rf||dries<br />
|-<br />
|Lingua::EN::Inflect||perl-Lingua-EN-Inflect||1.89-1.2.el4.rf||dries<br />
|-<br />
|Apache::DBI||perl-Apache-DBI||0.9901-2.2.el4.rf||dries<br />
|-<br />
|IO::Scalar||perl-IO-stringy||2.110-1.2.el4.rf||dries<br />
|-<br />
|Text::CSV_XS||perl-Text-CSV_XS||0.23-1.2.el4.rf||dries<br />
|-<br />
|Spreadsheet::WriteExcel||perl-Spreadsheet-WriteExcel||2.17-1.el4.rf||dries<br />
|-<br />
|MIME-tools||perl-MIME-tools||5.420-1.el4.rf||dries<br />
|-<br />
|Date::Manip||perl-DateManip||5.42a-3||base<br />
|-<br />
|Crypt::DES||perl-Crypt-DES||2.05-3.2.el4.rf||dries<br />
|-<br />
|Crypt::Blowfish||perl-Crypt-Blowfish||2.10-1.2.el4.rf||dries<br />
|-<br />
|Digest::MD4||perl-Digest-MD4||1.5-1.2.el4.rf||dries<br />
|-<br />
|Crypt::Rijndael||perl-Crypt-Rijndael||0.05-1.2.el4.rf||dries<br />
|-<br />
|ExtUtils::CBuilder||perl-ExtUtils-CBuilder||0.18-1.el4.rf||dries<br />
|-<br />
|DBD::Pg||perl-DBD-Pg||1.49-1.el4s1||centosplus<br />
|-<br />
|Locale-Codes|| | ||cpan2rpm<br />
|-<br />
|Frontier::RPC2|| | ||cpan2rpm<br />
|-<br />
|Business::CreditCard|| | ||cpan2rpm<br />
|-<br />
|Time::Duration|| | ||cpan2rpm<br />
|-<br />
|HTML::Widgets::SelectLayers|| | ||cpan2rpm<br />
|-<br />
|Color::Scheme|| | ||cpan2rpm<br />
|-<br />
|Params::Classify||||cpan2rpm<br />
|-<br />
|Scalar::Number||||cpan2rpm<br />
|-<br />
|Data::Integer||||cpan2rpm<br />
|-<br />
|Data::Float||||cpan2rpm<br />
|-<br />
|Module::Runtime||||cpan2rpm<br />
|-<br />
|Authen::DecHpwd||||cpan2rpm<br />
|-<br />
|Data::Entropy::Algorithms||||cpan2rpm<br />
|-<br />
|Crypt::MySQL||||cpan2rpm<br />
|-<br />
|Crypt::Eksblowfish||||cpan2rpm<br />
|-<br />
|Crypt::UnixCrypt_XS||||cpan2rpm<br />
|-<br />
|Fax::Hylafax::Client||||cpan2rpm<br />
|}<br />
<br />
<pre><br />
# yum install libnet perl-libwww-perl perl-URI perl-HTML-Tagset<br />
# yum install perl-HTML-Parser <br />
# yum install perl-MailTools perl-TimeDate<br />
<br />
# yum install perl-HTML-Mason perl-Text-Template perl-DateTime perl-Chart<br />
# yum install perl-Cache-Cache perl-NetAddr-IP perl-String-Approx<br />
# yum install perl-Locale-SubCountry perl-Term-ReadKey<br />
# yum install perl-DateTime-Format-Strptime perl-Net-Whois-Raw<br />
# yum install perl-Tie-IxHash perl-Crypt-PasswdMD5<br />
# yum install perl-File-CounterFile perl-IPC-Run3 perl-Net-SSH<br />
# yum install perl-String-ShellQuote perl-JSON perl-Data-Table<br />
# yum install perl-Lingua-EN-NameParse perl-Lingua-EN-Inflect<br />
# yum install perl-IO-stringy perl-Text-CSV_XS perl-Spreadsheet-WriteExcel<br />
# yum install perl-MIME-tools perl-DateManip<br />
# yum install perl-DBI perl-DBD-MySQL perl-Apache-DBI <br />
# yum install --enablerepo=centosplus perl-DBD-Pg<br />
# yum install perl-Crypt-DES perl-Crypt-Blowfish perl-Digest-MD4<br />
# yum install perl-Crypt-Rijndael perl-ExtUtils-CBuilder<br />
</pre><br />
<br />
You can install these using cpan, or follow the directions here using cpan2rpm.<br />
<br />
* DBIx::DBSchema<br />
<br />
<pre><br />
# yum install perl-DBIx-DBSchema<br />
</pre><br />
<br />
* Frontier::RPC2<br />
<br />
<pre><br />
# yum install perl-XML-Parser<br />
# cpan2rpm --author='Ken MacLeod &lt;ken@bitsko.slc.ut.us&gt;' --version='0.07b4' Frontier-RPC<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Frontier-RPC-0.07b4-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Business::CreditCard<br />
<br />
<pre><br />
# cpan2rpm Business::CreditCard<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Business-CreditCard-0.30-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Time::Duration<br />
<br />
<pre><br />
# yum install perl-Test-Pod perl-Test-Pod-Coverage<br />
# cpan2rpm Time::Duration<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Time-Duration-1.04-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* HTML::Widgets::SelectLayers<br />
<br />
<pre><br />
# cpan2rpm http://search.cpan.org/CPAN/authors/id/I/IV/IVAN/HTML-Widgets-SelectLayers-0.07.tar.gz<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-HTML-Widgets-SelectLayers-0.07-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Color::Scheme<br />
<br />
Ran into much brokenness when trying to build Test-Simple-0.67. Just skip the dep checks and test phase and hope. I mean, come on, it's Color::Scheme for crying out loud!<br />
<br />
<pre><br />
# yum install perl-Test-Differences<br />
# cpan2rpm --make-no-test --no-depchk Color::Scheme<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Color-Scheme-1.02-1.noarch.rpm<br />
</pre><br />
<br />
* Params::Classify<br />
<br />
Install some deps first...<br />
<br />
** Scalar::Number<br />
<br />
*** Data::Integer<br />
<pre><br />
# cpan2rpm Data::Integer<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Integer-0.001-1.noarch.rpm<br />
</pre><br />
<br />
*** Data::Float<br />
<pre><br />
# cpan2rpm Data::Float<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Float-0.005-1.noarch.rpm<br />
</pre><br />
<br />
<pre><br />
# cpan2rpm Scalar::Number<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Scalar-Number-0.001-1.noarch.rpm<br />
<br />
# cpan2rpm Params::Classify<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Params-Classify-0.002-1.noarch.rpm<br />
</pre><br />
<br />
* Module::Runtime<br />
<pre><br />
# cpan2rpm Module::Runtime<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Module-Runtime-0.003-1.noarch.rpm<br />
</pre><br />
<br />
* Authen::DecHpwd<br />
<pre><br />
# cpan2rpm Authen::DecHpwd<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Authen-DecHpwd-2.001-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Data::Entropy::Algorithms<br />
<pre><br />
# cpan2rpm --make-no-test Data::Entropy<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Entropy-0.003-1.noarch.rpm<br />
</pre><br />
<br />
* Crypt::MySQL<br />
<pre><br />
# cpan2rpm --version='0.04' --author='IKEBE Tomohiro <ikebe@shebang.jp>' Crypt::MySQL<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Crypt-MySQL-0.04-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Crypt::Eksblowfish<br />
<pre><br />
# cpan2rpm Crypt::Eksblowfish<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Crypt-Eksblowfish-0.001-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Crypt::UnixCrypt_XS<br />
<pre><br />
# cpan2rpm Crypt::UnixCrypt_XS<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Crypt-UnixCrypt_XS-0.05-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Fax::Hylafax::Client (Optional)<br />
<br />
Skip the tests here as well, unless you happen to have a properly configured HylaFAX server handy.<br />
Or, skip the package entirely if you don't plan on sending FAX invoices.<br />
<br />
<pre><br />
# cpan2rpm --make-no-test Fax::Hylafax::Client<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Fax-Hylafax-Client-1.02-1.noarch.rpm<br />
</pre><br />
<br />
==== RT Prereqs ====<br />
<br />
{| border="1"<br />
|-<br />
|*Perl Module*||*Package*||*Version*||*Repo*<br />
|-<br />
|Apache::Session||perl-Apache-Session||1.81-1.el4.rf||dries<br />
|-<br />
|HTML-Format||perl-HTML-Format||2.04-1.2.el4.rf||dries<br />
|-<br />
|Class::ReturnValue||perl-Class-ReturnValue||0.53-1.2.el4.rf||dries<br />
|-<br />
|DBIx::SearchBuilder||perl-DBIx-SearchBuilder||1.43-1.el4.rf||rpmforge<br />
|-<br />
|Log::Dispatch||perl-Log-Dispatch||2.11-1.2.el4.rf||rpmforge<br />
|-<br />
|Locale::Maketext::Lexicon||perl-Locale-Maketext-Lexicon||0.62-1.el4.rf||dries<br />
|-<br />
|Locale::Maketext::Fuzzy||perl-Locale-Maketext-Fuzzy||0.02-1.2.el4.rf||dries<br />
|-<br />
|Text::Wrapper||perl-Text-Wrapper||1.000-1.2.el4.rf||dries<br />
|-<br />
|Time-modules||perl-Time-modules||2003.1126-1.2.el4.rf||dries<br />
|-<br />
|Text::Autoformat||perl-Text-Autoformat||1.13-1.2.el4.rf||dries<br />
|-<br />
|Text::Quoted||perl-Text-Quoted||1.8-1.2.el4.rf||dries<br />
|-<br />
|Regexp::Common||perl-Regexp-Common||2.120-1.2.el4.rf||dries<br />
|-<br />
|HTML::Scrubber||perl-HTML-Scrubber||0.08-1.2.el4.rf||dries<br />
|-<br />
|Tree::Simple||perl-Tree-Simple||1.17-1.el4.rf||dries<br />
|-<br />
|HTML::TreeBuilder||perl-HTML-Tree||3.23-1.el4.rf||dries<br />
<br />
|}<br />
<br />
<pre><br />
# yum install perl-Apache-Session perl-HTML-Format perl-Class-ReturnValue<br />
# yum install perl-Locale-Maketext-Lexicon perl-Locale-Maketext-Fuzzy<br />
# yum install perl-Text-Wrapper perl-Time-modules<br />
# yum install perl-Text-Autoformat perl-Text-Quoted perl-Regexp-Common<br />
# yum install perl-HTML-Scrubber perl-Tree-Simple perl-HTML-Tree<br />
</pre><br />
<br />
* Log::Dispatch<br />
<br />
Use the SRPM from Fedora Core 5. They have the correct and properly patched version that supports mod_perl 2.<br />
<br />
But first, a couple of prereqs.<br />
<br />
<pre><br />
# yum install perl-File-Find-Rule perl-IO-String<br />
# yum install perl-MIME-Lite perl-Mail-Sender<br />
</pre><br />
<br />
Now build and install Log::Dispatch itself.<br />
<br />
<pre><br />
# wget -O /usr/src/redhat/SRPMS/perl-Log-Dispatch-2.15-2.fc5.src.rpm http://download.fedora.redhat.com/pub/fedora/linux/extras/5/SRPMS/perl-Log-Dispatch-2.15-2.fc5.src.rpm<br />
<br />
# rpmbuild --rebuild /usr/src/redhat/SRPMS/perl-Log-Dispatch-2.15-2.src.rpm<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Log-Dispatch-2.15-2.noarch.rpm<br />
</pre><br />
<br />
* DBIx::SearchBuilder<br />
<br />
DBIx::searchBuilder is a little painful to install because it requires DBD::Oracle. You can just run "yum install perl-DBIx-SearchBuilder" if you want to go through the trouble of building and installing DBD::Oracle first. Again, that can be rather painful and isn't within the scope of this guide.<br />
<br />
The alternative below is to force install the RPM for DBIx::SearchBuilder since we're not going to use Oracle anyway. You have to exclude it from future updates in yum otherwise you'll get dep failures everytime you do a "yum upgrade".<br />
<br />
If you're not going to use RT, just skip DBIx::SearchBuilder altogether.<br />
<br />
<pre><br />
# yum install perl-Want perl-Clone perl-Cache-Simple-TimedExpiry<br />
# yum install perl-DBD-SQLite perl-capitalization perl-Class-Accessor<br />
<br />
# rpm -ivh --nodeps http://apt.sw.be/redhat/el4/en/${BASEARCH}/dag/RPMS/perl-DBIx-SearchBuilder-1.43-1.el4.rf.noarch.rpm<br />
<br />
# echo "exclude=perl-DBIx-SearchBuilder" >> /etc/yum.conf<br />
</pre><br />
<br />
<br />
<br />
== System configuration ==<br />
<br />
This is just following the directions with CentOS-specific commands.<br />
<br />
<pre><br />
# groupadd freeside<br />
# useradd -g freeside freeside<br />
</pre><br />
<br />
With CentOS 4.4, postgresql wouldn't start if SELinux was enabled. We call "setenforce 0" here to temporarily disable it. Some claim that it only needs to be disabled the first time postgresql is started.<br />
<br />
Enable postgresql at startup, disable selinux temporarily, and start postgresql.<br />
<br />
<pre><br />
# chkconfig postgresql on<br />
# setenfore 0<br />
# service postgresql start<br />
</pre><br />
<br />
Create the freeside datbase user for postgresql.<br />
<br />
<pre><br />
# su -c "createuser -P freeside" - postgres<br />
</pre><br />
<br />
== Installing Freeside ==<br />
<br />
su to the freeside user, extract a copy of the freeside tarball or check out the code from CVS into the freeside user's home directory. You should have the freeside top-level Makefile in /home/freeside/freeside/Makefile or /home/freeside/freeside-1.7.0/Makefile at this point. 1.7.0 wasn't officially released at the time of writing, so we're using a version checked-out from CVS.<br />
<br />
Edit freeside's top-level Makefile with your configuration. Here are some examples...<br />
<br />
<pre><br />
FREESIDE_CONF = /etc/freeside<br />
FREESIDE_LOG = /var/log/freeside<br />
FREESIDE_LOCK = /var/lib/freeside<br />
FREESIDE_CACHE = /var/lib/freeside<br />
FREESIDE_EXPORT = /var/lib/freeside<br />
<br />
APACHE_VERSION = 2<br />
FREESIDE_DOCUMENT_ROOT = /var/www/freeside/html<br />
<br />
INIT_FILE = /etc/init.d/freeside<br />
INIT_INSTALL = /sbin/chkconfig freeside on<br />
<br />
HTTPD_RESTART = /etc/init.d/httpd restart<br />
APACHE_CONF = /etc/httpd-freeside/conf.d<br />
</pre><br />
<br />
As the freeside user, create the database and make the perl modules.<br />
<br />
<pre><br />
$ createdb -E sql_ascii freeside<br />
<br />
$ make perl-modules<br />
</pre><br />
<br />
As root, install the perl modules and create the initial config.<br />
<br />
<pre><br />
# make install-perl-modules<br />
<br />
# mkdir -m 770 /var/lib/freeside<br />
# chown -R freeside:root /var/lib/freeside/<br />
# make create-config<br />
</pre><br />
<br />
== Apache Configuration ==<br />
<br />
=== Creating Freeside's Apache Instance ===<br />
<br />
The default Apache init script for CentOS doesn't make it very easy to setup multiple instances of Apache. A few small modifications take care of that problem.<br />
<br />
Start by making a copy of the init script, as well as download the patch and apply it to your httpd-freeside init script. You can make a symlink if you'd like to eventually setup additional Apache instances.<br />
<br />
<pre><br />
# ln -s /etc/init.d/httpd /etc/init.d/httpd-freeside<br />
<br />
# cd /etc/init.d/<br />
# wget -O /tmp/httpd-freeside.patch http://users.fire2wire.com/~khoff/freeside/1.7.0/httpd-freeside.patch<br />
# patch < /tmp/httpd-freeside.patch<br />
</pre><br />
<br />
Make a copy of the Apache server root.<br />
<br />
<pre><br />
# cp -av /etc/httpd /etc/httpd-freeside<br />
</pre><br />
<br />
You can remove any extra conf files from /etc/httpd-freeside/conf.d (webdav, php, etc.) if you're not using them. They'll only take up more memory and potentially make freeside slower.<br />
<br />
=== /etc/httpd-freeside/conf/httpd.conf ===<br />
<br />
Change the following Apache configuration directives in /etc/httpd-freeside/conf/httpd.conf to match our previous changes.<br />
<br />
* ServerRoot "/etc/httpd-freeside"<br />
* PidFile run/httpd-freeside.pid<br />
<br />
We're changing the listening port in case you're using the default Apache configuration (and port) for something else. This can be remedied by binding to a specific IP address as well (eg. 192.168.0.2:80).<br />
<br />
* Listen 8080<br />
<br />
Freeside's instance of Apache needs to run as the freeside user and group.<br />
<br />
* User freeside<br />
* Group freeside<br />
<br />
* DocumentRoot "/var/www/freeside/html"<br />
<br />
* &lt;Directory "/var/www/freeside/html"&gt;<br />
<br />
* ErrorLog logs/freeside_error_log<br />
* CustomLog logs/freeside_access_log combined<br />
<br />
<br />
=== Install Docs and Freeside's Apache Includes ===<br />
<br />
Inside the freeside source directory, run "make install-docs" and "make install-apache" as root.<br />
<br />
<pre><br />
# make install-docs<br />
# make install-apache<br />
</pre><br />
<br />
Edit the config file that was just created (/etc/httpd-freeside/conf.d/freeside-base2.conf) by "make install-apache" and change the AuthUserFile directive to match our new path.<br />
<br />
* AuthUserFile /etc/freeside/htpasswd<br />
<br />
<br />
== Populating the Database ==<br />
<br />
Populate the freeside database with the initial data, as the freeside user.<br />
<br />
<pre><br />
$ freeside-setup -d example.com<br />
</pre><br />
<br />
Create the freeside system users, as the freeside user.<br />
<br />
<pre><br />
$ freeside-adduser -g 1 fs_queue<br />
$ freeside-adduser -g 1 fs_daily<br />
$ freeside-adduser -g 1 fs_selfservice<br />
</pre><br />
<br />
Create whatever other freeside users you want, again, as the freeside user.<br />
<br />
<pre><br />
freeside-adduser -g 1 username<br />
htpasswd /etc/freeside/htpasswd username<br />
</pre><br />
<br />
Repeat the last two commands as many times as you want for your internal staff's freeside accounts.<br />
<br />
== Startup Configuration ==<br />
<br />
We just need to make sure that our new instance of Apache and the freeside queue daemon start when we boot.<br />
<br />
<pre><br />
# make install-init<br />
<br />
# chkconfig freeside on<br />
# chkconfig httpd-freeside on<br />
</pre><br />
<br />
And last but not least...start freeside's Apache instance.<br />
<br />
<pre><br />
# service httpd-freeside start<br />
</pre><br />
<br />
Hopefully, Apache should start without errors. If you do get errors, check /var/log/httpd/freeside_error_log.<br />
<br />
Assuming Apache started correctly, you should now be able to access freeside via http://&lt;Your server's FQDN or IP&gt;:8080/. You can login using the username and password you set earlier with htpasswd.<br />
<br />
From here, consult the standard freeside install documentation in the wiki on how to proceed with initial configuration. Good luck!<br />
<br />
== Problems ==<br />
<br />
There might be some formatting issues as this was converted from TWiki to MediaWiki markup. If the syntax of a command doesn't look correct or doesn't make sense, it probably didn't get escaped correctly, or your web browser gobbled up some angle brackets, or both!</div>
Khoff
http://www.freeside.biz/mediawiki/index.php?title=Freeside:1.7:Documentation:InstallingOnCentOS4&diff=1742
Freeside:1.7:Documentation:InstallingOnCentOS4
2007-03-05T21:49:11Z
<p>Khoff: </p>
<hr />
<div>= Installing Freeside 1.7.x on CentOS 4.4 =<br />
<br />
This is a (hopefully) step-by-step guide for doing a basic installation of Freeside on CentOS 4.4 using RPMs whenever possible. It would probably be easier to use CPAN directly in some cases, but that wouldn't be very fun now would it?<br />
<br />
== Software Installation ==<br />
<br />
Run the correct command below depending on your architecture.<br />
<br />
<pre><br />
# export BASEARCH=i386<br />
</pre><br />
...or...<br />
<pre><br />
# export BASEARCH=x86_64<br />
</pre><br />
<br />
=== Binary Packages ===<br />
{| border="1"<br />
|-<br />
|*Package*||*Repo*||*Version*<br />
|-<br />
|httpd||base||2.0.52-28.ent.centos4<br />
|-<br />
|postgresql-server||update||7.4.16-1.RHEL4.1<br />
|-<br />
|tetex||base||2.0.2-22.EL4.7<br />
|-<br />
|ghostscript||base||7.07-33<br />
<br />
|}<br />
<br />
<pre><br />
# yum install httpd postgresql-server tetex ghostscript.$BASEARCH<br />
</pre><br />
<br />
=== Perl Packages ===<br />
<br />
Setup 3rd party repos for most of the extra perl modules.<br />
<br />
<pre><br />
# rpm -ivh http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.$BASEARCH.rpm<br />
# rpm --import http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt<br />
<br />
# cat &lt;&lt;END&gt;/etc/yum.repos.d/dries.repo<br />
[dries]<br />
name=Extra Fedora rpms dries - \$releasever - \$basearch<br />
baseurl=http://ftp.belnet.be/packages/dries.ulyssis.org/redhat/el\$releasever/en/\$basearch/dries/RPMS<br />
END<br />
# rpm --import http://dries.ulyssis.org/rpm/RPM-GPG-KEY.dries.txt<br />
</pre><br />
<br />
Install the cpan2rpm tool so we can build RPMs from CPAN packages.<br />
<br />
<pre><br />
# rpm --import http://perl.arix.com/cpan2rpm/gpg.pub.asc<br />
# yum install rpm-build perl-Module-Build<br />
# rpm -ivh http://superb-east.dl.sourceforge.net/sourceforge/cpan2rpm/cpan2rpm-2.027-1.noarch.rpm<br />
</pre><br />
<br />
==== mod_perl2 ====<br />
<br />
CentOS 4.4 still uses mod_perl-1.99_16. Unfortunately, this isn't really considered mod_perl-1.99 or mod_perl-2 because of major API changes that took place just before the mod_perl-2 release. Several of the required perl modules will break if we use 1.99_16. Instead, use the modified mod_perl 2.0.3 SRPM from Fedora Core 6.<br />
<br />
<pre><br />
# yum install httpd-devel apr-devel apr-util-devel gdbm-devel<br />
<br />
# wget -O /usr/src/redhat/SRPMS/mod_perl-2.0.3-4.freeside.src.rpm http://users.fire2wire.com/~khoff/freeside/1.7.0/mod_perl-2.0.3-4.freeside.src.rpm<br />
# rpmbuild --target=${BASEARCH} --rebuild /usr/src/redhat/SRPMS/mod_perl-2.0.3-4.freeside.src.rpm<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/mod_perl-2.0.3-4.freeside.${BASEARCH}.rpm<br />
</pre><br />
<br />
==== Freeside Prereqs ====<br />
{| border="1"<br />
|-<br />
|*Perl Module*||*Package*||*Version*||*Repo*<br />
|-<br />
|libnet||libnet||1.1.2.1-2.rf||extras<br />
|-<br />
|libwww-perl||perl-libwww-perl.noarch||5.79-5||base<br />
|-<br />
|URI||perl-URI.noarch||1.30-4||base<br />
|-<br />
|HTML::Tagset||perl-HTML-Tagset.noarch||3.03-30||base<br />
|-<br />
|HTML::Parser||perl-HTML-Parser||3.35-6||base<br />
|-<br />
|DBI||perl-DBI||1.40-8||base<br />
|-<br />
|DBD::MySQL||perl-DBD-MySQL||2.9004-3.1||base<br />
|-<br />
|MailTools||perl-MailTools.noarch||1.74-1.c4||extras<br />
|-<br />
|TimeDate||perl-TimeDate.noarch||1.16-1.c4||extras<br />
|-<br />
|Date::Manip||perl-DateManip.noarch||5.42a-3||base<br />
|-<br />
|HTML::Mason||perl-HTML-Mason||1.3200-1.el4.rf||rpmforge<br />
|-<br />
|Text::Template||perl-Text-Template||1.44-1.2.el4.rf||dries<br />
|-<br />
|DateTime||perl-DateTime||0.2901-1.2.el4.rf||rpmforge<br />
|-<br />
|Chart||perl-Chart||2.4.1-1.el4.rf||dries<br />
|-<br />
|Cache::Cache||perl-Cache-Cache||1.05-1.el4.rf||dries<br />
|-<br />
|NetAddr::IP||perl-NetAddr-IP||4.004-1.el4.rf||rpmforge<br />
|-<br />
|String::Approx||perl-String-Approx||3.26-1.el4.rf||dries<br />
|-<br />
|Locale::SubCountry||perl-Locale-SubCountry||1.38-1.el4.rf||dries<br />
|-<br />
|Term::ReadKey||perl-Term-ReadKey||2.30-2.2.el4.rf||dries<br />
|-<br />
|DateTime::Format::Strptime||perl-DateTime-Format-Strptime||1.0700-1.2.el4.rf||dries<br />
|-<br />
|Net::Whois::Raw||perl-Net-Whois-Raw||1.20-1.el4.rf||dries<br />
|-<br />
|DBIx::DBSchema||perl-DBIx-DBSchema||0.31-1.el4.rf||dries<br />
|-<br />
|Tie::IxHash||perl-Tie-IxHash||1.21-1.2.el4.rf||dries<br />
|-<br />
|Crypt::PasswdMD5||perl-Crypt-PasswdMD5||1.3-1.2.el4.rf||dries<br />
|-<br />
|File::CounterFile||perl-File-CounterFile||1.04-1.2.el4.rf||dries<br />
|-<br />
|IPC::Run3||perl-IPC-Run3||0.036-1.el4.rf||dries<br />
|-<br />
|Net::SSH||perl-Net-SSH||0.08-1.2.el4.rf||dries<br />
|-<br />
|String::ShellQuote||perl-String-ShellQuote||1.03-2.2.el4.rf||dries<br />
|-<br />
|JSON||perl-JSON||1.07-1.el4.rf||dries<br />
|-<br />
|Data::Table||perl-Data-Table||1.50-1.el4.rf||dries<br />
|-<br />
|Lingua::EN::NameParse||perl-Lingua-EN-NameParse||1.22-2.2.el4.rf||dries<br />
|-<br />
|Lingua::EN::Inflect||perl-Lingua-EN-Inflect||1.89-1.2.el4.rf||dries<br />
|-<br />
|Apache::DBI||perl-Apache-DBI||0.9901-2.2.el4.rf||dries<br />
|-<br />
|IO::Scalar||perl-IO-stringy||2.110-1.2.el4.rf||dries<br />
|-<br />
|Text::CSV_XS||perl-Text-CSV_XS||0.23-1.2.el4.rf||dries<br />
|-<br />
|Spreadsheet::WriteExcel||perl-Spreadsheet-WriteExcel||2.17-1.el4.rf||dries<br />
|-<br />
|MIME-tools||perl-MIME-tools||5.420-1.el4.rf||dries<br />
|-<br />
|Date::Manip||perl-DateManip||5.42a-3||base<br />
|-<br />
|Crypt::DES||perl-Crypt-DES||2.05-3.2.el4.rf||dries<br />
|-<br />
|Crypt::Blowfish||perl-Crypt-Blowfish||2.10-1.2.el4.rf||dries<br />
|-<br />
|Digest::MD4||perl-Digest-MD4||1.5-1.2.el4.rf||dries<br />
|-<br />
|Crypt::Rijndael||perl-Crypt-Rijndael||0.05-1.2.el4.rf||dries<br />
|-<br />
|ExtUtils::CBuilder||perl-ExtUtils-CBuilder||0.18-1.el4.rf||dries<br />
|-<br />
|DBD::Pg||||cpan2rpm<br />
|-<br />
|Locale-Codes|| | ||cpan2rpm<br />
|-<br />
|Frontier::RPC2|| | ||cpan2rpm<br />
|-<br />
|Business::CreditCard|| | ||cpan2rpm<br />
|-<br />
|Time::Duration|| | ||cpan2rpm<br />
|-<br />
|HTML::Widgets::SelectLayers|| | ||cpan2rpm<br />
|-<br />
|Color::Scheme|| | ||cpan2rpm<br />
|-<br />
|Params::Classify||||cpan2rpm<br />
|-<br />
|Scalar::Number||||cpan2rpm<br />
|-<br />
|Data::Integer||||cpan2rpm<br />
|-<br />
|Data::Float||||cpan2rpm<br />
|-<br />
|Module::Runtime||||cpan2rpm<br />
|-<br />
|Authen::DecHpwd||||cpan2rpm<br />
|-<br />
|Data::Entropy::Algorithms||||cpan2rpm<br />
|-<br />
|Crypt::MySQL||||cpan2rpm<br />
|-<br />
|Crypt::Eksblowfish||||cpan2rpm<br />
|-<br />
|Crypt::UnixCrypt_XS||||cpan2rpm<br />
|-<br />
|Fax::Hylafax::Client|| | ||cpan2rpm<br />
<br />
|}<br />
<br />
<pre><br />
# yum install libnet perl-libwww-perl perl-URI perl-HTML-Tagset<br />
# yum install perl-HTML-Parser <br />
# yum install perl-MailTools perl-TimeDate<br />
<br />
# yum install perl-HTML-Mason perl-Text-Template perl-DateTime perl-Chart<br />
# yum install perl-Cache-Cache perl-NetAddr-IP perl-String-Approx<br />
# yum install perl-Locale-SubCountry perl-Term-ReadKey<br />
# yum install perl-DateTime-Format-Strptime perl-Net-Whois-Raw<br />
# yum install perl-Tie-IxHash perl-Crypt-PasswdMD5<br />
# yum install perl-File-CounterFile perl-IPC-Run3 perl-Net-SSH<br />
# yum install perl-String-ShellQuote perl-JSON perl-Data-Table<br />
# yum install perl-Lingua-EN-NameParse perl-Lingua-EN-Inflect<br />
# yum install perl-IO-stringy perl-Text-CSV_XS perl-Spreadsheet-WriteExcel<br />
# yum install perl-MIME-tools perl-DateManip<br />
# yum install perl-DBI perl-DBD-MySQL perl-Apache-DBI <br />
# yum install perl-Crypt-DES perl-Crypt-Blowfish perl-Digest-MD4<br />
# yum install perl-Crypt-Rijndael perl-ExtUtils-CBuilder<br />
</pre><br />
<br />
You can install these using cpan, or follow the directions here using cpan2rpm.<br />
<br />
* DBD::Pg<br />
<br />
<pre><br />
# cpan2rpm --version='1.32' http://search.cpan.org/CPAN/authors/id/R/RU/RUDY/DBD-Pg-1.32.tar.gz<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-DBD-Pg-1.32-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* DBIx::DBSchema<br />
<br />
<pre><br />
# yum install perl-DBIx-DBSchema<br />
</pre><br />
<br />
* Frontier::RPC2<br />
<br />
<pre><br />
# yum install perl-XML-Parser<br />
# cpan2rpm --author='Ken MacLeod &lt;ken@bitsko.slc.ut.us&gt;' --version='0.07b4' Frontier-RPC<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Frontier-RPC-0.07b4-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Business::CreditCard<br />
<br />
<pre><br />
# cpan2rpm Business::CreditCard<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Business-CreditCard-0.30-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Time::Duration<br />
<br />
<pre><br />
# yum install perl-Test-Pod perl-Test-Pod-Coverage<br />
# cpan2rpm Time::Duration<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Time-Duration-1.04-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* HTML::Widgets::SelectLayers<br />
<br />
<pre><br />
# cpan2rpm HTML::Widgets::SelectLayers<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-HTML-Widgets-SelectLayers-0.06-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Color::Scheme<br />
<br />
Ran into much brokenness when trying to build Test-Simple-0.67. Just skip the dep checks and test phase and hope. I mean, come on, it's Color::Scheme for crying out loud!<br />
<br />
<pre><br />
# yum install perl-Test-Differences<br />
# cpan2rpm --make-no-test --no-depchk Color::Scheme<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Color-Scheme-1.02-1.noarch.rpm<br />
</pre><br />
<br />
* Params::Classify<br />
<br />
Install some deps first...<br />
<br />
** Scalar::Number<br />
<br />
*** Data::Integer<br />
<pre><br />
# cpan2rpm Data::Integer<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Integer-0.001-1.noarch.rpm<br />
</pre><br />
<br />
*** Data::Float<br />
<pre><br />
# cpan2rpm Data::Float<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Float-0.005-1.noarch.rpm<br />
</pre><br />
<br />
<pre><br />
# cpan2rpm Scalar::Number<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Scalar-Number-0.001-1.noarch.rpm<br />
<br />
# cpan2rpm Params::Classify<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Params-Classify-0.002-1.noarch.rpm<br />
</pre><br />
<br />
* Module::Runtime<br />
<pre><br />
# cpan2rpm Module::Runtime<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Module-Runtime-0.003-1.noarch.rpm<br />
</pre><br />
<br />
* Authen::DecHpwd<br />
<pre><br />
# cpan2rpm Authen::DecHpwd<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Authen-DecHpwd-2.001-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Data::Entropy::Algorithms<br />
<pre><br />
# cpan2rpm --make-no-test Data::Entropy<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Entropy-0.003-1.noarch.rpm<br />
</pre><br />
<br />
* Crypt::MySQL<br />
<pre><br />
# cpan2rpm --version='0.04' --author='IKEBE Tomohiro <ikebe@shebang.jp>' Crypt::MySQL<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Crypt-MySQL-0.04-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Crypt::Eksblowfish<br />
<pre><br />
# cpan2rpm Crypt::Eksblowfish<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Crypt-Eksblowfish-0.001-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Crypt::UnixCrypt_XS<br />
<pre><br />
# cpan2rpm Crypt::UnixCrypt_XS<br />
# rpm -ivh /usr/src/redhat/RPMS/${BASEARCH}/perl-Crypt-UnixCrypt_XS-0.05-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Fax::Hylafax::Client (Optional)<br />
<br />
Skip the tests here as well, unless you happen to have a properly configured HylaFAX server handy.<br />
Or, skip the package entirely if you don't plan on sending FAX invoices.<br />
<br />
<pre><br />
# cpan2rpm --make-no-test Fax::Hylafax::Client<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Fax-Hylafax-Client-1.02-1.noarch.rpm<br />
</pre><br />
<br />
==== RT Prereqs ====<br />
<br />
{| border="1"<br />
|-<br />
|*Perl Module*||*Package*||*Version*||*Repo*<br />
|-<br />
|Apache::Session||perl-Apache-Session||1.81-1.el4.rf||dries<br />
|-<br />
|HTML-Format||perl-HTML-Format||2.04-1.2.el4.rf||dries<br />
|-<br />
|Class::ReturnValue||perl-Class-ReturnValue||0.53-1.2.el4.rf||dries<br />
|-<br />
|DBIx::SearchBuilder||perl-DBIx-SearchBuilder||1.43-1.el4.rf||rpmforge<br />
|-<br />
|Log::Dispatch||perl-Log-Dispatch||2.11-1.2.el4.rf||rpmforge<br />
|-<br />
|Locale::Maketext::Lexicon||perl-Locale-Maketext-Lexicon||0.62-1.el4.rf||dries<br />
|-<br />
|Locale::Maketext::Fuzzy||perl-Locale-Maketext-Fuzzy||0.02-1.2.el4.rf||dries<br />
|-<br />
|Text::Wrapper||perl-Text-Wrapper||1.000-1.2.el4.rf||dries<br />
|-<br />
|Time-modules||perl-Time-modules||2003.1126-1.2.el4.rf||dries<br />
|-<br />
|Text::Autoformat||perl-Text-Autoformat||1.13-1.2.el4.rf||dries<br />
|-<br />
|Text::Quoted||perl-Text-Quoted||1.8-1.2.el4.rf||dries<br />
|-<br />
|Regexp::Common||perl-Regexp-Common||2.120-1.2.el4.rf||dries<br />
|-<br />
|HTML::Scrubber||perl-HTML-Scrubber||0.08-1.2.el4.rf||dries<br />
|-<br />
|Tree::Simple||perl-Tree-Simple||1.17-1.el4.rf||dries<br />
|-<br />
|HTML::TreeBuilder||perl-HTML-Tree||3.23-1.el4.rf||dries<br />
<br />
|}<br />
<br />
<pre><br />
# yum install perl-Apache-Session perl-HTML-Format perl-Class-ReturnValue<br />
# yum install perl-Locale-Maketext-Lexicon perl-Locale-Maketext-Fuzzy<br />
# yum install perl-Text-Wrapper perl-Time-modules<br />
# yum install perl-Text-Autoformat perl-Text-Quoted perl-Regexp-Common<br />
# yum install perl-HTML-Scrubber perl-Tree-Simple perl-HTML-Tree<br />
</pre><br />
<br />
* Log::Dispatch<br />
<br />
Use the SRPM from Fedora Core 5. They have the correct and properly patched version that supports mod_perl 2.<br />
<br />
But first, a couple of prereqs.<br />
<br />
<pre><br />
# yum install perl-File-Find-Rule perl-IO-String<br />
# yum install perl-MIME-Lite perl-Mail-Sender<br />
</pre><br />
<br />
Now build and install Log::Dispatch itself.<br />
<br />
<pre><br />
# wget -O /usr/src/redhat/SRPMS/perl-Log-Dispatch-2.15-2.fc5.src.rpm http://download.fedora.redhat.com/pub/fedora/linux/extras/5/SRPMS/perl-Log-Dispatch-2.15-2.fc5.src.rpm<br />
<br />
# rpmbuild --rebuild /usr/src/redhat/SRPMS/perl-Log-Dispatch-2.15-2.src.rpm<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Log-Dispatch-2.15-2.noarch.rpm<br />
</pre><br />
<br />
* DBIx::SearchBuilder<br />
<br />
DBIx::searchBuilder is a little painful to install because it requires DBD::Oracle. You can just run "yum install perl-DBIx-SearchBuilder" if you want to go through the trouble of building and installing DBD::Oracle first. Again, that can be rather painful and isn't within the scope of this guide.<br />
<br />
The alternative below is to force install the RPM for DBIx::SearchBuilder since we're not going to use Oracle anyway. You have to exclude it from future updates in yum otherwise you'll get dep failures everytime you do a "yum upgrade".<br />
<br />
If you're not going to use RT, just skip DBIx::SearchBuilder altogether.<br />
<br />
<pre><br />
# yum install perl-Want perl-Clone perl-Cache-Simple-TimedExpiry<br />
# yum install perl-DBD-SQLite perl-capitalization perl-Class-Accessor<br />
<br />
# rpm -ivh --nodeps http://apt.sw.be/redhat/el4/en/${BASEARCH}/dag/RPMS/perl-DBIx-SearchBuilder-1.43-1.el4.rf.noarch.rpm<br />
<br />
# echo "exclude=perl-DBIx-SearchBuilder" >> /etc/yum.conf<br />
</pre><br />
<br />
<br />
<br />
== System configuration ==<br />
<br />
This is just following the directions with CentOS-specific commands.<br />
<br />
<pre><br />
# groupadd freeside<br />
# useradd -g freeside freeside<br />
</pre><br />
<br />
With CentOS 4.4, postgresql wouldn't start if SELinux was enabled. We call "setenforce 0" here to temporarily disable it. Some claim that it only needs to be disabled the first time postgresql is started.<br />
<br />
Enable postgresql at startup, disable selinux temporarily, and start postgresql.<br />
<br />
<pre><br />
# chkconfig postgresql on<br />
# setenfore 0<br />
# service postgresql start<br />
</pre><br />
<br />
Create the freeside datbase user for postgresql.<br />
<br />
<pre><br />
# su -c "createuser -P freeside" - postgres<br />
</pre><br />
<br />
== Installing Freeside ==<br />
<br />
su to the freeside user, extract a copy of the freeside tarball or check out the code from CVS into the freeside user's home directory. You should have the freeside top-level Makefile in /home/freeside/freeside/Makefile or /home/freeside/freeside-1.7.0/Makefile at this point. 1.7.0 wasn't officially released at the time of writing, so we're using a version checked-out from CVS.<br />
<br />
Edit freeside's top-level Makefile with your configuration. Here are some examples...<br />
<br />
<pre><br />
FREESIDE_CONF = /etc/freeside<br />
FREESIDE_LOG = /var/log/freeside<br />
FREESIDE_LOCK = /var/lib/freeside<br />
FREESIDE_CACHE = /var/lib/freeside<br />
FREESIDE_EXPORT = /var/lib/freeside<br />
<br />
APACHE_VERSION = 2<br />
FREESIDE_DOCUMENT_ROOT = /var/www/freeside/html<br />
<br />
INIT_FILE = /etc/init.d/freeside<br />
INIT_INSTALL = /sbin/chkconfig freeside on<br />
<br />
HTTPD_RESTART = /etc/init.d/httpd restart<br />
APACHE_CONF = /etc/httpd-freeside/conf.d<br />
</pre><br />
<br />
As the freeside user, create the database and make the perl modules.<br />
<br />
<pre><br />
$ createdb -E sql_ascii freeside<br />
<br />
$ make perl-modules<br />
</pre><br />
<br />
As root, install the perl modules and create the initial config.<br />
<br />
<pre><br />
# make install-perl-modules<br />
<br />
# mkdir -m 770 /var/lib/freeside<br />
# chown -R freeside:root /var/lib/freeside/<br />
# make create-config<br />
</pre><br />
<br />
== Apache Configuration ==<br />
<br />
=== Creating Freeside's Apache Instance ===<br />
<br />
The default Apache init script for CentOS doesn't make it very easy to setup multiple instances of Apache. A few small modifications take care of that problem.<br />
<br />
Start by making a copy of the init script, as well as download the patch and apply it to your httpd-freeside init script. You can make a symlink if you'd like to eventually setup additional Apache instances.<br />
<br />
<pre><br />
# ln -s /etc/init.d/httpd /etc/init.d/httpd-freeside<br />
<br />
# cd /etc/init.d/<br />
# wget -O /tmp/httpd-freeside.patch http://users.fire2wire.com/~khoff/freeside/1.7.0/httpd-freeside.patch<br />
# patch < /tmp/httpd-freeside.patch<br />
</pre><br />
<br />
Make a copy of the Apache server root.<br />
<br />
<pre><br />
# cp -av /etc/httpd /etc/httpd-freeside<br />
</pre><br />
<br />
You can remove any extra conf files from /etc/httpd-freeside/conf.d (webdav, php, etc.) if you're not using them. They'll only take up more memory and potentially make freeside slower.<br />
<br />
=== /etc/httpd-freeside/conf/httpd.conf ===<br />
<br />
Change the following Apache configuration directives in /etc/httpd-freeside/conf/httpd.conf to match our previous changes.<br />
<br />
* ServerRoot "/etc/httpd-freeside"<br />
* PidFile run/httpd-freeside.pid<br />
<br />
We're changing the listening port in case you're using the default Apache configuration (and port) for something else. This can be remedied by binding to a specific IP address as well (eg. 192.168.0.2:80).<br />
<br />
* Listen 8080<br />
<br />
Freeside's instance of Apache needs to run as the freeside user and group.<br />
<br />
* User freeside<br />
* Group freeside<br />
<br />
* DocumentRoot "/var/www/freeside/html"<br />
<br />
* &lt;Directory "/var/www/freeside/html"&gt;<br />
<br />
* ErrorLog logs/freeside_error_log<br />
* CustomLog logs/freeside_access_log combined<br />
<br />
<br />
=== Install Docs and Freeside's Apache Includes ===<br />
<br />
Inside the freeside source directory, run "make install-docs" and "make install-apache" as root.<br />
<br />
<pre><br />
# make install-docs<br />
# make install-apache<br />
</pre><br />
<br />
Edit the config file that was just created (/etc/httpd-freeside/conf.d/freeside-base2.conf) by "make install-apache" and change the AuthUserFile directive to match our new path.<br />
<br />
* AuthUserFile /etc/freeside/htpasswd<br />
<br />
<br />
== Populating the Database ==<br />
<br />
Populate the freeside database with the initial data, as the freeside user.<br />
<br />
<pre><br />
$ freeside-setup -d example.com<br />
</pre><br />
<br />
Create the freeside system users, as the freeside user.<br />
<br />
<pre><br />
$ freeside-adduser -g 1 fs_queue<br />
$ freeside-adduser -g 1 fs_daily<br />
$ freeside-adduser -g 1 fs_selfservice<br />
</pre><br />
<br />
Create whatever other freeside users you want, again, as the freeside user.<br />
<br />
<pre><br />
freeside-adduser -g 1 username<br />
htpasswd /etc/freeside/htpasswd username<br />
</pre><br />
<br />
Repeat the last two commands as many times as you want for your internal staff's freeside accounts.<br />
<br />
== Startup Configuration ==<br />
<br />
We just need to make sure that our new instance of Apache and the freeside queue daemon start when we boot.<br />
<br />
<pre><br />
# make install-init<br />
<br />
# chkconfig freeside on<br />
# chkconfig httpd-freeside on<br />
</pre><br />
<br />
And last but not least...start freeside's Apache instance.<br />
<br />
<pre><br />
# service httpd-freeside start<br />
</pre><br />
<br />
Hopefully, Apache should start without errors. If you do get errors, check /var/log/httpd/freeside_error_log.<br />
<br />
Assuming Apache started correctly, you should now be able to access freeside via http://&lt;Your server's FQDN or IP&gt;:8080/. You can login using the username and password you set earlier with htpasswd.<br />
<br />
From here, consult the standard freeside install documentation in the wiki on how to proceed with initial configuration. Good luck!<br />
<br />
== Problems ==<br />
<br />
There might be some formatting issues as this was converted from TWiki to MediaWiki markup. If the syntax of a command doesn't look correct or doesn't make sense, it probably didn't get escaped correctly, or your web browser gobbled up some angle brackets, or both!</div>
Khoff
http://www.freeside.biz/mediawiki/index.php?title=Freeside:1.7:Documentation:InstallingOnCentOS4&diff=1741
Freeside:1.7:Documentation:InstallingOnCentOS4
2007-03-05T21:45:01Z
<p>Khoff: /* Freeside Prereqs */</p>
<hr />
<div>= Installing Freeside 1.7.x on CentOS 4.4 =<br />
<br />
This is a (hopefully) step-by-step guide for doing a basic installation of Freeside on CentOS 4.4 using RPMs whenever possible. It would probably be easier to use CPAN directly in some cases, but that wouldn't be very fun now would it?<br />
<br />
== Software Installation ==<br />
<br />
Run the correct command below depending on your architecture.<br />
<br />
<pre><br />
# export BASEARCH=i386<br />
</pre><br />
...or...<br />
<pre><br />
# export BASEARCH=x86_64<br />
</pre><br />
<br />
=== Binary Packages ===<br />
{| border="1"<br />
|-<br />
|*Package*||*Repo*||*Version*<br />
|-<br />
|httpd||base||2.0.52-28.ent.centos4<br />
|-<br />
|postgresql-server||update||7.4.16-1.RHEL4.1<br />
|-<br />
|tetex||base||2.0.2-22.EL4.7<br />
|-<br />
|ghostscript.x86_64||base||7.07-33<br />
<br />
|}<br />
<br />
<pre><br />
# yum install httpd postgresql-server tetex ghostscript.$BASEARCH<br />
</pre><br />
<br />
=== Perl Packages ===<br />
<br />
Setup 3rd party repos for most of the extra perl modules.<br />
<br />
<pre><br />
# rpm -ivh http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.$BASEARCH.rpm<br />
# rpm --import http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt<br />
<br />
# cat &lt;&lt;END&gt;/etc/yum.repos.d/dries.repo<br />
[dries]<br />
name=Extra Fedora rpms dries - \$releasever - \$basearch<br />
baseurl=http://ftp.belnet.be/packages/dries.ulyssis.org/redhat/el\$releasever/en/\$basearch/dries/RPMS<br />
END<br />
# rpm --import http://dries.ulyssis.org/rpm/RPM-GPG-KEY.dries.txt<br />
</pre><br />
<br />
Install the cpan2rpm tool so we can build RPMs from CPAN packages.<br />
<br />
<pre><br />
# rpm --import http://perl.arix.com/cpan2rpm/gpg.pub.asc<br />
# yum install rpm-build perl-Module-Build<br />
# rpm -ivh http://superb-east.dl.sourceforge.net/sourceforge/cpan2rpm/cpan2rpm-2.027-1.noarch.rpm<br />
</pre><br />
<br />
==== mod_perl2 ====<br />
<br />
CentOS 4.4 still uses mod_perl-1.99_16. Unfortunately, this isn't really considered mod_perl-1.99 or mod_perl-2 because of major API changes that took place just before the mod_perl-2 release. Several of the required perl modules will break if we use 1.99_16. Instead, use the modified mod_perl 2.0.3 SRPM from Fedora Core 6.<br />
<br />
<pre><br />
# yum install httpd-devel apr-devel apr-util-devel gdbm-devel<br />
<br />
# wget -O /usr/src/redhat/SRPMS/mod_perl-2.0.3-4.freeside.src.rpm http://users.fire2wire.com/~khoff/freeside/1.7.0/mod_perl-2.0.3-4.freeside.src.rpm<br />
# rpmbuild --target=${BASEARCH} --rebuild /usr/src/redhat/SRPMS/mod_perl-2.0.3-4.freeside.src.rpm<br />
# rpm -ivh /usr/src/redhat/RPMS/x86_64/mod_perl-2.0.3-4.freeside.${BASEARCH}.rpm<br />
</pre><br />
<br />
==== Freeside Prereqs ====<br />
{| border="1"<br />
|-<br />
|*Perl Module*||*Package*||*Version*||*Repo*<br />
|-<br />
|libnet||libnet.x86_64||1.1.2.1-2.rf||extras<br />
|-<br />
|libwww-perl||perl-libwww-perl.noarch||5.79-5||base<br />
|-<br />
|URI||perl-URI.noarch||1.30-4||base<br />
|-<br />
|HTML::Tagset||perl-HTML-Tagset.noarch||3.03-30||base<br />
|-<br />
|HTML::Parser||perl-HTML-Parser.x86_64||3.35-6||base<br />
|-<br />
|DBI||perl-DBI.x86_64||1.40-8||base<br />
|-<br />
|DBD::MySQL||perl-DBD-MySQL.x86_64||2.9004-3.1||base<br />
|-<br />
|MailTools||perl-MailTools.noarch||1.74-1.c4||extras<br />
|-<br />
|TimeDate||perl-TimeDate.noarch||1.16-1.c4||extras<br />
|-<br />
|Date::Manip||perl-DateManip.noarch||5.42a-3||base<br />
|-<br />
|HTML::Mason||perl-HTML-Mason||1.3200-1.el4.rf||rpmforge<br />
|-<br />
|Text::Template||perl-Text-Template||1.44-1.2.el4.rf||dries<br />
|-<br />
|DateTime||perl-DateTime||0.2901-1.2.el4.rf||rpmforge<br />
|-<br />
|Chart||perl-Chart||2.4.1-1.el4.rf||dries<br />
|-<br />
|Cache::Cache||perl-Cache-Cache||1.05-1.el4.rf||dries<br />
|-<br />
|NetAddr::IP||perl-NetAddr-IP||4.004-1.el4.rf||rpmforge<br />
|-<br />
|String::Approx||perl-String-Approx||3.26-1.el4.rf||dries<br />
|-<br />
|Locale::SubCountry||perl-Locale-SubCountry||1.38-1.el4.rf||dries<br />
|-<br />
|Term::ReadKey||perl-Term-ReadKey||2.30-2.2.el4.rf||dries<br />
|-<br />
|DateTime::Format::Strptime||perl-DateTime-Format-Strptime||1.0700-1.2.el4.rf||dries<br />
|-<br />
|Net::Whois::Raw||perl-Net-Whois-Raw||1.20-1.el4.rf||dries<br />
|-<br />
|DBIx::DBSchema||perl-DBIx-DBSchema||0.31-1.el4.rf||dries<br />
|-<br />
|Tie::IxHash||perl-Tie-IxHash||1.21-1.2.el4.rf||dries<br />
|-<br />
|Crypt::PasswdMD5||perl-Crypt-PasswdMD5||1.3-1.2.el4.rf||dries<br />
|-<br />
|File::CounterFile||perl-File-CounterFile||1.04-1.2.el4.rf||dries<br />
|-<br />
|IPC::Run3||perl-IPC-Run3||0.036-1.el4.rf||dries<br />
|-<br />
|Net::SSH||perl-Net-SSH||0.08-1.2.el4.rf||dries<br />
|-<br />
|String::ShellQuote||perl-String-ShellQuote||1.03-2.2.el4.rf||dries<br />
|-<br />
|JSON||perl-JSON||1.07-1.el4.rf||dries<br />
|-<br />
|Data::Table||perl-Data-Table||1.50-1.el4.rf||dries<br />
|-<br />
|Lingua::EN::NameParse||perl-Lingua-EN-NameParse||1.22-2.2.el4.rf||dries<br />
|-<br />
|Lingua::EN::Inflect||perl-Lingua-EN-Inflect||1.89-1.2.el4.rf||dries<br />
|-<br />
|Apache::DBI||perl-Apache-DBI||0.9901-2.2.el4.rf||dries<br />
|-<br />
|IO::Scalar||perl-IO-stringy||2.110-1.2.el4.rf||dries<br />
|-<br />
|Text::CSV_XS||perl-Text-CSV_XS||0.23-1.2.el4.rf||dries<br />
|-<br />
|Spreadsheet::WriteExcel||perl-Spreadsheet-WriteExcel||2.17-1.el4.rf||dries<br />
|-<br />
|MIME-tools||perl-MIME-tools||5.420-1.el4.rf||dries<br />
|-<br />
|Date::Manip||perl-DateManip||5.42a-3||base<br />
|-<br />
|Crypt::DES||perl-Crypt-DES||2.05-3.2.el4.rf||dries<br />
|-<br />
|Crypt::Blowfish||perl-Crypt-Blowfish||2.10-1.2.el4.rf||dries<br />
|-<br />
|Digest::MD4||perl-Digest-MD4||1.5-1.2.el4.rf||dries<br />
|-<br />
|Crypt::Rijndael||perl-Crypt-Rijndael||0.05-1.2.el4.rf||dries<br />
|-<br />
|ExtUtils::CBuilder||perl-ExtUtils-CBuilder||0.18-1.el4.rf||dries<br />
|-<br />
|DBD::Pg||||cpan2rpm<br />
|-<br />
|Locale-Codes|| | ||cpan2rpm<br />
|-<br />
|Frontier::RPC2|| | ||cpan2rpm<br />
|-<br />
|Business::CreditCard|| | ||cpan2rpm<br />
|-<br />
|Time::Duration|| | ||cpan2rpm<br />
|-<br />
|HTML::Widgets::SelectLayers|| | ||cpan2rpm<br />
|-<br />
|Color::Scheme|| | ||cpan2rpm<br />
|-<br />
|Params::Classify||||cpan2rpm<br />
|-<br />
|Scalar::Number||||cpan2rpm<br />
|-<br />
|Data::Integer||||cpan2rpm<br />
|-<br />
|Data::Float||||cpan2rpm<br />
|-<br />
|Module::Runtime||||cpan2rpm<br />
|-<br />
|Authen::DecHpwd||||cpan2rpm<br />
|-<br />
|Data::Entropy::Algorithms||||cpan2rpm<br />
|-<br />
|Crypt::MySQL||||cpan2rpm<br />
|-<br />
|Crypt::Eksblowfish||||cpan2rpm<br />
|-<br />
|Crypt::UnixCrypt_XS||||cpan2rpm<br />
|-<br />
|Fax::Hylafax::Client|| | ||cpan2rpm<br />
<br />
|}<br />
<br />
<pre><br />
# yum install libnet perl-libwww-perl perl-URI perl-HTML-Tagset<br />
# yum install perl-HTML-Parser <br />
# yum install perl-MailTools perl-TimeDate<br />
<br />
# yum install perl-HTML-Mason perl-Text-Template perl-DateTime perl-Chart<br />
# yum install perl-Cache-Cache perl-NetAddr-IP perl-String-Approx<br />
# yum install perl-Locale-SubCountry perl-Term-ReadKey<br />
# yum install perl-DateTime-Format-Strptime perl-Net-Whois-Raw<br />
# yum install perl-Tie-IxHash perl-Crypt-PasswdMD5<br />
# yum install perl-File-CounterFile perl-IPC-Run3 perl-Net-SSH<br />
# yum install perl-String-ShellQuote perl-JSON perl-Data-Table<br />
# yum install perl-Lingua-EN-NameParse perl-Lingua-EN-Inflect<br />
# yum install perl-IO-stringy perl-Text-CSV_XS perl-Spreadsheet-WriteExcel<br />
# yum install perl-MIME-tools perl-DateManip<br />
# yum install perl-DBI perl-DBD-MySQL perl-Apache-DBI <br />
# yum install perl-Crypt-DES perl-Crypt-Blowfish perl-Digest-MD4<br />
# yum install perl-Crypt-Rijndael perl-ExtUtils-CBuilder<br />
</pre><br />
<br />
You can install these using cpan, or follow the directions here using cpan2rpm.<br />
<br />
* DBD::Pg<br />
<br />
<pre><br />
# cpan2rpm --version='1.32' http://search.cpan.org/CPAN/authors/id/R/RU/RUDY/DBD-Pg-1.32.tar.gz<br />
# rpm -ivh /usr/src/redhat/RPMS/x86_64/perl-DBD-Pg-1.32-1.x86_64.rpm<br />
</pre><br />
<br />
* DBIx::DBSchema<br />
<br />
<pre><br />
# yum install perl-DBIx-DBSchema<br />
</pre><br />
<br />
* Frontier::RPC2<br />
<br />
<pre><br />
# yum install perl-XML-Parser<br />
# cpan2rpm --author='Ken MacLeod &lt;ken@bitsko.slc.ut.us&gt;' --version='0.07b4' Frontier-RPC<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Frontier-RPC-0.07b4-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Business::CreditCard<br />
<br />
<pre><br />
# cpan2rpm Business::CreditCard<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Business-CreditCard-0.30-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Time::Duration<br />
<br />
<pre><br />
# yum install perl-Test-Pod perl-Test-Pod-Coverage<br />
# cpan2rpm Time::Duration<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Time-Duration-1.04-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* HTML::Widgets::SelectLayers<br />
<br />
<pre><br />
# cpan2rpm HTML::Widgets::SelectLayers<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-HTML-Widgets-SelectLayers-0.06-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Color::Scheme<br />
<br />
Ran into much brokenness when trying to build Test-Simple-0.67. Just skip the dep checks and test phase and hope. I mean, come on, it's Color::Scheme for crying out loud!<br />
<br />
<pre><br />
# yum install perl-Test-Differences<br />
# cpan2rpm --make-no-test --no-depchk Color::Scheme<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Color-Scheme-1.02-1.noarch.rpm<br />
</pre><br />
<br />
* Params::Classify<br />
<br />
Install some deps first...<br />
<br />
** Scalar::Number<br />
<br />
*** Data::Integer<br />
<pre><br />
# cpan2rpm Data::Integer<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Integer-0.001-1.noarch.rpm<br />
</pre><br />
<br />
*** Data::Float<br />
<pre><br />
# cpan2rpm Data::Float<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Float-0.005-1.noarch.rpm<br />
</pre><br />
<br />
<pre><br />
# cpan2rpm Scalar::Number<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Scalar-Number-0.001-1.noarch.rpm<br />
<br />
# cpan2rpm Params::Classify<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Params-Classify-0.002-1.noarch.rpm<br />
</pre><br />
<br />
* Module::Runtime<br />
<pre><br />
# cpan2rpm Module::Runtime<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Module-Runtime-0.003-1.noarch.rpm<br />
</pre><br />
<br />
* Authen::DecHpwd<br />
<pre><br />
# cpan2rpm Authen::DecHpwd<br />
# rpm -ivh /usr/src/redhat/RPMS/x86_64/perl-Authen-DecHpwd-2.001-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Data::Entropy::Algorithms<br />
<pre><br />
# cpan2rpm --make-no-test Data::Entropy<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Data-Entropy-0.003-1.noarch.rpm<br />
</pre><br />
<br />
* Crypt::MySQL<br />
<pre><br />
# cpan2rpm --version='0.04' --author='IKEBE Tomohiro <ikebe@shebang.jp>' Crypt::MySQL<br />
# rpm -ivh /usr/src/redhat/RPMS/x86_64/perl-Crypt-MySQL-0.04-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Crypt::Eksblowfish<br />
<pre><br />
# cpan2rpm Crypt::Eksblowfish<br />
# rpm -ivh /usr/src/redhat/RPMS/x86_64/perl-Crypt-Eksblowfish-0.001-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Crypt::UnixCrypt_XS<br />
<pre><br />
# cpan2rpm Crypt::UnixCrypt_XS<br />
# rpm -ivh /usr/src/redhat/RPMS/x86_64/perl-Crypt-UnixCrypt_XS-0.05-1.${BASEARCH}.rpm<br />
</pre><br />
<br />
* Fax::Hylafax::Client (Optional)<br />
<br />
Skip the tests here as well, unless you happen to have a properly configured HylaFAX server handy.<br />
Or, skip the package entirely if you don't plan on sending FAX invoices.<br />
<br />
<pre><br />
# cpan2rpm --make-no-test Fax::Hylafax::Client<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Fax-Hylafax-Client-1.02-1.noarch.rpm<br />
</pre><br />
<br />
==== RT Prereqs ====<br />
<br />
{| border="1"<br />
|-<br />
|*Perl Module*||*Package*||*Version*||*Repo*<br />
|-<br />
|Apache::Session||perl-Apache-Session||1.81-1.el4.rf||dries<br />
|-<br />
|HTML-Format||perl-HTML-Format||2.04-1.2.el4.rf||dries<br />
|-<br />
|Class::ReturnValue||perl-Class-ReturnValue||0.53-1.2.el4.rf||dries<br />
|-<br />
|DBIx::SearchBuilder||perl-DBIx-SearchBuilder||1.43-1.el4.rf||rpmforge<br />
|-<br />
|Log::Dispatch||perl-Log-Dispatch||2.11-1.2.el4.rf||rpmforge<br />
|-<br />
|Locale::Maketext::Lexicon||perl-Locale-Maketext-Lexicon||0.62-1.el4.rf||dries<br />
|-<br />
|Locale::Maketext::Fuzzy||perl-Locale-Maketext-Fuzzy||0.02-1.2.el4.rf||dries<br />
|-<br />
|Text::Wrapper||perl-Text-Wrapper||1.000-1.2.el4.rf||dries<br />
|-<br />
|Time-modules||perl-Time-modules||2003.1126-1.2.el4.rf||dries<br />
|-<br />
|Text::Autoformat||perl-Text-Autoformat||1.13-1.2.el4.rf||dries<br />
|-<br />
|Text::Quoted||perl-Text-Quoted||1.8-1.2.el4.rf||dries<br />
|-<br />
|Regexp::Common||perl-Regexp-Common||2.120-1.2.el4.rf||dries<br />
|-<br />
|HTML::Scrubber||perl-HTML-Scrubber||0.08-1.2.el4.rf||dries<br />
|-<br />
|Tree::Simple||perl-Tree-Simple||1.17-1.el4.rf||dries<br />
|-<br />
|HTML::TreeBuilder||perl-HTML-Tree||3.23-1.el4.rf||dries<br />
<br />
|}<br />
<br />
<pre><br />
# yum install perl-Apache-Session perl-HTML-Format perl-Class-ReturnValue<br />
# yum install perl-Locale-Maketext-Lexicon perl-Locale-Maketext-Fuzzy<br />
# yum install perl-Text-Wrapper perl-Time-modules<br />
# yum install perl-Text-Autoformat perl-Text-Quoted perl-Regexp-Common<br />
# yum install perl-HTML-Scrubber perl-Tree-Simple perl-HTML-Tree<br />
</pre><br />
<br />
* Log::Dispatch<br />
<br />
Use the SRPM from Fedora Core 5. They have the correct and properly patched version that supports mod_perl 2.<br />
<br />
But first, a couple of prereqs.<br />
<br />
<pre><br />
# yum install perl-File-Find-Rule perl-IO-String<br />
# yum install perl-MIME-Lite perl-Mail-Sender<br />
</pre><br />
<br />
Now build and install Log::Dispatch itself.<br />
<br />
<pre><br />
# wget -O /usr/src/redhat/SRPMS/perl-Log-Dispatch-2.15-2.fc5.src.rpm http://download.fedora.redhat.com/pub/fedora/linux/extras/5/SRPMS/perl-Log-Dispatch-2.15-2.fc5.src.rpm<br />
<br />
# rpmbuild --rebuild /usr/src/redhat/SRPMS/perl-Log-Dispatch-2.15-2.src.rpm<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Log-Dispatch-2.15-2.noarch.rpm<br />
</pre><br />
<br />
* DBIx::SearchBuilder<br />
<br />
DBIx::searchBuilder is a little painful to install because it requires DBD::Oracle. You can just run "yum install perl-DBIx-SearchBuilder" if you want to go through the trouble of building and installing DBD::Oracle first. Again, that can be rather painful and isn't within the scope of this guide.<br />
<br />
The alternative below is to force install the RPM for DBIx::SearchBuilder since we're not going to use Oracle anyway. You have to exclude it from future updates in yum otherwise you'll get dep failures everytime you do a "yum upgrade".<br />
<br />
If you're not going to use RT, just skip DBIx::SearchBuilder altogether.<br />
<br />
<pre><br />
# yum install perl-Want perl-Clone perl-Cache-Simple-TimedExpiry<br />
# yum install perl-DBD-SQLite perl-capitalization perl-Class-Accessor<br />
<br />
# rpm -ivh --nodeps http://apt.sw.be/redhat/el4/en/x86_64/dag/RPMS/perl-DBIx-SearchBuilder-1.43-1.el4.rf.noarch.rpm<br />
<br />
# echo "exclude=perl-DBIx-SearchBuilder" >> /etc/yum.conf<br />
</pre><br />
<br />
<br />
<br />
== System configuration ==<br />
<br />
This is just following the directions with CentOS-specific commands.<br />
<br />
<pre><br />
# groupadd freeside<br />
# useradd -g freeside freeside<br />
</pre><br />
<br />
With CentOS 4.4, postgresql wouldn't start if SELinux was enabled. We call "setenforce 0" here to temporarily disable it. Some claim that it only needs to be disabled the first time postgresql is started.<br />
<br />
Enable postgresql at startup, disable selinux temporarily, and start postgresql.<br />
<br />
<pre><br />
# chkconfig postgresql on<br />
# setenfore 0<br />
# service postgresql start<br />
</pre><br />
<br />
Create the freeside datbase user for postgresql.<br />
<br />
<pre><br />
# su -c "createuser -P freeside" - postgres<br />
</pre><br />
<br />
== Installing Freeside ==<br />
<br />
su to the freeside user, extract a copy of the freeside tarball or check out the code from CVS into the freeside user's home directory. You should have the freeside top-level Makefile in /home/freeside/freeside/Makefile or /home/freeside/freeside-1.7.0/Makefile at this point. 1.7.0 wasn't officially released at the time of writing, so we're using a version checked-out from CVS.<br />
<br />
Edit freeside's top-level Makefile with your configuration. Here are some examples...<br />
<br />
<pre><br />
FREESIDE_CONF = /etc/freeside<br />
FREESIDE_LOG = /var/log/freeside<br />
FREESIDE_LOCK = /var/lib/freeside<br />
FREESIDE_CACHE = /var/lib/freeside<br />
FREESIDE_EXPORT = /var/lib/freeside<br />
<br />
APACHE_VERSION = 2<br />
FREESIDE_DOCUMENT_ROOT = /var/www/freeside/html<br />
<br />
INIT_FILE = /etc/init.d/freeside<br />
INIT_INSTALL = /sbin/chkconfig freeside on<br />
<br />
HTTPD_RESTART = /etc/init.d/httpd restart<br />
APACHE_CONF = /etc/httpd-freeside/conf.d<br />
</pre><br />
<br />
As the freeside user, create the database and make the perl modules.<br />
<br />
<pre><br />
$ createdb -E sql_ascii freeside<br />
<br />
$ make perl-modules<br />
</pre><br />
<br />
As root, install the perl modules and create the initial config.<br />
<br />
<pre><br />
# make install-perl-modules<br />
<br />
# mkdir -m 770 /var/lib/freeside<br />
# chown -R freeside:root /var/lib/freeside/<br />
# make create-config<br />
</pre><br />
<br />
== Apache Configuration ==<br />
<br />
=== Creating Freeside's Apache Instance ===<br />
<br />
The default Apache init script for CentOS doesn't make it very easy to setup multiple instances of Apache. A few small modifications take care of that problem.<br />
<br />
Start by making a copy of the init script, as well as download the patch and apply it to your httpd-freeside init script. You can make a symlink if you'd like to eventually setup additional Apache instances.<br />
<br />
<pre><br />
# ln -s /etc/init.d/httpd /etc/init.d/httpd-freeside<br />
<br />
# cd /etc/init.d/<br />
# wget -O /tmp/httpd-freeside.patch http://users.fire2wire.com/~khoff/freeside/1.7.0/httpd-freeside.patch<br />
# patch < /tmp/httpd-freeside.patch<br />
</pre><br />
<br />
Make a copy of the Apache server root.<br />
<br />
<pre><br />
# cp -av /etc/httpd /etc/httpd-freeside<br />
</pre><br />
<br />
You can remove any extra conf files from /etc/httpd-freeside/conf.d (webdav, php, etc.) if you're not using them. They'll only take up more memory and potentially make freeside slower.<br />
<br />
=== /etc/httpd-freeside/conf/httpd.conf ===<br />
<br />
Change the following Apache configuration directives in /etc/httpd-freeside/conf/httpd.conf to match our previous changes.<br />
<br />
* ServerRoot "/etc/httpd-freeside"<br />
* PidFile run/httpd-freeside.pid<br />
<br />
We're changing the listening port in case you're using the default Apache configuration (and port) for something else. This can be remedied by binding to a specific IP address as well (eg. 192.168.0.2:80).<br />
<br />
* Listen 8080<br />
<br />
Freeside's instance of Apache needs to run as the freeside user and group.<br />
<br />
* User freeside<br />
* Group freeside<br />
<br />
* DocumentRoot "/var/www/freeside/html"<br />
<br />
* &lt;Directory "/var/www/freeside/html"&gt;<br />
<br />
* ErrorLog logs/freeside_error_log<br />
* CustomLog logs/freeside_access_log combined<br />
<br />
<br />
=== Install Docs and Freeside's Apache Includes ===<br />
<br />
Inside the freeside source directory, run "make install-docs" and "make install-apache" as root.<br />
<br />
<pre><br />
# make install-docs<br />
# make install-apache<br />
</pre><br />
<br />
Edit the config file that was just created (/etc/httpd-freeside/conf.d/freeside-base2.conf) by "make install-apache" and change the AuthUserFile directive to match our new path.<br />
<br />
* AuthUserFile /etc/freeside/htpasswd<br />
<br />
<br />
== Populating the Database ==<br />
<br />
Populate the freeside database with the initial data, as the freeside user.<br />
<br />
<pre><br />
$ freeside-setup -d example.com<br />
</pre><br />
<br />
Create the freeside system users, as the freeside user.<br />
<br />
<pre><br />
$ freeside-adduser -g 1 fs_queue<br />
$ freeside-adduser -g 1 fs_daily<br />
$ freeside-adduser -g 1 fs_selfservice<br />
</pre><br />
<br />
Create whatever other freeside users you want, again, as the freeside user.<br />
<br />
<pre><br />
freeside-adduser -g 1 username<br />
htpasswd /etc/freeside/htpasswd username<br />
</pre><br />
<br />
Repeat the last two commands as many times as you want for your internal staff's freeside accounts.<br />
<br />
== Startup Configuration ==<br />
<br />
We just need to make sure that our new instance of Apache and the freeside queue daemon start when we boot.<br />
<br />
<pre><br />
# make install-init<br />
<br />
# chkconfig freeside on<br />
# chkconfig httpd-freeside on<br />
</pre><br />
<br />
And last but not least...start freeside's Apache instance.<br />
<br />
<pre><br />
# service httpd-freeside start<br />
</pre><br />
<br />
Hopefully, Apache should start without errors. If you do get errors, check /var/log/httpd/freeside_error_log.<br />
<br />
Assuming Apache started correctly, you should now be able to access freeside via http://&lt;Your server's FQDN or IP&gt;:8080/. You can login using the username and password you set earlier with htpasswd.<br />
<br />
From here, consult the standard freeside install documentation in the wiki on how to proceed with initial configuration. Good luck!<br />
<br />
== Problems ==<br />
<br />
There might be some formatting issues as this was converted from TWiki to MediaWiki markup. If the syntax of a command doesn't look correct or doesn't make sense, it probably didn't get escaped correctly, or your web browser gobbled up some angle brackets, or both!</div>
Khoff
http://www.freeside.biz/mediawiki/index.php?title=Freeside:1.7:Documentation:InstallingOnCentOS4&diff=1726
Freeside:1.7:Documentation:InstallingOnCentOS4
2007-03-02T22:52:47Z
<p>Khoff: </p>
<hr />
<div>= Installing Freeside 1.7.x on CentOS 4.4 =<br />
<br />
This is a (hopefully) step-by-step guide for doing a basic installation of Freeside on CentOS 4.4 using RPMs whenever possible. It would probably be easier to use CPAN directly in some cases, but that wouldn't be very fun now would it?<br />
<br />
== Software Installation ==<br />
<br />
Run the correct command below depending on your architecture.<br />
<br />
<pre><br />
# export BASEARCH=i386<br />
</pre><br />
...or...<br />
<pre><br />
# export BASEARCH=x86_64<br />
</pre><br />
<br />
=== Binary Packages ===<br />
{| border="1"<br />
|-<br />
|*Package*||*Repo*||*Version*<br />
|-<br />
|httpd||base||2.0.52-28.ent.centos4<br />
|-<br />
|postgresql-server||update||7.4.16-1.RHEL4.1<br />
|-<br />
|tetex||base||2.0.2-22.EL4.7<br />
|-<br />
|ghostscript.x86_64||base||7.07-33<br />
<br />
|}<br />
<br />
<pre><br />
# yum install httpd postgresql-server tetex ghostscript.$BASEARCH<br />
</pre><br />
<br />
=== Perl Packages ===<br />
<br />
Setup 3rd party repos for most of the extra perl modules.<br />
<br />
<pre><br />
# rpm -ivh http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.$BASEARCH.rpm<br />
# rpm --import http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt<br />
<br />
# cat &lt;&lt;END&gt;/etc/yum.repos.d/dries.repo<br />
[dries]<br />
name=Extra Fedora rpms dries - \$releasever - \$basearch<br />
baseurl=http://ftp.belnet.be/packages/dries.ulyssis.org/redhat/el\$releasever/en/\$basearch/dries/RPMS<br />
END<br />
# rpm --import http://dries.ulyssis.org/rpm/RPM-GPG-KEY.dries.txt<br />
</pre><br />
<br />
Install the cpan2rpm tool so we can build RPMs from CPAN packages.<br />
<br />
<pre><br />
# rpm --import http://perl.arix.com/cpan2rpm/gpg.pub.asc<br />
# yum install rpm-build perl-Module-Build<br />
# rpm -ivh http://superb-east.dl.sourceforge.net/sourceforge/cpan2rpm/cpan2rpm-2.027-1.noarch.rpm<br />
</pre><br />
<br />
==== mod_perl2 ====<br />
<br />
CentOS 4.4 still uses mod_perl-1.99_16. Unfortunately, this isn't really considered mod_perl-1.99 or mod_perl-2 because of major API changes that took place just before the mod_perl-2 release. Several of the required perl modules will break if we use 1.99_16. Instead, use the modified mod_perl 2.0.3 SRPM from Fedora Core 6.<br />
<br />
<pre><br />
# yum install httpd-devel apr-devel apr-util-devel gdbm-devel<br />
<br />
# wget -O /usr/src/redhat/SRPMS/mod_perl-2.0.3-4.freeside.src.rpm http://users.fire2wire.com/~khoff/freeside/1.7.0/mod_perl-2.0.3-4.freeside.src.rpm<br />
# rpmbuild --target=${BASEARCH} --rebuild /usr/src/redhat/SRPMS/mod_perl-2.0.3-4.freeside.src.rpm<br />
# rpm -ivh /usr/src/redhat/RPMS/x86_64/mod_perl-2.0.3-4.freeside.${BASEARCH}.rpm<br />
</pre><br />
<br />
==== Freeside Prereqs ====<br />
{| border="1"<br />
|-<br />
|*Perl Module*||*Package*||*Version*||*Repo*<br />
|-<br />
|libnet||libnet.x86_64||1.1.2.1-2.rf||extras<br />
|-<br />
|libwww-perl||perl-libwww-perl.noarch||5.79-5||base<br />
|-<br />
|URI||perl-URI.noarch||1.30-4||base<br />
|-<br />
|HTML::Tagset||perl-HTML-Tagset.noarch||3.03-30||base<br />
|-<br />
|HTML::Parser||perl-HTML-Parser.x86_64||3.35-6||base<br />
|-<br />
|DBI||perl-DBI.x86_64||1.40-8||base<br />
|-<br />
|DBD::MySQL||perl-DBD-MySQL.x86_64||2.9004-3.1||base<br />
|-<br />
|MailTools||perl-MailTools.noarch||1.74-1.c4||extras<br />
|-<br />
|TimeDate||perl-TimeDate.noarch||1.16-1.c4||extras<br />
|-<br />
|Date::Manip||perl-DateManip.noarch||5.42a-3||base<br />
|-<br />
|HTML::Mason||perl-HTML-Mason||1.3200-1.el4.rf||rpmforge<br />
|-<br />
|Text::Template||perl-Text-Template||1.44-1.2.el4.rf||dries<br />
|-<br />
|DateTime||perl-DateTime||0.2901-1.2.el4.rf||rpmforge<br />
|-<br />
|Chart||perl-Chart||2.4.1-1.el4.rf||dries<br />
|-<br />
|Cache::Cache||perl-Cache-Cache||1.05-1.el4.rf||dries<br />
|-<br />
|NetAddr::IP||perl-NetAddr-IP||4.004-1.el4.rf||rpmforge<br />
|-<br />
|String::Approx||perl-String-Approx||3.26-1.el4.rf||dries<br />
|-<br />
|Locale::SubCountry||perl-Locale-SubCountry||1.38-1.el4.rf||dries<br />
|-<br />
|Term::ReadKey||perl-Term-ReadKey||2.30-2.2.el4.rf||dries<br />
|-<br />
|DateTime::Format::Strptime||perl-DateTime-Format-Strptime||1.0700-1.2.el4.rf||dries<br />
|-<br />
|Net::Whois::Raw||perl-Net-Whois-Raw||1.20-1.el4.rf||dries<br />
|-<br />
|DBIx::DBSchema||perl-DBIx-DBSchema||0.31-1.el4.rf||dries<br />
|-<br />
|Tie::IxHash||perl-Tie-IxHash||1.21-1.2.el4.rf||dries<br />
|-<br />
|Crypt::PasswdMD5||perl-Crypt-PasswdMD5||1.3-1.2.el4.rf||dries<br />
|-<br />
|File::CounterFile||perl-File-CounterFile||1.04-1.2.el4.rf||dries<br />
|-<br />
|IPC::Run3||perl-IPC-Run3||0.036-1.el4.rf||dries<br />
|-<br />
|Net::SSH||perl-Net-SSH||0.08-1.2.el4.rf||dries<br />
|-<br />
|String::ShellQuote||perl-String-ShellQuote||1.03-2.2.el4.rf||dries<br />
|-<br />
|JSON||perl-JSON||1.07-1.el4.rf||dries<br />
|-<br />
|Data::Table||perl-Data-Table||1.50-1.el4.rf||dries<br />
|-<br />
|Lingua::EN::NameParse||perl-Lingua-EN-NameParse||1.22-2.2.el4.rf||dries<br />
|-<br />
|Lingua::EN::Inflect||perl-Lingua-EN-Inflect||1.89-1.2.el4.rf||dries<br />
|-<br />
|Apache::DBI||perl-Apache-DBI||0.9901-2.2.el4.rf||dries<br />
|-<br />
|IO::Scalar||perl-IO-stringy||2.110-1.2.el4.rf||dries<br />
|-<br />
|Text::CSV_XS||perl-Text-CSV_XS||0.23-1.2.el4.rf||dries<br />
|-<br />
|Spreadsheet::WriteExcel||perl-Spreadsheet-WriteExcel||2.17-1.el4.rf||dries<br />
|-<br />
|MIME-tools||perl-MIME-tools||5.420-1.el4.rf||dries<br />
|-<br />
|Date::Manip||perl-DateManip||5.42a-3||base<br />
|-<br />
|DBD::Pg||||cpan2rpm<br />
|-<br />
|Locale-Codes|| | ||cpan2rpm<br />
|-<br />
|Frontier::RPC2|| | ||cpan2rpm<br />
|-<br />
|Business::CreditCard|| | ||cpan2rpm<br />
|-<br />
|Time::Duration|| | ||cpan2rpm<br />
|-<br />
|HTML::Widgets::SelectLayers|| | ||cpan2rpm<br />
|-<br />
|Color::Scheme|| | ||cpan2rpm<br />
|-<br />
|Fax::Hylafax::Client|| | ||cpan2rpm<br />
<br />
|}<br />
<br />
<pre><br />
# yum install libnet perl-libwww-perl perl-URI perl-HTML-Tagset<br />
# yum install perl-HTML-Parser <br />
# yum install perl-MailTools perl-TimeDate<br />
<br />
# yum install perl-HTML-Mason perl-Text-Template perl-DateTime perl-Chart<br />
# yum install perl-Cache-Cache perl-NetAddr-IP perl-String-Approx<br />
# yum install perl-Locale-SubCountry perl-Term-ReadKey<br />
# yum install perl-DateTime-Format-Strptime perl-Net-Whois-Raw<br />
# yum install perl-Tie-IxHash perl-Crypt-PasswdMD5<br />
# yum install perl-File-CounterFile perl-IPC-Run3 perl-Net-SSH<br />
# yum install perl-String-ShellQuote perl-JSON perl-Data-Table<br />
# yum install perl-Lingua-EN-NameParse perl-Lingua-EN-Inflect<br />
# yum install perl-IO-stringy perl-Text-CSV_XS perl-Spreadsheet-WriteExcel<br />
# yum install perl-MIME-tools perl-DateManip<br />
# yum install perl-DBI perl-DBD-MySQL perl-Apache-DBI <br />
</pre><br />
<br />
You can install these using cpan, or follow the directions here using cpan2rpm.<br />
<br />
* DBD::Pg<br />
<br />
<pre><br />
# cpan2rpm --version='1.32' http://search.cpan.org/CPAN/authors/id/R/RU/RUDY/DBD-Pg-1.32.tar.gz<br />
# rpm -ivh /usr/src/redhat/RPMS/x86_64/perl-DBD-Pg-1.32-1.x86_64.rpm<br />
</pre><br />
<br />
* DBIx::DBSchema<br />
<br />
<pre><br />
# yum install perl-DBIx-DBSchema<br />
</pre><br />
<br />
* Frontier::RPC2<br />
<br />
<pre><br />
# yum install perl-XML-Parser<br />
# cpan2rpm --author='Ken MacLeod &lt;ken@bitsko.slc.ut.us&gt;' --version='0.07b4' Frontier-RPC<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Frontier-RPC-0.07b4-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Business::CreditCard<br />
<br />
<pre><br />
# cpan2rpm Business::CreditCard<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Business-CreditCard-0.30-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Time::Duration<br />
<br />
<pre><br />
# yum install perl-Test-Pod perl-Test-Pod-Coverage<br />
# cpan2rpm Time::Duration<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Time-Duration-1.04-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* HTML::Widgets::SelectLayers<br />
<br />
<pre><br />
# cpan2rpm HTML::Widgets::SelectLayers<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-HTML-Widgets-SelectLayers-0.06-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Color::Scheme<br />
<br />
Ran into much brokenness when trying to build Test-Simple-0.67. Just skip the dep checks and test phase and hope. I mean, come on, it's Color::Scheme for crying out loud!<br />
<br />
<pre><br />
# yum install perl-Test-Differences<br />
# cpan2rpm --make-no-test --no-depchk Color::Scheme<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Color-Scheme-1.02-1.noarch.rpm<br />
</pre><br />
<br />
<br />
* Fax::Hylafax::Client (Optional)<br />
<br />
Skip the tests here as well, unless you happen to have a properly configured HylaFAX server handy.<br />
Or, skip the package entirely if you don't plan on sending FAX invoices.<br />
<br />
<pre><br />
# cpan2rpm --make-no-test Fax::Hylafax::Client<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Fax-Hylafax-Client-1.02-1.noarch.rpm<br />
</pre><br />
<br />
<br />
<br />
<br />
==== RT Prereqs ====<br />
<br />
{| border="1"<br />
|-<br />
|*Perl Module*||*Package*||*Version*||*Repo*<br />
|-<br />
|Apache::Session||perl-Apache-Session||1.81-1.el4.rf||dries<br />
|-<br />
|HTML-Format||perl-HTML-Format||2.04-1.2.el4.rf||dries<br />
|-<br />
|Class::ReturnValue||perl-Class-ReturnValue||0.53-1.2.el4.rf||dries<br />
|-<br />
|DBIx::SearchBuilder||perl-DBIx-SearchBuilder||1.43-1.el4.rf||rpmforge<br />
|-<br />
|Log::Dispatch||perl-Log-Dispatch||2.11-1.2.el4.rf||rpmforge<br />
|-<br />
|Locale::Maketext::Lexicon||perl-Locale-Maketext-Lexicon||0.62-1.el4.rf||dries<br />
|-<br />
|Locale::Maketext::Fuzzy||perl-Locale-Maketext-Fuzzy||0.02-1.2.el4.rf||dries<br />
|-<br />
|Text::Wrapper||perl-Text-Wrapper||1.000-1.2.el4.rf||dries<br />
|-<br />
|Time-modules||perl-Time-modules||2003.1126-1.2.el4.rf||dries<br />
|-<br />
|Text::Autoformat||perl-Text-Autoformat||1.13-1.2.el4.rf||dries<br />
|-<br />
|Text::Quoted||perl-Text-Quoted||1.8-1.2.el4.rf||dries<br />
|-<br />
|Regexp::Common||perl-Regexp-Common||2.120-1.2.el4.rf||dries<br />
|-<br />
|HTML::Scrubber||perl-HTML-Scrubber||0.08-1.2.el4.rf||dries<br />
|-<br />
|Tree::Simple||perl-Tree-Simple||1.17-1.el4.rf||dries<br />
|-<br />
|HTML::TreeBuilder||perl-HTML-Tree||3.23-1.el4.rf||dries<br />
<br />
|}<br />
<br />
<pre><br />
# yum install perl-Apache-Session perl-HTML-Format perl-Class-ReturnValue<br />
# yum install perl-Locale-Maketext-Lexicon perl-Locale-Maketext-Fuzzy<br />
# yum install perl-Text-Wrapper perl-Time-modules<br />
# yum install perl-Text-Autoformat perl-Text-Quoted perl-Regexp-Common<br />
# yum install perl-HTML-Scrubber perl-Tree-Simple perl-HTML-Tree<br />
</pre><br />
<br />
* Log::Dispatch<br />
<br />
Use the SRPM from Fedora Core 5. They have the correct and properly patched version that supports mod_perl 2.<br />
<br />
But first, a couple of prereqs.<br />
<br />
<pre><br />
# yum install perl-File-Find-Rule perl-IO-String<br />
# yum install perl-MIME-Lite perl-Mail-Sender<br />
</pre><br />
<br />
Now build and install Log::Dispatch itself.<br />
<br />
<pre><br />
# wget -O /usr/src/redhat/SRPMS/perl-Log-Dispatch-2.15-2.fc5.src.rpm http://download.fedora.redhat.com/pub/fedora/linux/extras/5/SRPMS/perl-Log-Dispatch-2.15-2.fc5.src.rpm<br />
<br />
# rpmbuild --rebuild /usr/src/redhat/SRPMS/perl-Log-Dispatch-2.15-2.src.rpm<br />
# rpm -ivh /usr/src/redhat/RPMS/noarch/perl-Log-Dispatch-2.15-2.noarch.rpm<br />
</pre><br />
<br />
* DBIx::SearchBuilder<br />
<br />
DBIx::searchBuilder is a little painful to install because it requires DBD::Oracle. You can just run "yum install perl-DBIx-SearchBuilder" if you want to go through the trouble of building and installing DBD::Oracle first. Again, that can be rather painful and isn't within the scope of this guide.<br />
<br />
The alternative below is to force install the RPM for DBIx::SearchBuilder since we're not going to use Oracle anyway. You have to exclude it from future updates in yum otherwise you'll get dep failures everytime you do a "yum upgrade".<br />
<br />
If you're not going to use RT, just skip DBIx::SearchBuilder altogether.<br />
<br />
<pre><br />
# yum install perl-Want perl-Clone perl-Cache-Simple-TimedExpiry<br />
# yum install perl-DBD-SQLite perl-capitalization perl-Class-Accessor<br />
<br />
# rpm -ivh --nodeps http://apt.sw.be/redhat/el4/en/x86_64/dag/RPMS/perl-DBIx-SearchBuilder-1.43-1.el4.rf.noarch.rpm<br />
<br />
# echo "exclude=perl-DBIx-SearchBuilder" >> /etc/yum.conf<br />
</pre><br />
<br />
<br />
<br />
== System configuration ==<br />
<br />
This is just following the directions with CentOS-specific commands.<br />
<br />
<pre><br />
# groupadd freeside<br />
# useradd -g freeside freeside<br />
</pre><br />
<br />
With CentOS 4.4, postgresql wouldn't start if SELinux was enabled. We call "setenforce 0" here to temporarily disable it. Some claim that it only needs to be disabled the first time postgresql is started.<br />
<br />
Enable postgresql at startup, disable selinux temporarily, and start postgresql.<br />
<br />
<pre><br />
# chkconfig postgresql on<br />
# setenfore 0<br />
# service postgresql start<br />
</pre><br />
<br />
Create the freeside datbase user for postgresql.<br />
<br />
<pre><br />
# su -c "createuser -P freeside" - postgres<br />
</pre><br />
<br />
== Installing Freeside ==<br />
<br />
su to the freeside user, extract a copy of the freeside tarball or check out the code from CVS into the freeside user's home directory. You should have the freeside top-level Makefile in /home/freeside/freeside/Makefile or /home/freeside/freeside-1.7.0/Makefile at this point. 1.7.0 wasn't officially released at the time of writing, so we're using a version checked-out from CVS.<br />
<br />
Edit freeside's top-level Makefile with your configuration. Here are some examples...<br />
<br />
<pre><br />
FREESIDE_CONF = /etc/freeside<br />
FREESIDE_LOG = /var/log/freeside<br />
FREESIDE_LOCK = /var/lib/freeside<br />
FREESIDE_CACHE = /var/lib/freeside<br />
FREESIDE_EXPORT = /var/lib/freeside<br />
<br />
APACHE_VERSION = 2<br />
FREESIDE_DOCUMENT_ROOT = /var/www/freeside/html<br />
<br />
INIT_FILE = /etc/init.d/freeside<br />
INIT_INSTALL = /sbin/chkconfig freeside on<br />
<br />
HTTPD_RESTART = /etc/init.d/httpd restart<br />
APACHE_CONF = /etc/httpd-freeside/conf.d<br />
</pre><br />
<br />
As the freeside user, create the database and make the perl modules.<br />
<br />
<pre><br />
$ createdb -E sql_ascii freeside<br />
<br />
$ make perl-modules<br />
</pre><br />
<br />
As root, install the perl modules and create the initial config.<br />
<br />
<pre><br />
# make install-perl-modules<br />
<br />
# mkdir -m 770 /var/lib/freeside<br />
# chown -R freeside:root /var/lib/freeside/<br />
# make create-config<br />
</pre><br />
<br />
== Apache Configuration ==<br />
<br />
=== Creating Freeside's Apache Instance ===<br />
<br />
The default Apache init script for CentOS doesn't make it very easy to setup multiple instances of Apache. A few small modifications take care of that problem.<br />
<br />
Start by making a copy of the init script, as well as download the patch and apply it to your httpd-freeside init script. You can make a symlink if you'd like to eventually setup additional Apache instances.<br />
<br />
<pre><br />
# ln -s /etc/init.d/httpd /etc/init.d/httpd-freeside<br />
<br />
# cd /etc/init.d/<br />
# wget -O /tmp/httpd-freeside.patch http://users.fire2wire.com/~khoff/freeside/1.7.0/httpd-freeside.patch<br />
# patch < /tmp/httpd-freeside.patch<br />
</pre><br />
<br />
Make a copy of the Apache server root.<br />
<br />
<pre><br />
# cp -av /etc/httpd /etc/httpd-freeside<br />
</pre><br />
<br />
You can remove any extra conf files from /etc/httpd-freeside/conf.d (webdav, php, etc.) if you're not using them. They'll only take up more memory and potentially make freeside slower.<br />
<br />
=== /etc/httpd-freeside/conf/httpd.conf ===<br />
<br />
Change the following Apache configuration directives in /etc/httpd-freeside/conf/httpd.conf to match our previous changes.<br />
<br />
* ServerRoot "/etc/httpd-freeside"<br />
* PidFile run/httpd-freeside.pid<br />
<br />
We're changing the listening port in case you're using the default Apache configuration (and port) for something else. This can be remedied by binding to a specific IP address as well (eg. 192.168.0.2:80).<br />
<br />
* Listen 8080<br />
<br />
Freeside's instance of Apache needs to run as the freeside user and group.<br />
<br />
* User freeside<br />
* Group freeside<br />
<br />
* DocumentRoot "/var/www/freeside/html"<br />
<br />
* &lt;Directory "/var/www/freeside/html"&gt;<br />
<br />
* ErrorLog logs/freeside_error_log<br />
* CustomLog logs/freeside_access_log combined<br />
<br />
<br />
=== Install Docs and Freeside's Apache Includes ===<br />
<br />
Inside the freeside source directory, run "make install-docs" and "make install-apache" as root.<br />
<br />
<pre><br />
# make install-docs<br />
# make install-apache<br />
</pre><br />
<br />
Edit the config file that was just created (/etc/httpd-freeside/conf.d/freeside-base2.conf) by "make install-apache" and change the AuthUserFile directive to match our new path.<br />
<br />
* AuthUserFile /etc/freeside/htpasswd<br />
<br />
<br />
== Populating the Database ==<br />
<br />
Populate the freeside database with the initial data, as the freeside user.<br />
<br />
<pre><br />
$ freeside-setup -d example.com<br />
</pre><br />
<br />
Create the freeside system users, as the freeside user.<br />
<br />
<pre><br />
$ freeside-adduser -g 1 fs_queue<br />
$ freeside-adduser -g 1 fs_daily<br />
$ freeside-adduser -g 1 fs_selfservice<br />
</pre><br />
<br />
Create whatever other freeside users you want, again, as the freeside user.<br />
<br />
<pre><br />
freeside-adduser -g 1 username<br />
htpasswd /etc/freeside/htpasswd username<br />
</pre><br />
<br />
Repeat the last two commands as many times as you want for your internal staff's freeside accounts.<br />
<br />
== Startup Configuration ==<br />
<br />
We just need to make sure that our new instance of Apache and the freeside queue daemon start when we boot.<br />
<br />
<pre><br />
# make install-init<br />
<br />
# chkconfig freeside on<br />
# chkconfig httpd-freeside on<br />
</pre><br />
<br />
And last but not least...start freeside's Apache instance.<br />
<br />
<pre><br />
# service httpd-freeside start<br />
</pre><br />
<br />
Hopefully, Apache should start without errors. If you do get errors, check /var/log/httpd/freeside_error_log.<br />
<br />
Assuming Apache started correctly, you should now be able to access freeside via http://&lt;Your server's FQDN or IP&gt;:8080/. You can login using the username and password you set earlier with htpasswd.<br />
<br />
From here, consult the standard freeside install documentation in the wiki on how to proceed with initial configuration. Good luck!<br />
<br />
== Problems ==<br />
<br />
There might be some formatting issues as this was converted from TWiki to MediaWiki markup. If the syntax of a command doesn't look correct or doesn't make sense, it probably didn't get escaped correctly, or your web browser gobbled up some angle brackets, or both!</div>
Khoff
http://www.freeside.biz/mediawiki/index.php?title=Freeside:1.7:Documentation&diff=1725
Freeside:1.7:Documentation
2007-03-02T22:05:00Z
<p>Khoff: </p>
<hr />
<div>= Installation and upgrades =<br />
<br />
* [[Freeside:1.7:Documentation:Installation|New Installation]]<br />
* [[Freeside:1.7:Documentation:RT Installation|Integrated RT Installation]]<br />
* [[Freeside:1.7:Documentation:Self-Service Installation|Signup/Self-service Installation]]<br />
* [[Freeside:1.7:Documentation:Upgrading|Upgrading to 1.7]]<br />
* [[Freeside:1.7:Documentation:Upgrading-1.7.3|Upgrading from 1.7.2 to 1.7.3]]<br />
* [[Freeside:1.7:Changelog|Changelog]]<br />
* [[Freeside:1.7:Documentation:InstallingOnCentOS4.4|Installing 1.7.x on CentOS 4.4]]<br />
<br />
= User's Guide =<br />
<br />
*[[Freeside:1.7:Documentation:User|User's Guide]]<br />
<br />
= Administrator's Guide =<br />
<br />
* [[FreeSide:1.7:Documentation:Administration|Administrator's Guide]]<br />
<br />
= Developer's Guide =<br />
<br />
* [[Freeside:1.7:Documentation:Developer|Developer's Guide]]<br />
<br />
= Accounting Guide =<br />
<br />
*[[Freeside:1.7:Documentation:Accounting|Accounting Guide]]<br />
<br />
= Misc =<br />
<br />
* [[Freeside:Documentation:FAQ|Frequently Asked Questions]]</div>
Khoff
http://www.freeside.biz/mediawiki/index.php?title=Freeside:1.7:Documentation:Installation&diff=1471
Freeside:1.7:Documentation:Installation
2006-08-29T18:22:03Z
<p>Khoff: </p>
<hr />
<div>== Introduction ==<br />
<br />
Install Freeside on a firewalled, private server, not a public (web, RADIUS, etc.) server.<br />
<br />
== Prerequisites ==<br />
<br />
=== Packages ===<br />
<br />
* [http://www.perl.org/ Perl], minimum version 5.8.0 (5.8.3 for RT?)<br />
* [http://httpd.apache.org/ Apache], version 1.3 ([http://www.modssl.org/ mod_ssl] highly recommended)<br />
* [http://perl.apache.org/ mod_perl], version 1.29 (if compiling your own mod_perl, make sure you set the EVERYTHING=1 compile-time option)<br />
* A '''transactional''' database engine [http://search.cpan.org/search?mode=module&query=DBD%3A%3A supported] by Perl's [http://dbi.perl.org/ DBI]. <br />
** [http://www.postgresql.org PostgreSQL] is recommended (v7.2 or later, 7.4 or later recommended). <br />
** [http://www.mysql.com MySQL] is '''not currently supported'''. ''Developers intersted in maintaining MySQL support are welcome to ask on the -devel mailing list; most things work, but MySQL support needs a maintainer to update it for recent (and future) changes.<br />
<br />
''Note: the above only applies to the database used by the Freeside software itself. Freeside can integrate with RADIUS and other servers running MySQL or any other DBI-supported database.''<br />
<br />
* teTeX and Ghostscript (included with most distributions) (Optional, enables typeset invoices)<br />
<br />
=== Perl modules ===<br />
<br />
==== Popular modules you might want to check your distribution for ====<br />
<br />
* [http://search.cpan.org/dist/libnet/ libnet] (CPAN: "install Net::Cmd")<br />
* [http://search.cpan.org/dist/libwww-perl libwww-perl] (CPAN: "install Bundle::LWP")<br />
** [http://search.cpan.org/dist/URI URI]<br />
** [http://search.cpan.org/dist/HTML-Tagset HTML::Tagset]<br />
** [http://search.cpan.org/dist/HTML-Parser HTML::Parser]<br />
* [http://search.cpan.org/dist/HTML-Mason HTML::Mason]<br />
* [http://search.cpan.org/dist/Text-Template Text::Template]<br />
* [http://search.cpan.org/dist/DBI DBI]<br />
** [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)<br />
* [http://search.cpan.org/dist/MailTools MailTools] (CPAN: "install Mail::Internet")<br />
* [http://search.cpan.org/dist/MIME-tools MIME::Tools]<br />
* [http://search.cpan.org/dist/TimeDate TimeDate] (CPAN: "install Date::Format")<br />
* [http://search.cpan.org/dist/Locale-Codes Locale-Codes] (CPAN: "install Locale::Country")<br />
<br />
==== Modules of Indeterminate Popularity ====<br />
<br />
* [http://search.cpan.org/dist/Chart Chart] (CPAN: "install Chart::Base")<br />
* [http://search.cpan.org/dist/Cache-Cache Cache::Cache]<br />
* [http://search.cpan.org/dist/NetAddr-IP NetAddr::IP]<br />
* [http://search.cpan.org/dist/String-Approx String::Approx]<br />
* [http://search.cpan.org/dist/Locale-SubCountry Locale::SubCountry]<br />
* [http://search.cpan.org/dist/Frontier-RPC Frontier::RPC2]<br />
* [http://search.cpan.org/dist/Term-ReadKey Term::ReadKey]<br />
* [http://search.cpan.org/dist/DateManip Date::Manip]<br />
<br />
==== Less common modules probably not included in anything but Debian? ====<br />
<br />
* [http://search.cpan.org/dist/Business-CreditCard Business::CreditCard]<br />
* [http://search.cpan.org/dist/Net-Whois-Raw Net::Whois::Raw]<br />
* [http://search.cpan.org/dist/DBIx-DBSchema DBIx::DBSchema]<br />
* [http://search.cpan.org/dist/Tie-IxHash Tie::IxHash]<br />
* [http://search.cpan.org/dist/Crypt::PasswdMD5 Crypt::PasswdMD5]<br />
* [http://search.cpan.org/dist/Time-Duration Time::Duration]<br />
* [http://search.cpan.org/dist/File-CounterFile File::CounterFile]<br />
* [http://search.cpan.org/dist/IPC-Run3 IPC::Run3]<br />
* [http://search.cpan.org/dist/Net-SSH Net::SSH]<br />
* [http://search.cpan.org/dist/String-ShellQuote String::ShellQuote]<br />
* [http://search.cpan.org/dist/JSON JSON]<br />
* [http://search.cpan.org/dist/HTML-Widgets-SelectLayers HTML::Widgets::SelectLayers]<br />
<br />
==== Optional modules ====<br />
<br />
* [http://search.cpan.org/dist/Fax-Hylafax-Client Fax::Hylafax::Client] ''(Required if faxing invoices)''<br />
* [http://search.cpan.org/dist/Apache-DBI Apache::DBI] ''(recommended for better web interface performance)''<br />
<br />
<br />
== Installation ==<br />
<br />
* Add the user and group `freeside' to your system.<br />
* Allow the freeside user full access to the freeside database. <br />
** with PostgreSQL<pre><nowiki><br />
$ su postgres (pgsql on some distributions)<br />
$ createuser -P freeside<br />
Enter password for user "freeside": <br />
Enter it again: <br />
Shall the new user be allowed to create databases? (y/n) y<br />
Shall the new user be allowed to create more new users? (y/n) n<br />
CREATE USER<br />
</nowiki></pre><br />
** or with MySQL:<pre><nowiki><br />
$ mysqladmin -u root password 'set_a_root_database_password'<br />
$ mysql -u root -p<br />
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,INDEX,ALTER,CREATE,DROP on freeside.* TO freeside@localhost IDENTIFIED BY 'set_a_freeside_database_password';<br />
</nowiki></pre><br />
<br />
*Edit the top-level Makefile: <br />
** Set DATASOURCE to your DBI data source, for example, <code>DBI:Pg:dbname=freeside</code> for PostgresSQL or <code>DBI:mysql:freeside</code> for MySQL. See the DBI manpage and the manpage for your DBD for the exact syntax of your DBI data source. <br />
** Set DB_PASSWORD to the freeside database user's password. <br />
<br />
* Add the freeside database to your database engine: <br />
** with Postgres: <pre><nowiki><br />
$ su freeside<br />
$ createdb -E sql_ascii freeside<br />
</nowiki></pre><br />
** or with MySQL: <pre><nowiki><br />
$ mysqladmin -u freeside -p create freeside <br />
</nowiki></pre><br />
<br />
* Build and install the Perl modules: <pre><nowiki><br />
$ make perl-modules<br />
$ su<br />
# make install-perl-modules<br />
</nowiki></pre><br />
<br />
* Create the necessary configuration files: <pre><nowiki><br />
$ su<br />
# make create-config<br />
</nowiki></pre><br />
<br />
* Run a '''separate''' iteration of Apache[-SSL] with mod_perl enabled '''as the freeside user'''.<br />
<br />
* Edit the Makefile and set <code>FREESIDE_DOCUMENT_ROOT</code>. <br />
<br />
* Run <code>make install-docs</code><br />
<br />
* Configure Apache: <pre><nowiki><br />
PerlModule HTML::Mason<br />
# your freeside docuemnt root<br />
<Directory /var/www/freeside><br />
<Files ~ (\.cgi|\.html)><br />
AddHandler perl-script .cgi .html<br />
PerlHandler HTML::Mason<br />
</Files><br />
<Perl><br />
require "/usr/local/etc/freeside/handler.pl";<br />
</Perl><br />
</Directory><br />
</nowiki></pre><br />
<br />
* Restrict access to this web interface - see the [http://httpd.apache.org/docs/misc/FAQ.html#user-authentication Apache documentation on user authentication]. To allow the system to update passwords automatically, it is currently recommended to configure user authentication with [http://httpd.apache.org/docs/mod/mod_auth.html mod_auth] (flat files). Add this to your Apache httpd.conf file: <pre><nowiki><br />
#your freeside document root<br />
<Directory /var/www/freeside><br />
AuthName Freeside<br />
AuthType Basic<br />
AuthUserFile /usr/local/etc/freeside/htpasswd<br />
require valid-user<br />
</Directory><br />
</nowiki></pre><br />
<br />
* As the freeside UNIX user, run <code>freeside-setup -d domain.name</code> to create the database tables and initial data.<pre><nowiki><br />
$ su freeside<br />
$ freeside-setup -d example.com <br />
</nowiki></pre><br />
<br />
* Create one or more Freeside users (your internal sales/tech folks, not customer accounts):<pre><nowiki><br />
$ su freeside<br />
# freeside-adduser -b -g 1 username password<br />
</nowiki></pre><br />
Additional users can be added using the same command or from the web interface.<br />
<br />
* Create the Freeside system users: <pre><nowiki><br />
$ su freeside<br />
# freeside-adduser -g 1 fs_queue<br />
# freeside-adduser -g 1 fs_daily<br />
# freeside-adduser -g 1 fs_selfservice<br />
</nowiki></pre><br />
<br />
* 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>) <br />
<br />
* Now proceed to the initial administration of your installation.</div>
Khoff
http://www.freeside.biz/mediawiki/index.php?title=Broadband_Services_Spec&diff=1316
Broadband Services Spec
2006-05-24T05:41:25Z
<p>Khoff: </p>
<hr />
<div>Proposed Broadband Service Specification<br />
<br />
= Introduction =<br />
<br />
The intent of this document is to outline a new implementation for broadband services in Freeside. Ideally, this new implementation will be able to represent and provision arbitrarily complex network configurations.<br />
<br />
The current support for broadband services in Freeside (svc_broadband) has a number of limitations.<br />
<br />
== svc_broadband ==<br />
* layer2 & layer3 information is stored together, and cannot be separated.<br />
* Relies on virtual fields for additional export information.<br />
<br />
== router ==<br />
* No topology information.<br />
* Represents a layer2 & layer3 provider or customer edge device.<br />
<br />
== addr_block ==<br />
* Single non-hierarchical assignments to routers.<br />
<br />
<br />
= Proposed =<br />
<br />
== svc_broadband ==<br />
svc_broadband should store all pertinant layer1 and layer2 information for broadband services. Examples of typical layer1 services would be Wireless, DSL, T1/E1, Cable, etc. Examples of typical (possibly layered) layer2 services would be ATM, Frame Relay, Ethernet, Wireless, PPP, PPPoE, PPPoA, etc.<br />
<br />
The emphasis is made on differentiating services at layer2, not layer1, due to the fact that many layer2 protocols (and combinations thereof) being used in the wild today are not bound to any particular layer1 protocol or physical medium. For example, 802.1x is commonly used as a layer2 authentication mechanism on 802.11 wireless networks, as well as 802.3 ethernet networks. PPPoE(oA) is an example of a combination of layer2 protocols that is widely used on DSL, Wireless, Cable, and other layer1 services. Based on these observations, and the overlap between layer2 protocols used for various layer1 services, it is recommended to take this approach rather than dividing service types based on more familiar terms like DSL, Wireless, etc.<br />
<br />
* Represents a single layer2 service and customer/provider[1] edge device.<br />
* Can be related to a svc_acct for authentication information when provisioning services like PPPoE, PPPoA, etc.<br />
* Can be related to a (proposed) svc_ip for layer3 specific information.<br />
=== Fields ===<br />
==== Common ====<br />
* svcnum - Primary key<br />
* nasnum - Parent layer2 NAS.<br />
* service_address1 -<br />
* service_address2 -<br />
* service_city -<br />
* service_state -<br />
* service_country -<br />
* contact_name -<br />
* contact_phone1 -<br />
* contact_phone2 -<br />
* latitude - Common formats: DDD.MMMMM, DDD MM.MMM, DDD MM SS<br />
* longitude - ''<br />
* speed_down_mir - Downstream MIR[2].<br />
* speed_down_cir - Downstream CIR[3].<br />
* speed_up_mir - Upstream MIR.<br />
* speed_up_cir - Upstream CIR. [4]<br />
* ...<br />
==== ATM ====<br />
* atm_aal - ATM Adaptation Layer (AAL[1-5]) Enumerated?<br />
* atm_vpi - ATM Virtual Path Identifier<br />
* atm_vci - ATM Virtual Circuit Identifier<br />
* atm_encap - VC Mux, Ethernet over ATM LLC, Classical IP over ATM, ??? Enumerated?<br />
==== Frame Relay ====<br />
* fr_encap - Frame Relay Encapsulation type (IETF RFC1490/2427, Cisco) Enum?<br />
* ft_lmi - Frame Relay LMI type (ANSI Annex D, Q933-A Annex A, Cisco) Enum?<br />
* fr_dlci - Frame Relay Data Link Connection ID<br />
==== Ethernet, IEEE 802.3 ====<br />
* dot3_mac_address - Ethernet MAC Address<br />
==== Virtual LAN, IEEE 802.1q ====<br />
* dot1q_vid - Virtual LAN Identifier<br />
* dot1q_prio - Priority defined by IEEE 802.1p<br />
==== IEEE 802.1x ====<br />
* dot1x_eap_method - 802.1x EAP Method (EAP-TLS, EAP-MD5, LEAP, ...) ??? Enum?<br />
==== Wireless, 802.11 ====<br />
* dot11_mac_address - Wireless MAC Address<br />
* ...<br />
<br />
<br />
== NAS - Network Access Server ==<br />
Represents a layer2 or layer 3 provider core or edge device. The distinction between core and edge is made to show which devices can be direct parents of customer edge devices by way of svc_broadband and svc_ip. As svc_broadband represents a layer2 service/device, its parent must be a layer2 edge NAS. Similarly with svc_ip representing a layer3 service/device, its parent must be a layer3 edge NAS. However, a single NAS can serve both as a layer2 and layer3 provider edge device.<br />
<br />
From here on, NAS refers to a layer2 NAS in the context of svc_broadband, and to a layer3 NAS in the context of svc_ip.<br />
<br />
* Examples<br />
** Wireless AP - Layer2 provider edge NAS.<br />
** DSLAM - Layer2 provider edge NAS.<br />
** IP Router - Layer3 provider edge NAS.<br />
** Wireless AP w/ routing capabilities - Layer2 and layer3 provider edge NAS.<br />
<br />
See Exports below for further examples and explaination.<br />
=== Fields ===<br />
* nasnum - NAS Primary key.<br />
* nasparent - Parent NAS or NULL.<br />
* nasip - NAS IP address. Used by exports, monitoring, etc.<br />
* nasname - NAS name.<br />
* nasfqdn - NAS FQDN.<br />
* naslocation - NAS location.<br />
* nasstreet1 - NAS street address 1.<br />
* nasstreet1 - NAS street address 2.<br />
* nascity - NAS city.<br />
* nasstate - NAS state.<br />
* naslayer2 - NAS layer2 flag, 'Y' or blank.<br />
* naslayer3 - NAS layer3 flag, 'Y' or blank.<br />
* nascore - NAS core flag, 'Y' or blank.<br />
* nasedge - NAS edge flag, 'Y' or blank.<br />
<br />
<br />
== svc_ip ==<br />
TODO<br />
=== Fields ===<br />
TBD<br />
<br />
<br />
== Exports ==<br />
The real limitation in the current implementation is the lack of flexibility in the exports for broadband services. NASs, both layer2 and layer3, core and edge, need to be aware of of new, changed, and deleted services. Often, a simple child-parent relationship is insufficient to model complex networks with centralized service authentication and session management. In simple, as well as complex network configurations, this can be accomplished by allowing exports to "register" themselves with either a NAS, a service definition, or both. Exports will need to be defined for layer2 using svc_broadband and layer3 using svc_ip/svc_broadband.<br />
<br />
=== Export models ===<br />
The following export models define a set of conditions under which exports should run. Exports run under each model can do so in the context of a layer2 or layer3 NAS for svc_broadband or svc_ip, respectively.<br />
<br />
==== Global ====<br />
* Required information<br />
** nasnum - Target NAS<br />
** svcpart - Service definition.<br />
<br />
Exports using the Global model would be triggered when a svc_broadband or svc_ip is added, changed, or deleted and the following conditions are true:<br />
* The svcpart of the service that triggered the export matches the svcpart of the export.<br />
An example of this case could be a centralized RADIUS server used to authenticate customer devices on a wireless access point.<br />
<br />
==== Connected ====<br />
* Required information<br />
** nasnum - Target NAS<br />
* Optional information<br />
** svcpart - Service definition<br />
<br />
Exports using the Connected model would be triggered when a svc_broadband or svc_ip is added, changed, or deleted and the following conditions are true:<br />
* The parent NAS of the service that triggered the export is the NAS associated with this export.<br />
* The service definition of the service that triggered the export matches the service definition associated with this export. (Optional)<br />
An example of this case could be a DSLAM or a wireless access point that maintains its own ACL.<br />
<br />
==== Adjacent ====<br />
* Required information<br />
** nasnum - Target NAS<br />
* Optional information<br />
** svcpart - Service definition* Required export options<br />
** n/a<br />
<br />
Exports using the Adjacent model would be triggered when a svc_broadband or svc_ip is added, changed, or deleted and the following conditions are true:<br />
* The parent NAS of the service that triggered the export is adjacent to the NAS associated with this export.<br />
* The service definition of the service that triggered the export matches the service definition associated with this export. (Optional)<br />
An example of this case could be a VRRP group or multiple wireless APs that lack a central authentication method.<br />
<br />
==== Child ====<br />
* Required information<br />
** nasnum - Target NAS<br />
* Optional information<br />
** svcpart - Service definition<br />
<br />
Exports using the Child model would be triggered when a svc_broadband or svc_ip is added, changed, or deleted and the following conditions are true:<br />
* The parent NAS of the service that triggered this export is a child NAS of the NAS associated with this export.<br />
* The service definition of the service that triggered the export matches the service definition associated with this export. (Optional)<br />
An example of this case could be a network with one or more centralized session management NASs (eg. B-RAS[5]) that need to be updated whenever a customer is provisioned on a child NAS.<br />
<br />
<br />
=== Export Examples ===<br />
For example, a wireless network may have a centralized RADIUS server from which all provider edge devices authorize customer edge devices. In this case, no _layer2_ provisioning must be done directly with the provider edge devices.<br />
<br />
TODO: More examples, diagrams.<br />
<br />
<br />
<br />
<br />
<br />
= Footnotes =<br />
1 - A layer2 customer edge device could also serve as a layer2 provider edge device<br />
in the case of a MDU or similar configuration. Additional svc_broadband<br />
descendant services could potentially become "children" of this<br />
service/device in this case. Is this really a good idea, or the best way<br />
to do this???<br />
<br />
2 - Maximum Information Rate.<br />
<br />
3 - Committed Information Rate.<br />
<br />
4 - If upstream MIR/CIR are zero, we assume the downstream MIR/CIR values are<br />
aggregate MIR/CIR instead of downstream only. This, of course, depends<br />
on the implementation of the export.<br />
<br />
5 - B-RAS, Broadband Remote Access Server. The broadband version of a typical RAS/NAS with sophisticated session and QoS management capabilities. Google RedBack for examples.<br />
<br />
--[[User:Khoff|Khoff]] 22:41, 23 May 2006 (PDT)</div>
Khoff
http://www.freeside.biz/mediawiki/index.php?title=Broadband_Services_Spec&diff=1309
Broadband Services Spec
2006-05-20T00:04:40Z
<p>Khoff: </p>
<hr />
<div>Proposed Broadband Service Specification<br />
<br />
= Introduction =<br />
<br />
The intent of this document is to outline a new implementation for broadband services in Freeside. Ideally, this new implementation will be able to represent and provision arbitrarily complex network configurations.<br />
<br />
The current support for broadband services in Freeside (svc_broadband) has a number of limitations.<br />
<br />
== svc_broadband ==<br />
* layer2 & layer3 information is stored together, and cannot be separated.<br />
* Relies on virtual fields for additional export information.<br />
<br />
== router ==<br />
* No topology information.<br />
* Represents a layer2 & layer3 provider or customer edge device.<br />
<br />
== addr_block ==<br />
* Single non-hierarchical assignments to routers.<br />
<br />
<br />
= Proposed =<br />
<br />
== svc_broadband ==<br />
svc_broadband should store all pertinant layer1 and layer2 information for broadband services. Examples of typical layer1 services would be Wireless, DSL, T1/E1, Cable, etc. Examples of typical (possibly layered) layer2 services would be ATM, Frame Relay, Ethernet, Wireless, PPP, PPPoE, PPPoA, etc.<br />
<br />
The emphasis is made on differentiating services at layer2, not layer1, due to the fact that many layer2 protocols (and combinations thereof) being used in the wild today are not bound to any particular layer1 protocol or physical medium. For example, 802.1x is commonly used as a layer2 authentication mechanism on 802.11 wireless networks, as well as 802.3 ethernet networks. PPPoE(oA) is an example of a combination of layer2 protocols that is widely used on DSL, Wireless, Cable, and other layer1 services. Based on these observations, and the overlap between layer2 protocols used for various layer1 services, it is recommended to take this approach rather than dividing service types based on more familiar terms like DSL, Wireless, etc.<br />
<br />
* Represents a single layer2 service and customer/provider[1] edge device.<br />
* Can be related to a svc_acct for authentication information when provisioning services like PPPoE, PPPoA, etc.<br />
* Can be related to a (proposed) svc_ip for layer3 specific information.<br />
=== Fields ===<br />
==== Common ====<br />
* service_address1 -<br />
* service_address2 -<br />
* service_city -<br />
* service_state -<br />
* service_country -<br />
* contact_name -<br />
* contact_phone1 -<br />
* contact_phone2 -<br />
* latitude - Common formats: DDD.MMMMM, DDD MM.MMM, DDD MM SS<br />
* longitude - ''<br />
* speed_down_mir - Downstream MIR[2].<br />
* speed_down_cir - Downstream CIR[3].<br />
* speed_up_mir - Upstream MIR.<br />
* speed_up_cir - Upstream CIR. [4]<br />
* ...<br />
==== ATM ====<br />
* atm_aal - ATM Adaptation Layer (AAL[1-5]) Enumerated?<br />
* atm_vpi - ATM Virtual Path Identifier<br />
* atm_vci - ATM Virtual Circuit Identifier<br />
* atm_encap - VC Mux, Ethernet over ATM LLC, Classical IP over ATM, ??? Enumerated?<br />
==== Frame Relay ====<br />
* fr_encap - Frame Relay Encapsulation type (IETF RFC1490/2427, Cisco) Enum?<br />
* ft_lmi - Frame Relay LMI type (ANSI Annex D, Q933-A Annex A, Cisco) Enum?<br />
* fr_dlci - Frame Relay Data Link Connection ID<br />
==== Ethernet, IEEE 802.3 ====<br />
* dot3_mac_address - Ethernet MAC Address<br />
==== Virtual LAN, IEEE 802.1q ====<br />
* dot1q_vid - Virtual LAN Identifier<br />
* dot1q_prio - Priority defined by IEEE 802.1p<br />
==== IEEE 802.1x ====<br />
* dot1x_eap_method - 802.1x EAP Method (EAP-TLS, EAP-MD5, LEAP, ...) ??? Enum?<br />
==== Wireless, 802.11 ====<br />
* dot11_mac_address - Wireless MAC Address<br />
* ...<br />
<br />
<br />
== switch ==<br />
Represents a layer2 provider core or edge device. The distinction between core and edge is made to show which devices can directly interface with customer edge devices. A wireless access point or DSLAM would be examples of a layer2 provider edge device, or, edge switch using our terminology. See Exports below for a better explaination.<br />
=== Fields ===<br />
TBD<br />
<br />
<br />
== router ==<br />
Similar to a siwtch, a router is a layer3 provider core or edge device. The same distinction between core and edge exists.<br />
=== Fields ===<br />
TBD<br />
<br />
<br />
== svc_ip ==<br />
TODO<br />
=== Fields ===<br />
TBD<br />
<br />
== Exports ==<br />
The real limitation in the current implementation is the lack of flexibility in the exports for broadband services. Provider devices, both routers and switch, core and edge, need to be aware of of new, changed, and deleted services. This can be accomplished by allowing exports to "register" themselves with either a provider device, a service definition, or both.<br />
<br />
For example, a wireless network may have a centralized RADIUS server from which all provider edge devices authorized customer edge devices. In this case, no _layer2_ provisioning must be done directly with the provider edge devices. TODO, finish example for layer3 provisioning, mulitple cases.<br />
<br />
TODO: More examples, diagrams.<br />
<br />
<br />
= Footnotes =<br />
1 - A l2 customer edge device could also serve as a l2 provider edge device<br />
in the case of a MDU or similar configuration. Additional svc_Broadband<br />
descendant services could potentially become "children" of this<br />
service/device in this case. Is this really a good idea, or the best way<br />
to do this???<br />
<br />
2 - Maximum Information Rate.<br />
<br />
3 - Committed Information Rate.<br />
<br />
4 - If upstream MIR/CIR are zero, we assume the downstream MIR/CIR values are<br />
aggregate MIR/CIR instead of downstream only. This, of course, depends<br />
on the implementation of the export.<br />
<br />
<br />
--[[User:Khoff|Khoff]] 17:04, 19 May 2006 (PDT)</div>
Khoff
http://www.freeside.biz/mediawiki/index.php?title=Main_Page&diff=1307
Main Page
2006-05-19T21:51:03Z
<p>Khoff: /* Specs in progress */</p>
<hr />
<div>== Freeside ==<br />
=== Versions ===<br />
:'''Maintenance Version:''' 1.4.2<br />
<br />
:'''Current Version:''' 1.5.8<br />
<br />
:'''Bleeding Edge Version:''' 1.7.0<br />
<br />
=== Turn Key Solutions ===<br />
*[http://www.sisd.com/freeside/commercial.html Installation]<br />
*[http://www.sisd.com/freeside/commercial.html FreeSide Appliance]<br />
<br />
=== Documents ===<br />
*[[Freeside:Documentation:FAQ|FAQ]]<br />
*[[Freeside:1.5.8:Documentation:Installation|Installation Guide]]<br />
*[[FreeSide:1.5.8:Documentation:Administration|Administrator's Guide]]<br />
*[[Freeside:1.5.8:Documentation:User|User's Guide]]<br />
*[[Freeside:1.5.8:Documentation:Developer|Developer's Guide]]<br />
*[[Freeside:1.5.8:Documentation:Accounting|Accounting Guide]]<br />
<br />
=== Support ===<br />
*[http://www.sisd.com/freeside/commercial.html Freeside Internet Services Inc.]<br />
*[[FreeSide:Support:Consultants | Freeside Consultants]]<br />
<br />
=== Specs in progress ===<br />
* [[Batch_Refactor]]<br />
* [[Broadband_Services_Spec]]<br />
<br />
= WIKI Reference =<br />
<br />
[http://meta.wikimedia.org/wiki/Help:Editing How to edit pages (wiki markup, etc)]<br><br />
[http://www.mediawiki.org/wiki/Help:Configuration_settings Configuration settings list]<br><br />
[http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide User's Guide]<br />
<br />
[[Sandbox]] &larr; Use this page to test out editing, [http://www.phrases.org.uk/meanings/225200.html learn the ropes], etc.<br />
----<br />
Article count: {{NUMBEROFARTICLES}}</div>
Khoff