Installation
============
Install mysql [not necessary if connecting to a remote MySQL server].
% fink install mysql
% sudo daemonic enable mysql
Install Apache [with SSL if required]. OR: just use the built-in Apache
(1.3.3), as it seems to just work out of the box with this (with
mod_perl 1.x).
% fink install apache2[-ssl]
% sudo daemonic enable apache2
Perl 5.8.1 (10.3) or 5.8.6 (10.4) should already be there.
Install the latest version of the Perl CGI package (need at least 3.08
for mod_perl 2).
Install mod_perl 2 [note mod_perl 1 is already included with the
built-in Apache 1.3]. No Fink package), so must install manually. This
includes the Apache and Apache2 Perl modules required by ePrints.
Presumably it will build to whatever the current system version of Perl
is.
% perl Makefile.PL MP_APXS=/sw/sbin/apxs
% make
% make test
% sudo make install
Install required Perl modules.
% fink install data-showtable-pm [Data::ShowTable]
% fink install dbi-pm58x [DBI]
% fink install dbd-mysql-pm58x [DBD::MySQL]
% fink install mime-base64-pm58x [MIME:Base64]
% fink install unicode-string-pm58x [Unicode::String]
% fink install xml-parser-pm58x [XML::Parser]
Msql-Mysql Module: It appears that this is actually the DBD::MySQL
module. Apparently this requires access to .h and library files from
MySQL.
Maybe (but probably not) CGI, Carp, Cwd, Data::Dumper, Digest::MD5,
File::Basename, File::Copy, File::Find, File::Path, Getopt::Long,
Pod::Usage, Sys::Hostname
Probably worth installing the most recent version of the CGI module,
as it fixes a known forms problem with Apache 2 [not necessary for
Apache 1 unless you have a really old version]. Can't install with
Fink as it only lists it as a virtual package. Install manually with
cpan instead.
Install XML::GDOME if required. Leave this for now as it's easier to
set up without it. It needs XML-LibXML-Common, XML-NamespaceSupport,
XML-GDOME. Download from http://gdome2.cs.unibo.it/#downloads.
Install miscellaneous utilities (if necessary) [note these are only
needed for compressed file uploads and snarfing documents from URLs ---
I think both features can be turned off].
% fink install wget
Tar, gunzip and unzip are all base Fink packages and thus available
by default.
Install tools for full-text indexing (if necessary).
% fink install xpdf [for pdftotext]
% fink install lynx
% fink install wv2 [= wvware]
Install LaTeX support tools (if necessary).
% fink install tetex [for latex, dvips]
% fink install imagemagick [for convert]
Install ePrints.
% sudo mkdir /Library/Perl/5.8.x/darwin-thread-multi-2level
[if it doesn't already exist]
% cd /usr/include
% sudo /usr/bin/h2ph * */* [to set up free space checking]
[this will probably eventually become (??)
/usr/bin/h2ph -d /sw/lib/perl5/5.8.1/darwin * */*]
% pushd bin; sed -i -e "s/deny, allow/deny,allow/g" generate_apacheconf; chmod 755 generate_apacheconf; popd
[Apache treats "deny, allow" as two separate arguments and complains]
EPrints needs to be installed as the same user as the apache
webserver runs as. We suggest you install it as user "eprints" and
group "eprints". Apache will need to be reconfigured to run as this
user if so. I won't bother for the quick and dirty test --- I'll
just run ePrints as "www/www".
% ./configure --prefix=/usr/local/eprints --with-user=www --with-group=www --with-apache=2 --with-smtp-server=whatever
% sudo ./install.pl
Setup
=====
Start and configure MySQL.
% sudo /Library/StartupItems/daemonic-mysql/daemonic-mysql start
% mysql -u root
Set root passwords. It appears that you need to use the old password
model for compatibility with the current version of DBI::MySQL.
Without old password format, you can't connect to the database
("Client does not support authentication protocol").
mysql> SET PASSWORD FOR 'root'@'localhost' = OLD_PASSWORD('bl@rgh');
mysql> SET PASSWORD FOR 'root'@'ou075110.otago.ac.nz' = OLD_PASSWORD('bl@rgh');
Remove anonymous accounts.
mysql> DELETE FROM mysql.user WHERE User = '';
mysql> FLUSH PRIVILEGES;
Configure ePrints.
% sudo -s -u www
% cd /usr/local/eprints
% ./bin/configure_archive
Doesn't seem to like unusual characters in the database password.
(barnacle)
% ./bin/generate_apacheconf
% ./bin/create_tables archive_test_1
% ./bin/import_subjects archive_test_1
- If you do not specify the subjects file name then the system will
use "subjects" from the given archive's cfg directory.
- Must answer "yes" in full to continuation prompt.
% ./bin/generate_static archive_test_1
% ./bin/create_user archive_test_1 admin nstanger@infoscience.otago.ac.nz admin blobby
% ./bin/generate_views archive_test_1
% ./bin/generate_abstracts archive_test_1
% ./bin/indexer start
[starts up the indexer daemon, otherwise no indexes are built!]
Configure and (re)start Apache.
Add to httpd.conf:
User www [should be this already]
Group www [should be this already]
LoadModule perl_module /sw/lib/apache2/modules/mod_perl.so
PerlHeaderParserHandler "sub { tie *STDOUT, 'Apache' unless tied *STDOUT; }"
Include /usr/local/eprints/cfg/apache.conf
[For Apache 1.3:
LoadModule perl_module libexec/httpd/libperl.so
AddModule mod_perl.c
]
% sudo apachectl stop [/usr/sbin/apachectl for Apache 1.3]
% sudo apachectl start [note: restart doesn't reload the configs!]
Maintaining the system
======================
- bin/indexer must be running in the background for searching to work.
- must run bin/generate_views periodically to rebuild the browse view pages.
Advanced configuration
======================
You can configure the archive to run on a different domain on the
same machine, while leaving the "primary" domain intact.
In httpd.conf:
- uncomment "NameVirtualHost *:80"
- add:
ServerName primary1.domain.name
ServerName primary2.domain.name
ServerAdmin admin@primary.domain.name
In archive config XML file:
archive.domain.name
archive-admin@archive.domain.name
Then ./bin/generate_apacheconf and restart Apache.
You can also run on a different port to make things easier.
(Remember to enable the Port and Listen directives in httpd.conf
appropriately, and to let the ports through the firewall if
necessary.)
Much better, here are actual instructions!
Appearance
==========
Note for dynamically generated pages: they don't seem to handle XHTML
comments properly, adding an extra unnecessary layer of around
them, which makes the pages display weirdly. Better not to have any
comments :)
If you change any of the templates (especially the top-level site template),
you will need to generate_static, generate_abstracts, generate_views and
possibly force_config_reload (or better, restart Apache).
ARCHIVE/cfg/template-en.xml global page template (customise header & footer)
ARCHIVE/cfg/static/en/* individual static page templates (e.g., info page)
ARCHIVE/cfg/general/* CSS templates and standard images
If you want to get a list of the latest items added on the front page,
turn on SSI in httpd.conf then turn on Includes and XBitHack in
ARCHIVE/cfg/apache.conf.
httpd.conf:
uncomment "AddType text/html .shtml" and "AddHandler server-parsed .shtml"
ensure that mod_include is enabled
ARCHIVE/cfg/apache.conf: add
Options +Includes
XBitHack on
Finally (fortunately permissions seem to be preserved when the HTML
verison is generated):
% chmod +x ARCHIVE/cfg/static/en/index.xpage
Security
========
The most obvious way to set up a repository where only certain people can
see the contents is to create a separate private repository on a different port,
with no public registration.
Creating new user types appears to involve adding stuff to
metadata-types.xml, phrases-en.xml and ArchiveConfig.pm.