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: <VirtualHost *:80> ServerName primary1.domain.name ServerName primary2.domain.name ServerAdmin admin@primary.domain.name </VirtualHost> In archive config XML file: <host>archive.domain.name</host> <adminemail>archive-admin@archive.domain.name</adminemail> 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! <http://wiki.eprints.org/w/EPrints2/EPrintsSetupUnderVirtualDirectoriesOtherThanRoot> 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 <Directory "/usr/local/eprints/archives/ARCHIVEID/html"> Options +Includes XBitHack on </Directory> 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.