Difference between revisions of "Installing EPrints on RHEL/Fedora/CentOS"

From EPrints Documentation
Jump to: navigation, search
m (Installing from EPrints 3.3.x RPM: Added note about proxy parameter to rpm calls)
(Updated dependencies)
 
(46 intermediate revisions by 2 users not shown)
Line 2: Line 2:
  
 
==Requirements==
 
==Requirements==
 
+
* RedHat Enterprise (RHEL) / CentOS 7 or 8 (or Fedora 25+).
* RedHat Enterprise (RHEL) / CentOS 7 or Fedora 25+.  These instructions will more than likely work for RHEL / CentOS 6 but have not been as thoroughly tested.
+
* Pre-install MySQL server and client and make sure the former is enabled and running.
 
 
* Pre-installed MySQL server and client.
 
 
** RHEL / Fedora:
 
** RHEL / Fedora:
 
  yum install mysql-server mysql
 
  yum install mysql-server mysql
 +
systemctl enable --now mysql
 +
 
** CentOS:
 
** CentOS:
 
  yum install mariadb-server mariadb
 
  yum install mariadb-server mariadb
 +
systemctl enable --now mariadb
  
== Installing from EPrints 3.3.x RPM ==
+
== Installing from EPrints RPM ==
  
Add the rpm.eprints.org repository key:
+
=== Installing from rpm.eprints.org ===
 +
'''Please note that rpm.eprints.org is no longer fully supported and packages are no longer signed.  It is planned to start signing packages again in the future but there have been some issues with the signing keys.'''
  
rpm -ivh http://rpm.eprints.org/rpm-eprints-org-key-1-1.noarch.rpm
+
* As root, using yum (or dnf in RHEL/CentOS 8+ and more recent Fedora versions) install ''epel-release'' package so ''eprints'' RPM dependencies can be met from the EPEL repository where necessary:
 
+
  yum install epel-release
Next, add the rpm.eprints.org EPrints repository:
+
dnf install epel-release
 
 
  rpm -ivh http://rpm.eprints.org/eprints/noarch/rpm-eprints-org-1-1.noarch.rpm
 
 
 
