Lewati ke konten utama

Panduan Lengkap Cara Install EPrints menggunakan LAMP Stack di AlmaLinux 8

EPrints adalah salah satu perangkat lunak repository digital open source yang banyak digunakan oleh perguruan tinggi, lembaga riset, dan organisasi besar untuk mengelola publikasi ilmiah. Dengan dukungan Apache Web Server, sistem operasi AlmaLinux 8, serta database yang stabil, kita dapat membangun repository yang cepat, aman, dan mudah diakses. Panduan ini akan memberikan panduan langkah demi langkah yang sangat rinci tentang cara melakukan instalasi EPrints di atas server AlmaLinux 8 dengan menggunakan Apache.

Prerequisite

  • Akses full root
  • Domain (opsional)
  • Basic Linux Command Line

Persiapan

bahaya

Pastikan firewall dan SELinux telah disesuaikan atau dinonaktifkan sementara jika ingin menghindari kendala saat instalasi awal.

Sebelum memulai proses instalasi, pastikan bahwa server AlmaLinux 8 telah diperbarui ke versi terbaru. Gunakan perintah berikut untuk memastikan sistem telah menggunakan paket terbaru:

dnf update -y
dnf install epel-release -y

Install Apache

Apache adalah web server yang andal dan digunakan secara luas dalam lingkungan produksi. Untuk menginstalnya, jalankan perintah berikut:

dnf install httpd -y

Setelah instalasi selesai, aktifkan dan mulai layanan Apache dengan perintah berikut:

systemctl enable --now httpd

Untuk mengizinkan akses ke server melalui HTTP dan HTTPS, izinkan firewall:

firewall-cmd --permanent --add-service={http,https}
firewall-cmd --reload

Install Perl

EPrints membutuhkan beberapa paket dependensi seperti Perl modules dan library tambahan. Kita dapat menginstalnya dengan perintah berikut:

dnf config-manager --set-enabled powertools
dnf 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-LWP-Protocol-https perl-IO-String tetex-latex wget gzip tar ImageMagick poppler-utils \
chkconfig unzip cpan python3-html2text expat-devel libxslt-devel

Install MariaDB

MariaDB merupakan pengganti dari MySQL dan kompatibel untuk aplikasi berbasis MySQL. Jalankan perintah berikut untuk menginstalnya:

dnf module list mariadb

Contoh output:

AlmaLinux 8 - AppStream
Name Stream Profiles Summary
mariadb 10.3 [d] client, galera, server [d] MariaDB Module
mariadb 10.5 client, galera, server [d] MariaDB Module
mariadb 10.11 client, galera, server [d] MariaDB Module

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Dari output diatas terlihat bahwa tersedia versi default yang tersedia MariaDB yaitu versi 10.11 (terbaru dari bawaan OS). Namun, kita akan menggunakan MariaDB versi 11.4.7 dengan menggunakan repository resmi https://mariadb.org/download/ lalu reset mariadb agar tidak menggunakan default repository dari OS:

dnf module reset mariadb

Jalankan perintah berikut untuk menambahkan repository MariaDB versi 11.4.7:

nano /etc/yum.repos.d/MariaDB.repo

Tambahkan parameter berikut:

# MariaDB 11.4 RedHatEnterpriseLinux repository list - created 2025-07-31 14:04 UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
# rpm.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.
# baseurl = https://rpm.mariadb.org/11.4/rhel/$releasever/$basearch
baseurl = https://mirror.its.dal.ca/mariadb/yum/11.4/rhel/$releasever/$basearch
module_hotfixes = 1
# gpgkey = https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
gpgkey = https://mirror.its.dal.ca/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1

Lalu jalankan perintah berikut untuk menginstall MariaDB:

dnf install MariaDB-server MariaDB-client

Enable dan aktifkan service MariaDB:

systemctl enable --now mariadb
systemctl status mariadb

Sebelum digunakan untuk produksi atau testing, sebaiknya amankan terlebih dahulu instalasi MariaDB dengan menjalankan perintah berikut:

mariadb-secure-installation

