Para ayudar a un amigo que deseaba instalar LedgerSMB sobre un Debian Wheezy sin resultado, decidí escribir este instructivo de instalación.
Parto de la base que se tiene instalado y configurado Apache usando la configuración de dynamic virtual hosting. Este tutorial en particular explica cómo crear un virtual host para SQL Ledger, configuración que no debe ser usada en este caso.
Para todo el proceso, se necesita conexión a Internet.
aptitude install cpp cpp-4.7 dbconfig-common dbus ed fontconfig-config fonts-droid ghostscript gsfonts \ latex-beamer latex-xcolor libalgorithm-c3-perl libappconfig-perl libaprutil1-dbd-pgsql libarchive-zip-perl \ libavahi-client3 libavahi-common-data libavahi-common3 libb-hooks-endofscope-perl libcgi-simple-perl \ libclass-accessor-perl libclass-c3-perl libclass-c3-xs-perl libclass-data-inheritable-perl libclass-load-perl \ libclass-load-xs-perl libclass-singleton-perl libclass-std-perl libcommon-sense-perl libconfig-any-perl \ libconfig-general-perl libconfig-std-perl libconfig-tiny-perl libcups2 libcupsimage2 libdata-optlist-perl \ libdatetime-locale-perl libdatetime-perl libdatetime-timezone-perl libdbd-pg-perl libdbi-perl libdbus-1-3 \ libdevel-globaldestruction-perl libdevel-partialdump-perl libdevel-stacktrace-perl libdrm-intel1 \ libdrm-nouveau1a libdrm-radeon1 libdrm2 libemail-date-format-perl libencode-locale-perl liberror-perl \ libeval-closure-perl libexception-class-perl libfile-basedir-perl libfile-desktopentry-perl \ libfile-listing-perl libfile-mimeinfo-perl libfile-slurp-perl libfont-afm-perl libfontconfig1 libfontenc1 \ libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgmp10 libgraphite3 libgs9 libgs9-common libhtml-form-perl \ libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl \ libhttp-daemon-perl libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libice6 libijs-0.35 \ libio-socket-ip-perl libio-socket-ssl-perl libio-stringy-perl libipc-shareable-perl libjasper1 libjbig0 \ libjbig2dec0 libjpeg8 libjson-perl libjson-xs-perl libkpathsea6 liblatex-driver-perl liblatex-encode-perl \ liblatex-table-perl liblcms1 liblcms2-2 liblist-moreutils-perl liblocale-maketext-lexicon-perl \ liblog-dispatch-perl liblog-log4perl-perl liblwp-mediatypes-perl liblwp-protocol-https-perl libmailtools-perl \ libmath-bigint-gmp-perl libmath-bigint-perl libmath-round-perl libmime-lite-perl libmime-types-perl \ libmodule-implementation-perl libmodule-runtime-perl libmoose-perl libmoosex-followpbp-perl libmpc2 libmpfr4 \ libmro-compat-perl libnamespace-clean-perl libnet-daemon-perl libnet-dbus-perl libnet-http-perl \ libnet-ssleay-perl libnumber-format-perl libopenjpeg2 libopenoffice-oodoc-perl libossp-uuid16 \ libpackage-deprecationmanager-perl libpackage-stash-perl libpackage-stash-xs-perl libpaper-utils libpaper1 \ libparams-classify-perl libparams-util-perl libparams-validate-perl libparse-recdescent-perl libpciaccess0 \ libplrpc-perl libpng12-0 libpoppler19 libpq5 libptexenc1 libreadonly-perl libreadonly-xs-perl libruby1.9.1 \ libsm6 libsocket-perl libsub-exporter-perl libsub-identify-perl libsub-install-perl libsub-name-perl \ libsystemd-login0 libtask-weaken-perl libtemplate-perl libtemplate-plugin-latex-perl libtext-csv-perl \ libtext-csv-xs-perl libtext-wrapper-perl libtie-ixhash-perl libtiff4 libtimedate-perl libtry-tiny-perl \ liburi-perl libutempter0 libvariable-magic-perl libwww-perl libwww-robotrules-perl libx11-protocol-perl \ libx11-xcb1 libxaw7 libxcb-glx0 libxcb-shape0 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxfont1 \ libxft2 libxi6 libxinerama1 libxml-namespacesupport-perl libxml-parser-perl libxml-sax-base-perl \ libxml-sax-expat-perl libxml-sax-perl libxml-simple-perl libxml-twig-perl libxml-xpathengine-perl libxmu6 \ libxpm4 libxrandr2 libxrender1 libxslt1.1 libxt6 libxtst6 libxv1 libxxf86dga1 libxxf86vm1 libyaml-0-2 \ libyaml-libyaml-perl lmodern luatex make pgf poppler-data postgresql-9.1 postgresql-client \ postgresql-client-9.1 postgresql-client-common postgresql-common postgresql-contrib postgresql-contrib-9.1 \ prosper ps2eps ruby ruby1.9.1 sudo tcl8.4 tex-common texlive-base texlive-binaries texlive-common \ texlive-doc-base texlive-extra-utils texlive-font-utils texlive-generic-recommended texlive-latex-base \ texlive-latex-base-doc texlive-latex-recommended texlive-latex-recommended-doc texlive-luatex \ texlive-pstricks texlive-pstricks-doc tk8.4 ttf-dejavu-core x11-common x11-utils x11-xserver-utils xbitmaps \ xdg-utils xfonts-encodings xfonts-utils
cd /var/www/sites/ tar xzf ledgersmb-1.3.37.tar.gz chown -R www-data:www-data ledgersmb chmod 750 ledgersmb
Editar /var/www/sites/ledgersmb/ledgersmb-httpd.conf.template y cambiar la palabra WORKING_DIR por /var/www/sites/ledgersmb
Además, si se desea acceder a LedgerSMB desde las estaciones de la intranet, se debe permitirlo en la línea, poniendo algo como:
Allow from 192.168.0.0/24
Mover el archivo /var/www/sites/ledgersmb/ledgersmb-httpd.conf.template a /etc/apache2/sites-available/ledgersmb-httpd.conf y activarlo en Apache, así como el módulo rewrite:
mv /var/www/sites/ledgersmb/ledgersmb-httpd.conf.template /etc/apache2/sites-available/ledgersmb-httpd.conf a2ensite ledgersmb-httpd.conf a2enmod rewrite
Reiniciar Apache:
service apache2 restart
Instalar los módulos Perl necesarios, ingresando previamente al directorio de instalación de LedgerSMB; este paso hará un montón de magia, y tardará unos minutos:
cd /var/www/sites/ledgersmb cpan Module::Install
Ejecutar el script Makefile.pl respondiendo “y” o “n” cuando corresponda:
perl Makefile.PL
Ejecutar un make y esperar a que termine, proceso que llevará unos minutos:
make
Instalar el módulo Latex de Perl:
cpan Template::Latex
Y finalmente, ejecutar test; advierto que algunos test van a fallar. Son pocos, no sé exactamente qué significa, pero LedgerSMB funciona a pesar de estos errores. Este paso se puede obviar entonces :
make test
su postgres -c psql template1 ALTER USER postgres WITH PASSWORD '<password>'; \q
passwd -d postgres su postgres -c passwd # Ingresar la contraseña adduser ledgersmb # Ingresar la contraseña y los datos necesarios sudo -u postgres createuser -D -A -P ledgersmb sudo -u postgres createdb -O ledgersmb ledgersmb
Reiniciar PostgreSQL:
service postgresql restart
mkdir /var/tmp/ledgersmb chown -R www-data: /var/tmp/ledgersmb chmod 750 /var/tmp/ledgersmb/
Una vez hecho todo esto, deberían funcionar los URLs de login y de setup:
http://host.dominio/ledgersmb/login.pl
y
Se debe ingresar a este último y con el usuario y contraseña de PostgreSQL previamente configurados, crear una base de datos, que será también el nombre de la empresa.
También se debe crear un usuario con todos los permisos (Full permissions). Este usuario será una especie de administrador. Luego, se pueden crear otros usuarios, con menos permisos o no según se necesite. Además, se puede activar el acceso de cada uno de estos usuarios a las distintas partes que conforman el LedgerSMB, según se necesite, y en una manera granular.
Se debe tener en claro que estos usuarios son creados por LedgerSMB en la base de usuarios de PostgreSQL, por lo que deben ser usernames únicos, relacionados o no con LedgerSMB.
Por esta razón, deben ser usuarios únicos por empresa; es decir, si se tiene dos empresas empresa1 y empresa2, y un usuario Juan Pérez que debe trabajar con ambas, se debe crear un usuario para cada una, por ejemplo jperez1 para la primera y jperez2 para la segunda.
Para comenzar a trabajar con el sistema, se debe ingresar con uno de los usuarios creados específicamente para esa empresa o DB, en el URL de login.
Hecho esto, ya se puede comenzar a ingresar datos. Algunas recomendaciones y sugerencias a continuación.
Nota: estas sugerencias fueron escritas para SQL Ledger, por lo que quizá no sean perfectamente aplicables a LedgerSMB. Las revisaré en cuanto pueda
Usuarios: uno para cada operador por empresa
Contraseña: una para cada operador por empresa
El LedgerSMB, si bien es muy completo, y tiene muchísima funcionalidad, se basa en cuatro partes principales que deben poner a punto.