Note: if these fail to connect to the repository and you have a proxy server, try adding the parameter "--httpproxy http://your.proxy.address" (export http_proxy doesn't affect rpm call)
 
  
Install required XML libraries (Use ''yum upgrade'' if these are already installed):
+
* As root, edit /etc/yum.repos.d/eprints.repo and add the following (If you want to install EPrints 3.3 rather than EPrints 3.4 change the baseurl to ''http://rpm.eprints.org/eprints3''):
 +
[eprints_3_4]
 +
name=EPrints Repository Software - $basearch
 +
baseurl=http://rpm.eprints.org/eprints3.4
 +
enabled=1
 +
gpgcheck=0
  
  yum install libxml2 libxslt perl-XML-LibXML perl-XML-LibXSLT
+
* As root, now run one of the following commands to download the cache for this new package repositories.  You may be prompted to accept the GPG key for the EPEL repository:
 +
  yum makecache
 +
dnf makecache
  
Finally, install EPrints 3:
+
* Finally, install EPrints using yum (or dnf):
 +
yum install eprints
 +
dnf install eprints
  
yum install eprints  
+
=== Installing RPM locally ===
 +
* Download latest RPM for EPrints 3.3 or 3.4 from http://files.eprints.org/
  
=== Other Non-critical Dependencies ===
+
* Then install EPrints using yum (or dnf in RHEL/CentOS 8+ and more recent Fedora versions) substituting for the filename of the file you downloaded from  https://files.eprints.org.
Some of EPrints non-core functionality may not work out of the box as these dependencies are not included as part of the RPMHere is a list of known additional packages (and the YUM repositories in which they can be found) or CPAN modules than can be installed.
+
  dnf install eprints-3.4.4-1.el7.noarch.rpm
  
Some of these known additional packages are only available through the Extra Packages for Enterprise Linux (EPEL) YUM repository, which can be installed as the root user as follows:
+
=== Installing publications flavour ===
 +
EPrints 3.4 RPMs only come with the in-built 'zero' flavour and not the typical publications flavour.  Before trying to set up you archive you will need to (as the eprints user) download the latest publications flavour tarball from https://files.eprints.org/ and unpack it into /usr/share/eprints/:
 +
wget https://files.eprints.org/2551/8/eprints-3.4.3-flavours.tar.gz
 +
tar -xzvf eprints-3.4.3-flavours.tar.gz -C /usr/share/eprints/
 +
mv /usr/share/eprints/eprints-3.4.3/flavours /usr/share/eprints/
 +
rmdir /usr/share/eprints/eprints-3.4.3/
 +
Before trying to create a publications flavour archive, you will need to install (as the root user) the ''TeX::Encode'' module or you will see error messages regarding a missing dependency for the BibTeX import and export plugins. (You may need to first install ''cpan'' with YUM).
 +
yum install cpan
 +
cpan TeX::Encode
  
yum -y install epel-release
+
== Installing EPrints 3.4.x from Source ==
yum repolist
+
'''N.B. Installing from source is generally discouraged particularly for production repositories.  However, if want to develop the EPrints code or a plugin or Bazaar package it may be useful to install from source, ideally from [https://github.com/eprints/eprints3.4 EPrints Core Git repository].'''
 
 
CPAN modules should be installed using the ''cpan'' command as the root user.
 
 
* '''perl-Geo-IP (epel)''' - Allows IRstats2 to determine the location of views/downloads for publications.]
 
* '''perl-Spreadsheet-WriteExcel (epel)''' - To allow Multiline Excel export.
 
* '''CPAN module Text::Refer''' - Required for EndNote import.
 
* '''perl-Image-ExifTool (epel)''' - Sometimes needed to support generation of thumbnails for uploaded documents/images.
 
* '''perl-LWP-Protocol-https (base)''' - Needed by DataCite plugin to register repository DOIs.
 
 
 
== Installing EPrints 3.3.x from Source ==
 
'''N.B. Installing from source is generally discouraged particularly for production repositories.  However, if want to develop the EPrints code or a plugin or Bazaar package it may be useful to install from source, ideally from [https://github.com/eprints/eprints EPrints Core Git repository].'''
 
  
 
First, install the EPEL YUM package repository and run yum repolist to ensure the GPG key is installed:
 
First, install the EPEL YUM package repository and run yum repolist to ensure the GPG key is installed:
Line 57: Line 62:
 
Now, install all the dependencies that would be installed through the eprints RPM.
 
Now, install all the dependencies that would be installed through the eprints RPM.
  
  yum install libxml2 libxslt httpd mod_perl perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL perl-Time-HiRes perl-CGI \
+
  yum install libxml2 libxslt httpd mod_perl perl-Apache-DBI perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL \
    perl-Digest-MD5 perl-Digest-SHA perl-XML-LibXML perl-XML-LibXSLT perl-XML-SAX perl-MIME-Lite tetex-latex wget \
+
    perl-Time-HiRes perl-CGI perl-Digest-MD5 perl-Digest-SHA perl-Digest-SHA1 perl-JSON perl-XML-LibXML \
    gzip tar ImageMagick unzip elinks poppler-utils chkconfig
+
    perl-XML-LibXSLT perl-XML-SAX perl-MIME-Lite perl-Text-Unidecode perl-JSON perl-Unicode-Collate \
 +
    perl-Pod-LaTeX perl-LWP-Protocol-https perl-IO-String tetex-latex wget gzip tar ImageMagick elinks \
 +
    poppler-utils chkconfig unzip cpan
  
 
Next, create the eprints user
 
Next, create the eprints user
Line 68: Line 75:
  
 
  yum install git
 
  yum install git
  git clone https://github.com/eprints/eprints.git /opt/eprints3
+
mkdir /opt/eprints3/
cd /opt/eprints3/
+
chown eprints:eprints /opt/eprints3/
  git checkout tags/v3.3.15
+
chmod 2775 /opt/eprints3/
chown -R eprints:eprints .  
+
su eprints
 +
  git clone https://github.com/eprints/eprints3.4.git /opt/eprints3
 +
  git checkout tags/v3.4.4
  
 
Next, as the eprints user copy /opt/eprints3/perl_lib/EPrints/SystemSettings.pm.tmpl to /opt/eprints3/perl_lib/Eprints/SystemSettings.pm
 
Next, as the eprints user copy /opt/eprints3/perl_lib/EPrints/SystemSettings.pm.tmpl to /opt/eprints3/perl_lib/Eprints/SystemSettings.pm
Line 92: Line 101:
 
   service httpd restart
 
   service httpd restart
  
You should now be able to access your vanilla repository at the hostname you specified when running '''epadmin create''' from the [[Getting Started with EPrints 3]] instructions.
+
You should now be able to access your vanilla repository at the hostname you specified when running '''epadmin create''' from the [[Getting Started with EPrints 3]] instructions.  You should then login as the admin user you created during this process and turn on the indexer.  This can be done by clicking on the '''Admin''' link under the Logged in menu, then clicking on the '''System Tools''' tab and finally the '''Start Indexer''' button.
 +
 
 +
== Non-critical Dependencies ==
 +
Some of EPrints non-core functionality may not work out of the box as these dependencies are not included as part of the RPM.  Here is a list of known additional packages (and the YUM repositories in which they can be found) or CPAN modules than can be installed.  The latter should be installed using the ''cpan'' command as the root user.
 +
 +
* '''perl-Geo-IP (epel)''' - Allows IRstats2 to determine the location of views/downloads for publications.]
 +