Kemudian ikuti petunjuk yang muncul:

  • Enter current password for root (enter for none) → [ENTER]
  • Switch to unix_socket authentication → Y
  • Change the root password? → Y
  • Remove anonymous users? → Y
  • Disallow root login remotely? Y
  • Remove test database and access to it? Y
  • Reload privilege tables now? Y

Install EPrints

Sebelum menginstall EPrints versi 3.4.6, kita akan membuat user eprints yang nantinya user ini akan menjalankan script instalasi dari EPrints serta membuat database dan virtualhost.

Buat user eprints:

adduser eprints
usermod -aG apache eprints
usermod -aG eprints apache

Download file EPrints dan letakkan pada direktori sesuai virtualhost:

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
cd /opt/eprints3
git checkout tags/v3.4.6

Jalankan perintah berikut untuk instalasi EPrints:

cd /opt/eprints3
bin/epadmin create pub

Berikut adalah contoh output instruksi instalasi EPrints:

Archive ID? repo
Configure vital settings? [yes] ? [ENTER]
Hostname? focusnic.biz.id
Webserver Port [80] ? [ENTER]
Path [/] ? [ENTER]
HTTPS Hostname [] ? [ENTER]
Administrator Email? admin@focusnic.biz.id
Archive Name [Test Repository] ? Focusnic Repository
Organisation Name [Organisation of Test] ? IT
Write these core settings? [yes] ? [ENTER]
Configure database? [yes] ? [ENTER]
Configuring Database for: repo
Database Name [repo] ? [ENTER]
MySQL Host [localhost] ? [ENTER]
MySQL Port (# for no setting) [#] ? [ENTER]
MySQL Socket (# for no setting) [#] ? [ENTER]
Database User [repo] ? [ENTER]
Database Password [Lwzkn1VBYwLdCdlv] ? [ENTER]
Database Engine [InnoDB] ? [ENTER]
Write these database settings? [yes] ? [ENTER]
Create database "repo" [yes] ? [ENTER]
Database Superuser Username [root] ? [ENTER]
Database Superuser Password? [ROOT_PASSWORD]
Create database tables? [yes] ? [ENTER]
Create an initial user? [yes] ? [ENTER]
Enter a username [admin] ? [ENTER]
Select a user type (user|editor|admin) [admin] ? [ENTER]
Enter Password? [STRONG_PASSWORD]
Email? admin@focusnic.biz.id
Do you want to build the static web pages? [yes] ? [ENTER]
Do you want to import the LOC subjects and sample divisions? [yes] ? [ENTER]
Do you want to update the apache config files? (you still need to add the 'Include' line) [yes] ? [ENTER]
Wrote /opt/eprints3/cfg/apache.conf
Wrote /opt/eprints3/cfg/apache_ssl.conf
Wrote /opt/eprints3/cfg/perl_module_isolation.conf
Wrote /opt/eprints3/cfg/perl_module_isolation_vhost.conf
Wrote /opt/eprints3/cfg/apache/repo.conf

Kemudian tambahkan konfigurasi virtualhost EPrints berikut dengan user root lalu restart Apache untuk menyimpan perubahan:

exit
echo "Include /opt/eprints3/cfg/apache.conf" >> /etc/httpd/conf/httpd.conf
systemctl restart httpd
systemctl status httpd

Silahkan akses instalasi EPrints pada browser dengan mengetik nama domain atau IP
Akses halaman admin EPrints melalui http://$DOMAIN/cgi/users/home

SSL

Mengaktifkan SSL untuk EPrints sebagai keamanan tambahan menggunakan SSL Let's Encrypt via Certbot. Jalankan perintah berikut untuk menginstall dependensi certbot:

dnf install certbot python3-certbot-apache -y
systemctl restart httpd

Kemudian request SSL dengan menjalankan perintah berikut:

certbot --non-interactive -m admin@focusnic.biz.id --agree-tos --no-eff-email --apache certonly -d focusnic.biz.id

File SSL akan disimpan pada direktori berikut:

Certificate is saved at: /etc/letsencrypt/live/focusnic.biz.id/fullchain.pem
Key is saved at: /etc/letsencrypt/live/focusnic.biz.id/privkey.pem

Lalu tambahkan virtualhost HTTPS pada file berikut:

nano /opt/eprints3/cfg/apache/repo.conf

Tambahkan parameter berikut pada bagian paling bawah setelah virtualhost HTTP:

/opt/eprints3/cfg/apache/repo.conf
<VirtualHost *:443>
ServerName focusnic.biz.id
ServerAdmin admin@focusnic.biz.id

SSLEngine on
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder on
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256

SSLCertificateFile /etc/letsencrypt/live/focusnic.biz.id/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/focusnic.biz.id/privkey.pem

SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0

<Location "">
PerlSetVar EPrints_ArchiveID repo

Options +ExecCGI
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Allow from all
</IfModule>
</Location>

LimitRequestBody 1073741824
PerlTransHandler +EPrints::Apache::Rewrite

Include /opt/eprints3/cfg/perl_module_isolation_vhost.conf

ErrorLog /var/log/httpd/focusnic.biz.id-error.log
CustomLog /var/log/httpd/focusnic.biz.id-access.log combined
</VirtualHost>

Jalankan perintah berikut untuk regenerate virtualhost:

/opt/eprints3/bin/generate_apacheconf --system --replace

Contoh output:

Wrote /opt/eprints3/cfg/apache.conf
Wrote /opt/eprints3/cfg/apache_ssl.conf
Wrote /opt/eprints3/cfg/perl_module_isolation.conf
Wrote /opt/eprints3/cfg/perl_module_isolation_vhost.conf
Wrote /opt/eprints3/cfg/apache/repo.conf

You must restart apache for any changes to take effect!

Kemudian restart Apache menggunakan user root untuk menyimpan perubahan:

exit
apachectl configtest
systemctl restart httpd

Kemudian akses EPrints menggunakan domain https://$DOMAIN

Troubleshooting

  1. Error readdir() attempted on invalid dirhandle LIB pada EPrints
    Penyebab: Menjalankan epadmin dari folder yang salah (misalnya di public_html) sehingga EPrints tidak menemukan perl_lib. Solusinya selalu jalankan perintah dari folder instalasi inti:
cd /opt/eprints3
bin/epadmin create pub
  1. Modul Perl Tidak Lengkap
    Pada versi EPrints 3.4.6 dibutuhkan modul tambahan (CGI, JSON, LWP). Jalankan perintah berikut untuk menginstall dengan benar
dnf config-manager --set-enabled powertools
dnf 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-LWP-Protocol-https perl-IO-String tetex-latex wget gzip tar ImageMagick poppler-utils \
chkconfig unzip cpan python3-html2text expat-devel libxslt-devel
  1. Error mod_perl cannot handle dir_perms parameter EPrints

Untuk memperbaikinya, silahkan edit file berikut lib/syscfg.d/core.pl dan mengatur $c->{dir_perms} sebagai berikut:

nano /opt/eprints3/lib/syscfg.d/core.pl

Ubah menjadi value berikut:

$c->{dir_perms} = '0775';

Kesimpulan

Instalasi EPrints menggunakan Apache di AlmaLinux 8 merupakan langkah penting untuk membangun repository ilmiah modern yang dapat diakses secara global. Dengan panduan ini, mulai dari persiapan server, instalasi Apache, konfigurasi database MariaDB, pemasangan dependensi, hingga setup repository dapat dilakukan secara sistematis.

Q: Apakah E-Prints bisa dijalankan di AlmaLinux selain versi 8?
A: Ya, EPrints dapat dijalankan di AlmaLinux 9 atau CentOS/RHEL, namun tutorial ini berfokus pada AlmaLinux 8 karena stabilitas dan dukungan komunitasnya yang luas.

Q: Apakah wajib menggunakan Apache untuk EPrints?
A: EPrints didesain untuk berjalan dengan Apache Web Server, sehingga direkomendasikan menggunakan Apache daripada Nginx agar lebih kompatibel.

Q: Apa perbedaan epadmin create archive dengan epadmin create zero?
A:

  • archive → digunakan untuk membuat repository ilmiah penuh.
  • zero → template kosong (biasanya untuk development/testing).

Referensi Lanjutan: