====== Instalace Ubuntu 24 na jakobsonovi ======
Pracujeme na stroji ''tagging'', který pak přejmenujeme.
===== Apache2 =====
* Instalujeme ''apache2''apt install apache2
* Získáme SSL certifikát (podle [[https://www.server-world.info/en/note?os=Ubuntu_24.04&p=httpd&f=3|Apache2 : Configure SSL/TLS]]) anebo si vyrobíme self-signed certifikát (podle [[https://wiki.debian.org/Self-Signed_Certificate|Self-Signed Certificate]]).
* Let's Encrypt:
* Postupujeme podle návodu pro Certbot na https://certbot.eff.org/instructions
* Zvolíme možnost ''%%certbot --apache%%'' a vyplníme:
* E-mail: ''hana.skoumalova@ff.cuni.cz''
* Se vším souhlasíme
* Doména: ''jakobson.korpus.cz''
* vhost: ''default-ssl.jakobson.korpus.cz''
* Vyzkoušíme automatické obnovování:renew --dry-run
* Automatické obnovování se dělá pomocísystemctl list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
Mon 2025-07-28 22:39:00 CEST 6min Mon 2025-07-28 22:09:08 CEST 23min ago phpsessionclean.timer phpsessionclean.service
Tue 2025-07-29 00:00:00 CEST 1h 27min Mon 2025-07-28 00:00:34 CEST - dpkg-db-backup.timer dpkg-db-backup.service
Tue 2025-07-29 00:00:00 CEST 1h 27min Mon 2025-07-28 00:00:34 CEST - logrotate.timer logrotate.service
Tue 2025-07-29 03:33:34 CEST 5h 1min Mon 2025-07-28 22:00:00 CEST 32min ago plocate-updatedb.timer plocate-updatedb.service
Tue 2025-07-29 06:21:44 CEST 7h Mon 2025-07-28 11:53:30 CEST - apt-daily.timer apt-daily.service
Tue 2025-07-29 06:31:23 CEST 7h Mon 2025-07-28 06:24:23 CEST - apt-daily-upgrade.timer apt-daily-upgrade.service
Tue 2025-07-29 07:31:12 CEST 8h Mon 2025-07-28 05:22:28 CEST - man-db.timer man-db.service
Tue 2025-07-29 09:54:00 CEST 11h - - snap.certbot.renew.timer snap.certbot.renew.service
Tue 2025-07-29 10:14:08 CEST 11h Mon 2025-07-28 19:03:21 CEST - motd-news.timer motd-news.service
Tue 2025-07-29 20:36:40 CEST 22h Mon 2025-07-28 20:36:40 CEST 1h 55min ago update-notifier-download.timer update-notifier-download.service
Tue 2025-07-29 20:46:40 CEST 22h Mon 2025-07-28 20:46:40 CEST 1h 45min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Sun 2025-08-03 03:10:25 CEST 5 days Sun 2025-07-27 03:10:43 CEST - e2scrub_all.timer e2scrub_all.service
Mon 2025-08-04 19:04:14 CEST 6 days Mon 2025-07-28 22:28:37 CEST 3min 46s ago update-notifier-motd.timer update-notifier-motd.service
* Upravíme ''/etc/apache2/apache2.conf'', aby obsahovalServerName jakobson.korpus.cz
a odkomentujeme
Redirect permanent "/" "https://jakobson.korpus.cz/"
v ''/etc/apache2/sites-enabled/000-default.conf''
* Self-signed:
* Instalujemeapt-get install apache2 openssl
(nejspíš už je hotovo).
* Můžeme přegenerovat vlastní certifikátmake-ssl-cert generate-default-snakeoil --force-overwrite
* Přepíšeme soubor ''/etc/apache2/sites-available/default-ssl.conf'' a přejmenujeme ho na ''default-ssl.tagging.korpus.cz.conf''
ServerAdmin hana.skoumalova@ff.cuni.cz
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLOptions +StdEnvVars
SSLOptions +StdEnvVars
ServerName tagging.korpus.cz
* Uděláme symlink ze ''../sites-enabled/''
* Do ''/etc/apache2/apache2.conf'' přidáme řádky# Added after enabling SSL
#
ServerName tagging.korpus.cz
* Restartujeme apacheservice apache2 restart
===== MySQL =====
Čerpáno z [[https://documentation.ubuntu.com/server/how-to/databases/install-mysql/|Install and configure a MySQL server]]
* Instalujeme mysql-serverapt-get install mysql-server
* Zkontrolujeme, jestli běžíservice mysql status
* Zkontrolujeme síťový status (ať je to, co chce)ss -tap | grep mysql
LISTEN 0 151 127.0.0.1:mysql 0.0.0.0:* users:(("mysqld",pid=13422,fd=23))
LISTEN 0 70 127.0.0.1:33060 0.0.0.0:* users:(("mysqld",pid=13422,fd=21))
* Přidání uživatele s heslem (root heslo nepotřebuje, ale nikdo se nemůže přihlásit jako root):
mysql> CREATE USER 'skoumal'@'localhost' IDENTIFIED BY 'Z23...';
Query OK, 0 rows affected (0.03 sec)
mysql> GRANT ALL ON *.* TO 'skoumal'@'localhost' WITH GRANT OPTION;
Query OK, 0 rows affected (0.02 sec)
obdobně pro ''korpus.cz'':
mysql> CREATE USER 'skoumal'@'%.korpus.cz' IDENTIFIED BY 'Z23...';
Query OK, 0 rows affected (0.03 sec)
mysql> GRANT ALL ON *.* TO 'skoumal'@'%.korpus.cz' WITH GRANT OPTION;
Query OK, 0 rows affected (0.03 sec)
i když to asi není vůbec třeba.
===== PHP =====
Instalujeme ''PHP''apt install php
==== Zprovoznění pod Apachem ====
* Funguje to samo (''html'' má přednost před ''php'').
* Uživatelské adresářea2enmod userdir
systemctl restart apache2
* Samo nefunguje ''php'' v uživatelských adresářích. V souboru ''mods-enabled/php8.3.conf'' je třeba zakomentovat
php_admin_flag engine Off
===== phpBB3 =====
* Postupuje se podle návodu na [[https://www.phpbb.com/community/docs/INSTALL.html]]
* Stáhne se nejnovější verze z [[https://www.phpbb.com/downloads/]] a případně i jazykový balíček
* Zip se rozbalí do ''/var/www/html'' - vznikne adresář ''phpBB3'' a případně se přidá i další jazyk
* V prohlížeči se otevře stránka [[https://tagging.korpus.cz/phpBB3/install/app.php/install]]
* V záložce ''INSTALOVAT'' se provede kontrola požadavků. V případě, že něco chybí, musí se doinstalovat:
* Podpora MySQL:apt install php-mysql php-curl
* ''mbstring'': V ''/etc/php/8.3/[apache2|cli]/php.ini'' odkomentovatextension=mbstring
extension=mysqli
extension=zip
* Podpora XML/DOM:apt-get install php-xml
* (Možná restartovat apache2)
* Nastavení administrace a databáze:
* ''admin:Z23...''
* FFUK
* MySQL s MySQLi
* ''localhost''
* ''admin''
* ''Z23...''
* ''phpbb3''
* ''phpbb_''
* Cookie secure:: yes
* Force server URL settings: no
* Server protocol: ''%%https://%%''
* Domain name: ''tagging...'' Přejmenovat!!!
* Server port: ''443''
* Script path: ''/phpBB3''
* SMTP server address: ''smtp.korpus.cz''
* SMTP user name: ''skoumal''
* Při přenosu staré databáze na nové místo postupujeme podle **[[https://www.phpbb.com/support/docs/en/3.3/kb/article/transferring-your-board-to-a-new-host-or-domain/|Transferring Your Board to a New Host or Domain]]**
* Po přenosu jsou platná tato jména:
* ''admin:Vel...''
* ''skoumal:10...''
* Po přejmenování stroje se musí přepsat ''config.php''. (V ''config.php'' je ''localhost''.)
===== dokuwiki =====
* Postupujeme podle [[https://www.dokuwiki.org/install]] (mírně zastaralý)
* Požadavky jsou (snad) splněny
* Vše se rozbalí pod ''/var/www/html/''
* V nastavení apache nesmí být čitelné adresáře a musí být povoleno ''.htaccess'':
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
* V hlavním adresáři ''dokuwiki'' se použije ''.htaccess.dist''
* Uděláme si farmu:
* Instalujeme plugin ''Farmer Plugin''
* V Apachi musíme povolit ''mod_rewrite''
* Založíme farmu ''../Farm'' a zvířátko ''frap''
* Věci pro ÚTKL necháme pod ''dokuwiki''
* Pluginy:
* Anchor
* comment
* farmer
* hidden
* jplayer
* sectiontoggle
* smtp: ''smtp.korpus.cz:25'' (nic dalšího není potřeba)
* Wrap
* Přeneseme data z ''utkl.ff.cuni.cz'':
* ''utkl''
* Všechno ostatní, co bylo "nahoře" zkopírujeme pod ''utkl'' (a pak musíme opravit cesty)
* ''wiki:user:skoumal''
* ''media''
===== TEITOK =====
* Naklonujeme TEITOK z gitlabu:git clone git@gitlab.com:maartenes/TEITOK.git
* Zkopírujeme všechno, co je ve ''/var/www/html/teitok''
* Nainstalujeme Smarty:
* V ''/usr/local/TEITOK/vendor/'' rozbalíme soubor stažený z ''https://github.com/smarty-php/smarty/archive/master.zip''
* Ve ''/var/www/html/teitok'' přidáme do ''.htaccess'' tento řádekSetEnv SMARTY_DIR /usr/local/TEITOK/vendor/smarty/smarty/libs/
* Nainstalujeme Corpus WorkBench ''https://cwb.sourceforge.io/'':
* Stáhneme .deb package z ''https://sourceforge.net/projects/cwb/files/cwb/cwb-3.5/deb/'' (pozor na pozdější verze)
* Nainstalujemesudo dpkg -i NAME_OF_FILE.deb
* Zkompilujeme programy v ''/usr/local/TEITOK/src''
sudo g++ -std=c++11 -o /usr/local/bin/neotagxml neotagxml.cpp pugixml.cpp functions-c11.cpp
sudo g++ -std=c++11 -o /usr/local/bin/neotagtrain neotagtrain.cpp pugixml.cpp functions-c11.cpp
sudo g++ -std=c++11 -o /usr/local/bin/tt-xpath tt-xpath.cpp pugixml.cpp functions-c11.cpp
sudo g++ -std=c++11 -o /usr/local/bin/tt-cwb-encode tt-cwb-encode.cpp pugixml.cpp functions-c11.cpp
sudo g++ -std=c++11 -o /usr/local/bin/tt-cwb-xidx tt-cwb-xidx.cpp pugixml.cpp functions-c11.cpp
sudo g++ -std=c++11 -o /usr/local/bin/tt-cqp tt-cqp.cpp pugixml.cpp functions-c11.cpp
(čas od času zkontrolujeme, jestli při updatu nepřišel nový zdroják)
* Zkopírujeme ''/usr/local/TEITOK/projects/check'' do ''/var/www/html/teitok'' a otevřeme ho v prohlížeči. Řekne nám, co ještě chybí.
* Nastavíme automatické updaty (pod uživatelem, který instaloval program z gitu)crontab -l
30 05 * * * cd /usr/local/TEITOK && git pull
===== Povolení rc.local =====
Protože je ''jakobson'' virtuál, musí se některé věci dělat zvenčí, tzn. musí je udělat Pavel. Něco se dá ale pořídit pomocí ''/etc/rc.local'', což není adresář, ale jeden skript:
* Vytvoříme skript ''/etc/rc.local'':
#!/usr/bin/bash
mount -t tmpfs -o size=100G tmpfs /mnt/ramdisk
mkdir /mnt/ramdisk/tmp
chmod go+w /mnt/ramdisk/tmp
# last line must be exit 0
exit 0
a uděláme ho spustitelný.
* Zjistíme, jestli je povolený:sudo systemctl is-enabled rc-local.service
sudo systemctl status rc-local.service
* Pokud ne, povolíme ho:sudo systemctl enable rc-local.service
sudo systemctl start rc-local.service
a znovu zkontrolujeme status
sudo systemctl status rc-local.service