Skip to main content

Installation & Requirements

Server Requirementsโ€‹

Before installing OJS 3.5+, ensure your server meets the following minimum requirements:

Softwareโ€‹

ComponentMinimumRecommended
PHP8.18.2+
MySQL8.08.0+
PostgreSQL1415+
Apache2.42.4+
Nginx1.20latest stable

PHP Extensions Requiredโ€‹

mbstring, xml, json, zip, gd, intl, curl, mysqli or pgsql
  • RAM: 2 GB minimum (4 GB+ for busy journals)
  • Disk: 10 GB+ (depends on article file volumes)
  • HTTPS: Required (SSL/TLS certificate)

Downloading OJSโ€‹

  1. Go to https://pkp.sfu.ca/software/ojs/download/
  2. Download the latest OJS 3.5.x stable release
  3. Verify the checksum: sha256sum ojs-3.5.x.tar.gz

Installation Stepsโ€‹

1. Extract Filesโ€‹

tar -xzf ojs-3.5.x.tar.gz
mv ojs-3.5.x /var/www/html/ojs

2. Create Databaseโ€‹

CREATE DATABASE ojs CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'ojsuser'@'localhost' IDENTIFIED BY 'strongpassword';
GRANT ALL PRIVILEGES ON ojs.* TO 'ojsuser'@'localhost';
FLUSH PRIVILEGES;

3. Set File Permissionsโ€‹

chown -R www-data:www-data /var/www/html/ojs
chmod -R 755 /var/www/html/ojs
mkdir -p /var/www/ojs-files
chown -R www-data:www-data /var/www/ojs-files

4. Configure config.inc.phpโ€‹

Copy the sample config and edit key values:

cp config.TEMPLATE.inc.php config.inc.php

Key settings to update:

; Application base URL
base_url[default] = "https://yoursite.com"

; Database
driver = mysqli
host = localhost
username = ojsuser
password = strongpassword
name = ojs

; Files directory (must be outside webroot)
files_dir = /var/www/ojs-files

5. Run the Web Installerโ€‹

Navigate to https://yoursite.com in a browser and follow the installer wizard:

  1. Confirm settings from config.inc.php
  2. Set administrator username, email, and password
  3. Click Install Open Journal Systems

6. Post-Install Checksโ€‹

  • Remove or restrict install.php (OJS does this automatically)
  • Enable HTTPS and redirect HTTP โ†’ HTTPS
  • Set up a cron job for scheduled tasks
  • Configure email (SMTP or sendmail)
  • Take an initial backup

Cron Jobโ€‹

Add the following to your crontab (crontab -e as www-data):

0 * * * * php /var/www/html/ojs/lib/pkp/tools/scheduler.php run >> /dev/null 2>&1

Next Stepsโ€‹

Further Readingโ€‹