Za instalaciju je potrebno imati ili root
account ili sudo
account. Ove upute pretpostavljaju da postoji sudo korisnik naziva moreuser s rwx pristupom direktoriju /home/moreuser
Za instalaciju Morepress-a (OJS i OMP) potrebno je nekoliko paketa koje možemo instalirati naredbom
sudo apt-get install git apache2 mysql-server php5 php-pear php5-mysql php5-curl
Nakon instalacije paketa, možemo klonirati git repozitorij u direktorij korisnika:
cd /home/moreuser
git clone -b morepress.unizd.hr https://github.com/tjakopec/morepress.git
Sada moramo postaviti bazu kojoj će OJS pristupati i MySQL korisnika s pristupom toj bazi. Prvo se moramo ulogirati u MySQL kao root (lozinku smo postavili tijekom instalacije MySQL-a):
sudo mysql -u root -p
Zatim možemo napraviti bazu:
CREATE DATABASE ojs;
Zatim napravimo MySQL korisnika koji će imati pristup navedenoj bazi. U ovim uputama koristit ćemo dbmoreuser
i dbpassword
kao pristupne podatke za MySQL:
CREATE USER 'dbmoreuser'@'localhost' IDENTIFIED BY 'dbpassword';
Sada možemo korisniku dbmoreuser
dati sve ovlasti nad bazom ojs
:
GRANT ALL PRIVILEGES ON ojs.* TO 'dbmoreuser'@'localhost';
I kao posljednji korak u MySQL-u primjeniti promjene:
FLUSH PRIVILEGES;
Iz MySQL-a izlazimo s naredbom
exit
Naš sljedeći korak sada je prilagodba Apache2, odnosno izrada konfiguracije za Morepress, što ćemo napraviti na sljedeći način:
cd /etc/apache2/sites-available
sudo nano morepress.unizd.hr.conf
Sadržaj datoteke ovisi o tome postavljamo li testni ili produkcijski server. U ovim uputama, pretpostavit će se da je riječ o testnom serveru (u ovim primjerima kao testna adresa koristit će se more.test.com
).
<VirtualHost *:80>
DocumentRoot /home/moreuser/morepress
ServerName more.test.com
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/moreuser/morepress>
# Options Indexes FollowSymLinks MultiViews
# AllowOverride None
# Order allow,deny
# allow from all
Require all granted
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Datoteku spremamo naredbom Ctrl+X
i zatim Y
.
Potrebno je i dozvoliti OJS-u mijenjanje linkova, što ćemo napraviti na sljedeći način:
cd /etc/apache2
sudo nano apache2.conf
Dodavanjem sljedećeg na mjesto gdje su popisi direktorija:
<Directory /home/moreuser/morepress/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Sada možemo uključiti konfiguraciju i resetirati Apache2:
sudo a2dissite 000-default.conf
sudo a2ensite morepress.unizd.hr.conf
sudo service apache2 reload
Sljedeći korak je konfiguriranje OJS-a. Prvo moramo konfigurirati .htaccess datoteku:
cd /home/moreuser/morepress
sudo nano .htaccess
Potrebno je promjeniti liniju
RewriteRule ^(.*) http://morepress.unizd.hr/journals [R,L]
tako da sadrži IP adresu ili URL adresu testnog servera (u ovim primjerima koristit će se more.test.com
)
RewriteRule ^(.*) http://more.test.com/journals [R,L]
Ponovno spremimo promjene sa Ctrl+X
i Y
Nakon toga moramo kopirati template konfiguracije OJS-a:
cd journals
cp config.TEMPLATE.inc.php config.inc.php
Slijedi nam naštimati config.inc.php
prema postavkama poslužitelja:
nano config.inc.php
Potrebno je namjestiti sljedeće retke:
installed = On
base_url = "http://more.test.com"
restful_urls = On
[database]
username = dbmoreuser
password = dbpassword
name = ojs
; Default locale
locale = hr_HR
[files]
files_dir = /home/moreuser/ojs_files
I opet spremamo s Ctrl+X
i Y
.
Naredni koraci odnose se na unos svih podataka za bazu i datoteka s Morepress-a kako bi stranica funkcionirala, odnosno kako bi mogli s nečim raditi. Ovo se odnosi na
files
direktorij sa svim potrebnim PDF-ovima, HTML-ovima itd. za člankecache
direktorij- SQL skriptu za bazu podataka
Navedeni direktoriji i datoteke sadrže stanje baze i podataka Morepress-a datuma 5. lipnja 2017. Ukoliko je iz nekog razloga za testni server potrebno dobiti novije podatke, oni se trebaju povući ili preko FTP-a ili preko rsync
naredbe.
files
direktorij povući ćemo wget
naredbom s Dropbox-a. Direktorij se ne nalazi na git-u iz razloga što sadrži gotovo 5 GB podataka.
cd /home/moreuser
wget https://www.dropbox.com/s/p0cbk6mbkcdysgg/files_backup_20170605.tar.gz?dl=1
mv files_backup_20170605.tar.gz?dl=1 files_backup_20170605.tar.gz
tar xvzf files_backup_20170605.tar.gz
mv files ojs_files
rm files_backup_20170605.tar.gz
Istu stvar ponovit ćemo s cache
direktorijem, ali pod journals
direktorijem:
cd morepress/journals
wget https://www.dropbox.com/s/2hk8g5ra5p3hvcj/cache_backup_20170605.tar.gz?dl=1
mv cache_backup_20170605.tar.gz?dl=1 cache_backup_20170605.tar.gz
tar xvzf cache_backup_20170605.tar.gz
rm cache_backup_20170605.tar.gz
Nakon toga, preostaje nam učitati SQL skriptu u našu bazu. SQL skripta također se preuzima preko wget
naredbe s Dropboxa:
cd /home/moreuser
wget https://www.dropbox.com/s/hk6bv8bcgp2wr22/ojs_05-Jun-2017?dl=1
mv ojs_05-Jun-2017?dl=1 ojs_05-Jun-2017.sql
mysql -u dbmoreuser -pdbpassword ojs < ojs_05-Jun-2017.sql
Kako bi Apache mogao napraviti rewrite index.php
dijela iz URL-a potrebno je uključiti mod_rewrite na sljedeći način:
sudo a2enmod rewrite
sudo service apache2 restart
Na poslijetku, potrebno je Apache korisniku www-data
dati ovlasti nad pristupom direktoriju:
cd /home/moreuser
sudo chown www-data:moreuser -R morepress/
I to je to! Morepress bi sada trebao raditi na testnom poslužitelju! Ali to nije sve ako želimo sve mogućnosti kao na produkciji. U sljedećem dijelu objasnit ćemo instalaciju Apache Solr/Lucene
full-text pretraživanja i postavljanja cron
poslova
solr
i jetty
direktoriji već su uključeni u Git repozitorij. Međutim, kako bi pokrenuli Solr, server nam mora imati Java pakete, koje ćemo instalirati naredbom:
sudo apt-get install default-jre
Nakon toga možemo pokrenuti Solr sljedećim naredbama:
cd /home/moreuser/morepress/journals/plugins/generic/lucene/embedded/bin
./start.sh
NAPOMENA: Apache Solr oduzima puno radne memorije, pogotovo ako server radi dugo vremena bez ponovnog pokretanja i ako kontanstno indeksira nove članke. Preporuča se barem 2GB RAM-a na serveru ako će full-text pretraživanja biti uključeno.
Ukoliko je iz nekog razloga potrebno ponovno indeksirati naslove, potrebno je obrisati postojeće indekse naredbom:
rm -R /home/moreuser/ojs_files/lucene
a zatim pokrenuti reindeksiranje:
cd /home/moreuser/morepress/journals/tools
sudo php rebuildSearchIndex.php
Za pravilno funkcioniranje poslužitelja potrebno je i postaviti nekoliko cron
poslova, i to kao moreuser
korisnik:
crontab -e
OJS statistiku pristupa člancima prikuplja preko Apache-a, ali kako to ne bi konstantno radio, što je zahtjevno za poslužitelj, nudi posebnu skriptu koja prikuplja log
podatke Apache-a te sprema u vlastitu bazu u određenim intervalima. Na produkciji Morepress-a to je svakih pola sata (5.6.2017.). Za ovaj cron potrebno je prvo izraditi shell skriptu:
cd /home/moreuser
nano runstats.sh
U datoteku ćemo staviti sljedeće:
cd /home/moreuser/
sudo cp -p -r ojs_files/usageStats/usageEventLogs/. ojs_files/usageStats/stage/
sudo chmod -R 777 ojs_files/usageStats/
cd morepress/journals/
php tools/runScheduledTasks.php plugins/generic/usageStats/scheduledTasksAutoStage.xml
php tools/runScheduledTasks.php plugins/generic/usageStats/scheduledTasks.xml
Ovu skriptu sada možemo staviti u crontab
(odabrati 1
za nano):
crontab -e
Za pokretanje skripte svakih pola sata potrebno je dodati sljedeću liniju na kraj datoteke (i obavezno ostaviti jedan prazan red na kraju datoteke!):
*/30 * * * * sudo bash /home/moreuser/runstats.sh
Kao i uvijek, iz nano
izlazimo sa Ctrl+X
pa Y
.
Kako ne bi ručno morali pokretati Solr server svaki put kad se poslužitelj iz nekog razloga resetira, možemo dodati sljedeći cron
u crontab
:
crontab -e
@reboot /home/moreuser/morepress/journals/plugins/generic/lucene/embedded/bin/start.sh
Kao i uvijek, iz nano
izlazimo sa Ctrl+X
pa Y
.
Radi sigurnosti baze podataka, možemo automatizirati i izradu backup-a naredbom mysqldump
:
crontab -e
59 1 * * * /usr/bin/mysqldump -u dbmoreuser -p'dbpassword' ojs > /home/moreuser/cron_sqldump/ojs_$(date '+\%d-\%b-\%Y')
Ova naredba stvarat će SQL kopije ojs
baze svaki dan u 1:59 sati u folder cron_sqldump
s nazivom ojs_DATUM
.
Ukoliko imamo još jedan poslužitelj koji nam može poslužiti kao backup poslužitelj (i postavili smo SSH ključeve između oba poslužitelja), sljedećom cron
naredbom možemo automatizirati backup:
5 2 * * * rsync -rtv /home/moreuser/ backup_user@backup_server:/home/backup_user/morepress_dnevni_backup/
Ova naredba izvodi se svaki dan u 2:05 sati
NAPOMENA: S obzirom da je naziv backup direktorija fiksni, svaki sljedeći backup pregazit će postojeći. Ukoliko želimo svaki dan imati zasebni backup, potrebno je u naziv direktorija uvrstiti datum, npr. $(date '+\%d-\%b-\%Y')
. Međutim, kako su direktoriji veliki, u ovom slučaju je potrebno na backup poslužitelju imati puno prostora.
Za tjedni backup naredba je:
5 2 * * 0 rsync -rtv /home/moreuser/ backup_user@backup_server:/home/backup_user/morepress_tjedni_backup/