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

From EPrints Documentation
Jump to: navigation, search
(Requirements)
m
(42 intermediate revisions by 8 users not shown)
Line 3: Line 3:
 
==Requirements==
 
==Requirements==
  
* RedHat Enterprise/CentOS 5.5 (earlier versions may work)
+
* 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.
  
==Installing==
+
* Pre-installed MySQL server and client.
 +
** RHEL / Fedora:
 +
yum install mysql-server mysql
 +
** CentOS:
 +
yum install mariadb-server mariadb
 +
 
 +
== Installing from EPrints 3.3.x RPM ==
  
 
Add the rpm.eprints.org repository key:
 
Add the rpm.eprints.org repository key:
Line 11: Line 17:
 
  rpm -ivh http://rpm.eprints.org/rpm-eprints-org-key-1-1.noarch.rpm
 
  rpm -ivh http://rpm.eprints.org/rpm-eprints-org-key-1-1.noarch.rpm
  
... the rpm.eprints.org EPrints repository:
+
Next, add the rpm.eprints.org EPrints repository:
  
 
  rpm -ivh http://rpm.eprints.org/eprints/noarch/rpm-eprints-org-1-1.noarch.rpm
 
  rpm -ivh http://rpm.eprints.org/eprints/noarch/rpm-eprints-org-1-1.noarch.rpm
  
... on '''RHEL 5.x only''' the rpm.eprints.org RHEL updates repository:
+
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):
 +
 
 +
yum install libxml2 libxslt perl-XML-LibXML perl-XML-LibXSLT
 +
 
 +
Finally, install EPrints 3:
 +
 
 +
yum install eprints
 +
 
 +
=== Other 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. 
 +
 
 +
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:
 +
 
 +
yum -y install epel-release
 +
yum repolist
 +
 
 +
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.
 +
* '''CPAN module TeX::Encode''' Required for BibTex export.
 +
* '''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:
 +
 
 +
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-DBI perl-DBD-MySQL perl-IO-Socket-SSL perl-Time-HiRes perl-CGI \
 +
    perl-Digest-MD5 perl-Digest-SHA perl-XML-LibXML perl-XML-LibXSLT perl-XML-SAX perl-MIME-Lite tetex-latex wget \
 +
    gzip tar ImageMagick unzip elinks poppler-utils chkconfig
 +
 
 +
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
 +
git clone https://github.com/eprints/eprints.git /opt/eprints3
 +
cd /opt/eprints3/
 +
git checkout tags/v3.3.16
 +
chown -R eprints:eprints .
 +
 
 +
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.
 +
 
 +
== Next steps ==
 +
 
 +
Configure eprints per [[Getting_Started_with_EPrints_3]].
 +
 
 +
 
 +
== Troubleshooting ==
 +
 
 +
=== 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
 +
chkconfig mysqld on
 +
 
 +
For CentOS it will instead be:
 +
 
 +
chkconfig httpd on
 +
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]
  
rpm -ivh http://rpm.eprints.org/RHEL/5Server/noarch/rpm-eprints-org-RHEL-5-1.noarch.rpm
 
  
Upgrade your XML libraries:
+
=== Apache in eprints group ===
  
yum upgrade libxml2 libxslt perl-XML-LibXML perl-XML-LibXSLT
+
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
  
Install EPrints 3:
+
Add apache to eprints's group.
 +
usermod apache -G eprints
  
  yum install eprints3
+
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/
  
===Other sources for dependencies===
+
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.
  
The following RPM repositories may be useful for finding other dependencies required by EPrints that aren't part of the core RHEL system.
+
=== 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):
  
http://fedoraproject.org/wiki/EPEL - Fedora Extras for RHEL.
+
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/
  
http://pkgs.repoforge.org/rpmforge-release/ - Dag Wieer's repository, which covers a very large range of Perl modules plus others.
+
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.
  
==SELinux==
+
setsebool -P httpd_can_network_connect=1
  
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:
+
=== 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:
  
  chcon -R -h -t httpd_sys_script_rw_t /opt/eprints3/archives/[repoid]/documents/
+
  firewall-cmd --permanent --add-service=http
 +
service firewalld restart
  
==Getting Started==
+
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:
  
[[Getting Started with EPrints 3]]
+
service firewalld stop
 +
chkconfig firewalld off

Revision as of 14:44, 5 April 2019


Requirements

  • 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-installed MySQL server and client.
    • RHEL / Fedora:
yum install mysql-server mysql
    • CentOS:
yum install mariadb-server mariadb

Installing from EPrints 3.3.x RPM

Add the rpm.eprints.org repository key:

rpm -ivh http://rpm.eprints.org/rpm-eprints-org-key-1-1.noarch.rpm

Next, add the rpm.eprints.org EPrints repository:

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):

yum install libxml2 libxslt perl-XML-LibXML perl-XML-LibXSLT

Finally, install EPrints 3:

yum install eprints 

Other 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.

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:

yum -y install epel-release
yum repolist 

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.
  • CPAN module TeX::Encode Required for BibTex export.
  • 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 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-DBI perl-DBD-MySQL perl-IO-Socket-SSL perl-Time-HiRes perl-CGI \
    perl-Digest-MD5 perl-Digest-SHA perl-XML-LibXML perl-XML-LibXSLT perl-XML-SAX perl-MIME-Lite tetex-latex wget \
    gzip tar ImageMagick unzip elinks poppler-utils chkconfig

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
git clone https://github.com/eprints/eprints.git /opt/eprints3
cd /opt/eprints3/
git checkout tags/v3.3.16
chown -R eprints:eprints . 

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.

Next steps

Configure eprints per Getting_Started_with_EPrints_3.


Troubleshooting

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
chkconfig mysqld on

For CentOS it will instead be:

chkconfig httpd on
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/ / /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