* '''perl-Spreadsheet-WriteExcel (epel)''' - To allow Multiline Excel export.
 +
* '''CPAN module Text::Refer''' - Required for EndNote import.
 +
* '''CPAN module TeX::Encode''' - Required for BibTex export needed for publications flavour.
 +
* '''perl-Image-ExifTool (epel)''' - Sometimes needed to support generation of thumbnails for uploaded documents/images.
 +
* '''perl-LWP-Protocol-https (base)''' - Needed by DataCite plugin to register repository DOIs.
  
 
== Next steps ==
 
== Next steps ==
Line 98: Line 117:
 
Configure eprints per [[Getting_Started_with_EPrints_3]].
 
Configure eprints per [[Getting_Started_with_EPrints_3]].
  
 +
== Operating System Version Specific Requirements ==
  
== Troubleshooting ==
+
=== RHEL / CentOS 7 ===
 
+
No significant issues.
=== Starting database and webserver at boot ===
 
As with any database-backed web application, if you have not already done so you should ensure the database and webserver start up automatically after booting. For Redhat  and Fedora use the following commands as root:
 
  
chkconfig httpd on
+
=== RHEL / CentOS / Rocky 8 ===
chkconfig mysqld on
+
{{:Issues with installing EPrints on RHEL / CentOS / Rocky 8}}
  
For CentOS it will instead be:
+
== Troubleshooting ==
 
+
* If setup in successful but then you can access EPrints through your web browser this is often due to firewalld being enabled by default on recent versions of RHEL, Fedora and CentOS. If firewalld is running either disable it (<tt>systemctl disable --now firewalld</tt>) or [https://docs.rackspace.com/support/how-to/allow-web-traffic-in-a-firewalld-software-firewall/ configure it to allow HTTP/HTTPS traffic].
chkconfig httpd on
+
* If you are having problems uploading files or similar functional issues, this may be due to SELinux being enabled. [[EPrints and SELinux|See advice for enabling SELinux with EPrints]].
chkconfig mariadb on
 
 
 
 
 
=== Failed to parse XML file ===
 
When installing EPrints on RHEL6 (may apply to other versions), If you get the error:
 
  Failed to parse XML file:
 
/usr/share/eprints/lib/lang/en/phrases/system.xml: Entity: line 396: parser error : Entity 'nbsp' not defined age or title page. If there are more...
 
 
 
Run
 
sed -i 's/'''&'''nbsp;/ /g' /usr/share/eprints/lib/lang/en/phrases/system.xml
 
 
 
then navigate to the root of your EPrints install (/opt/eprints or /usr/share/eprints) and run
 
bin/generate_views *repository_id*
 
bin/epadmin reload *repository_id*
 
 
 
 
 
=== Upgrade from previous 3.3 ===
 
After a upgrading from previous 3.3, your existing repository's database may need updating.
 
bin/epadmin update [archive_id]
 
 
 
 
 
=== Apache in eprints group ===
 
 
 
If you choose not to run apache as the eprints user (for example you have another application on the same server) you will need to change https's groups and update the permissions on some directories
 
 
 
Add apache to eprints's group.
 
usermod apache -G eprints
 
 
 
One way to run httpd as 'apache' but still access eprints files is to add httpd to the eprints group.
 
chmod 770 /usr/share/eprints/var
 
chmod 770 /usr/share/eprints/lib/epm/
 
 
 
Be aware that other directories will need to be writable by eprints user group/apache ; those depend on whether you will be using eprints bazaar.
 
 
 
=== Using SELinux ===
 
If you're using SELinux on your server you will need to give Apache read/write access to the documents directory for all repositories you create and the eprints var folder (indexer log, ticker files):
 
 
 
chcon -R -h -t httpd_sys_script_rw_t [eprintspath]/archives/[repoid]/documents/
 
chcon -R -h -t httpd_sys_script_rw_t [eprintspath]/var/
 
chcon -R -h -t httpd_sys_script_rw_t /usr/share/eprints/lib/
 
 
 
You may also need to tell SELinux to allow Apache to talk on the network, if you intend to run your database on a separate server.
 
 
 
setsebool -P httpd_can_network_connect=1
 
 
 
=== Using firewalld ===
 
Typically RHEL/Fedora/CentOS run a firewall that will block remote connections to you webserver.  To overcome this run the following commands as root:
 
 
 
firewall-cmd --permanent --add-service=http
 
service firewalld restart
 
 
 
You will need to same https if you intend to set that up as well. Otherwise, you can just disable the firewall altogether if you have an institutional level firewall:
 
 
 
service firewalld stop
 
chkconfig firewalld off
 

Latest revision as of 12:22, 7 August 2022


Requirements

  • RedHat Enterprise (RHEL) / CentOS 7 or 8 (or Fedora 25+).
  • Pre-install MySQL server and client and make sure the former is enabled and running.
    • RHEL / Fedora:
yum install mysql-server mysql
systemctl enable --now mysql
    • CentOS:
yum install mariadb-server mariadb
systemctl enable --now mariadb

Installing from EPrints RPM

Installing from rpm.eprints.org

Please note that rpm.eprints.org is no longer fully supported and packages are no longer signed. It is planned to start signing packages again in the future but there have been some issues with the signing keys.

  • As root, using yum (or dnf in RHEL/CentOS 8+ and more recent Fedora versions) install epel-release package so eprints RPM dependencies can be met from the EPEL repository where necessary:
yum install epel-release
dnf install epel-release
  • As root, edit /etc/yum.repos.d/eprints.repo and add the following (If you want to install EPrints 3.3 rather than EPrints 3.4 change the baseurl to http://rpm.eprints.org/eprints3):
[eprints_3_4]
name=EPrints Repository Software - $basearch
baseurl=http://rpm.eprints.org/eprints3.4
enabled=1
gpgcheck=0
  • As root, now run one of the following commands to download the cache for this new package repositories. You may be prompted to accept the GPG key for the EPEL repository:
yum makecache
dnf makecache
  • Finally, install EPrints using yum (or dnf):
yum install eprints
dnf install eprints

Installing RPM locally

  • Then install EPrints using yum (or dnf in RHEL/CentOS 8+ and more recent Fedora versions) substituting for the filename of the file you downloaded from https://files.eprints.org.
dnf install eprints-3.4.4-1.el7.noarch.rpm

Installing publications flavour

EPrints 3.4 RPMs only come with the in-built 'zero' flavour and not the typical publications flavour. Before trying to set up you archive you will need to (as the eprints user) download the latest publications flavour tarball from https://files.eprints.org/ and unpack it into /usr/share/eprints/:

wget https://files.eprints.org/2551/8/eprints-3.4.3-flavours.tar.gz
tar -xzvf eprints-3.4.3-flavours.tar.gz -C /usr/share/eprints/
mv /usr/share/eprints/eprints-3.4.3/flavours /usr/share/eprints/
rmdir /usr/share/eprints/eprints-3.4.3/

Before trying to create a publications flavour archive, you will need to install (as the root user) the TeX::Encode module or you will see error messages regarding a missing dependency for the BibTeX import and export plugins. (You may need to first install cpan with YUM).

yum install cpan
cpan TeX::Encode

Installing EPrints 3.4.x from Source

N.B. Installing from source is generally discouraged particularly for production repositories. However, if want to develop the EPrints code or a plugin or Bazaar package it may be useful to install from source, ideally from EPrints Core Git repository.

First, install the EPEL YUM package repository and run yum repolist to ensure the GPG key is installed:

yum install epel-release
yum repolist

Now, install all the dependencies that would be installed through the eprints RPM.

yum install libxml2 libxslt httpd mod_perl perl-Apache-DBI perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL \
    perl-Time-HiRes perl-CGI perl-Digest-MD5 perl-Digest-SHA perl-Digest-SHA1 perl-JSON perl-XML-LibXML \ 
    perl-XML-LibXSLT perl-XML-SAX perl-MIME-Lite perl-Text-Unidecode perl-JSON perl-Unicode-Collate \
    perl-Pod-LaTeX perl-LWP-Protocol-https perl-IO-String tetex-latex wget gzip tar ImageMagick elinks \ 
    poppler-utils chkconfig unzip cpan

Next, create the eprints user

adduser eprints

Next, clone the Git repository from GitHub to /opt/ and set the eprints user as the owner. It is probably best to checkout the latest release rather than using HEAD, which may have known issues:

yum install git
mkdir /opt/eprints3/
chown eprints:eprints /opt/eprints3/
chmod 2775 /opt/eprints3/
su eprints
git clone https://github.com/eprints/eprints3.4.git /opt/eprints3
git checkout tags/v3.4.4

Next, as the eprints user copy /opt/eprints3/perl_lib/EPrints/SystemSettings.pm.tmpl to /opt/eprints3/perl_lib/Eprints/SystemSettings.pm

EPrints is now fully installed at /opt/eprints3. However, you will not yet have a running archive. Follow the Getting Started with EPrints 3 instructions to set this up.

Now update Apache configuration to set it up to use the eprints user and group, by ensuring the following lines are set thus in /etc/httpd/conf/httpd.conf:

User  eprints
Group eprints

Now add the file /etc/httpd/conf.d/eprints.conf with the following line:

Include /opt/eprints3/cfg/apache.conf

There is a good chance your operating system will have SELinux enabled. If so, follow the instructions under Troubleshooting for how to let EPrints do what it needs to do through SELinux.

Finally, restart Apache:

 service httpd restart

You should now be able to access your vanilla repository at the hostname you specified when running epadmin create from the Getting Started with EPrints 3 instructions. You should then login as the admin user you created during this process and turn on the indexer. This can be done by clicking on the Admin link under the Logged in menu, then clicking on the System Tools tab and finally the Start Indexer button.

Non-critical Dependencies

Some of EPrints non-core functionality may not work out of the box as these dependencies are not included as part of the RPM. Here is a list of known additional packages (and the YUM repositories in which they can be found) or CPAN modules than can be installed. The latter should be installed using the cpan command as the root user.

  • perl-Geo-IP (epel) - Allows IRstats2 to determine the location of views/downloads for publications.]
  • perl-Spreadsheet-WriteExcel (epel) - To allow Multiline Excel export.
  • CPAN module Text::Refer - Required for EndNote import.
  • CPAN module TeX::Encode - Required for BibTex export needed for publications flavour.
  • perl-Image-ExifTool (epel) - Sometimes needed to support generation of thumbnails for uploaded documents/images.
  • perl-LWP-Protocol-https (base) - Needed by DataCite plugin to register repository DOIs.

Next steps

Configure eprints per Getting_Started_with_EPrints_3.

Operating System Version Specific Requirements

RHEL / CentOS 7

No significant issues.

RHEL / CentOS / Rocky 8

elinks package is no longer available

The RPM package elinks is no longer available in RHEL / CentOS / Rocky 8 even with EPEL package repository. elinks is no longer needed so if installing from source use the following YUM command line:

dnf install libxml2 libxslt httpd mod_perl perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL perl-Time-HiRes \
   perl-CGI perl-Digest-MD5 perl-Digest-SHA perl-JSON perl-XML-LibXML perl-XML-LibXSLT perl-XML-SAX \
   perl-MIME-Lite perl-Text-Unidecode perl-JSON perl-Unicode-Collate perl-Pod-LaTeX tetex-latex wget \
   gzip tar ImageMagick poppler-utils chkconfig unzip cpan

Alternatively, for RHEL 8 you can enable the codeready-builder repository, which still has elinks available:

subscription-manager repos --enable "codeready-builder-for-rhel-8-$(arch)-rpms"

If you are running CentOS 8 (or Rocky 8) you can similarly enable the powertools repository:

dnf config-manager --set-enabled powertools

perl-IO-String package is no longer available

The RPM package perl-IO-String is no longer available in RHEL / CentOS / Rocky 8 even with EPEL package repository. You can enable the codeready-builder repository, which still has perl-IO-String available:

subscription-manager repos --enable "codeready-builder-for-rhel-8-$(arch)-rpms"

If you are running CentOS 8 (or Rocky 8) you can similarly enable the powertools repository:

dnf config-manager --set-enabled powertools

Sub-dependency packages perl-MIME-Types and perl-Digest-SHA1 are no longer available

perl-MIME-Lite package requires perl-MIME-Types package and perl-Apache-DBI requires perl-Digest-SHA1 package neither of which available on RHEL / CentOS / Rocky 8, even with EPEL repository enabled. You can enable the codeready-builder repository, which still has these packahes available:

subscription-manager repos --enable "codeready-builder-for-rhel-8-$(arch)-rpms"

If you are running CentOS 8 (or Rocky 8) you can similarly enable the powertools repository:

dnf config-manager --set-enabled powertools

Compatibility issues with XML::LibXSLT

Sometimes the Perl module XML::LibXSLT packaged in the perl-XML-LibXSLT package causes segmentation faults with the Apache httpd webserver. Therefore, it may be better to install this Perl module using CPAN (as the root user):

yum erase perl-XML-LibXSLT
cpan XML::LibXSLT

If you have installed the eprints RPM either locally or though DNF (i.e. new YUM). You will not be able to remove perl-XML-LibXSLT RPM without it forcing EPrints to be uninstalled. Therefore, you should manually remove /usr/lib64/perl5/vendor_perl/auto/XML/LibXSLT/ rather than uninstalling the package before installing it using CPAN.

Troubleshooting

  • If setup in successful but then you can access EPrints through your web browser this is often due to firewalld being enabled by default on recent versions of RHEL, Fedora and CentOS. If firewalld is running either disable it (systemctl disable --now firewalld) or configure it to allow HTTP/HTTPS traffic.
  • If you are having problems uploading files or similar functional issues, this may be due to SELinux being enabled. See advice for enabling SELinux with EPrints.