Upgradování na verzi 11
Úvod
Tato příručka je určena administrátorům serveru. Uživatelé cloudových služeb si mohou odpočinout, vyložit nohy na stůl a nechat všechny tyto operace na nás.
Verze 11 představuje oproti předchozím verzím výrazný technologický krok vpřed. Upgrade na tuto verzi vyžaduje o něco větší přípravu než běžný upgrade, aby nedošlo k žádným chybám. Tento průvodce vám poslouží jako kontrolní seznam pro hladký přechod.
Nejdůležitější změny ve všech souvisejících technologiích (tech stack) jsou vysvětleny v Poznámkách k verzi. Součástí jsou rovněž důležité funkční změny a informace o zásuvných modulech. Pokud jste tyto poznámky ještě nepřečetli, nejdříve si je prosím přečtěte.
Virtuální stroje Easy výrazně ulehčí život
Některé z následujících bodů se vás mohou týkat a všechno úsilí dohromady se vám může jevit náročnější, než jste ochotni snášet. V takovém případě máte vždy možnost snadno a rychle získat plně nainstalovanou aplikaci v obrazu VMware/VirtualBox (formát .ova). Stačí požádat naši podporu, která vám virtuální stroj vygeneruje a případně i zajistí migraci dat z vašeho stávajícího systému. Odměnou za takové rozhodnutí vám bude, že nemusíte číst zbytek tohoto článku. :)
Užitečné zdroje
Pokyny pro většinu kroků jsou již zveřejněny ve znalostní bázi a přímo v instalačním balíčku (doc/INSTALL_DEBIAN). Nebudeme je všechny kopírovat do tohoto článku. Spíše zde doplníme potřebné souvislosti a zaměříme se na významné změny.
Modelový příklad upgradu
Než podrobně rozebereme jednotlivé komponenty, ukážeme si modelový příklad upgradu. Pracujeme s variantou, že aplikace zůstane na stejném serveru.
Existující server
- Easy VM s Easy Project verze 10.10.1
- ruby -v = 2.5.3
- mysql --verze = 5.7.31
- redis-server --verze = 5.0.3
- gem list | grep bundler = 1.16.6
- node -v (neexistuje)
- aplikační server puma
- webový server nginx
Vzhledem k tomu, že se jedná o virtuální stroj poskytovaný Easy, velké prostředí (OS, databáze) umožňuje upgrade na stejném serveru. Některé komponenty jsou v pořádku a mohou zůstat beze změn (mysql, redis-server, puma, nginx), některé vyžadují upgrade (ruby, bundler), jeden požadavek zcela chybí (Node.js).
Kroky
1) Začněme aktualizací ruby.
rvm install ruby 2.6.7 --patch railsexpress
(počkejte, až se nainstaluje nový ruby, můžete být požádání o heslo sudo)
rvm use ruby-2.6.7 --default
2) Doporučujeme odinstalovat předchozí verzi ruby, abyste se vyhnuli možným kolizím.
rvm remove ruby-2.5.3
Tento příkaz odinstaluje ruby se všemi gemy a dalšími soubory. Doporučujeme to spíš než použití příkazu rvm uninstall, který nemusí odstranit všechno.
3) Nyní musíme znovu nainstalovat všechny potřebné gemy pro aplikaci. Začneme s bundlerem gem install bundler.
gem install bundler
Zkontrolujeme, který bundler byl nainstalován.
gem list | grep bundler
Měl by se zobrazit např. řádek:
bundler (2.1.4, 2.1.2)
Zkontrolujte, zda je k dispozici verze vyšší než 2.2.16.
4) Nyní přejděte na /home/easy/nazev.vaseho.vm
cd /home/easy/your.vm.name
5) Nainstalujte nodejs.
sudo apt update
sudo apt upgrade
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -
sudo apt install nodejs
Zkontrolujte, zda jde o správnou verzi.
node -v
Měl by se zobrazit např. řádek:
v14.16.0
Ujistěte se, že máte verzi 14.16 nebo vyšší.
6) Stáhněte si balíček v11 z klientské zóny a zkopírujte jej do svého virtuálního stroje.
7) Zastavte server puma.
sudo systemctl stop puma@your.domain.name
Od tohoto okamžiku si můžete vybrat, zda chcete pokračovat v automatickém postupu, nebo v manuální aktualizaci.
a) Automatická aktualizace (doporučeno)
8a) Spusťte upgrade pomocí instalačního programu Redmine.
redmine upgrade name_of_package
9a) Postupujte podle kroků v průvodci.
b) Manuální aktualizace
8b) Přejmenujte svou aktuální složku.
mv current/ current_old/
9b) Znovu vytvořte aktuální složku.
mkdir current
10b) Přejděte do aktuální složky.
cd current/
11b) Rozbalte zde balíček.
unzip /path/to/downloaded/package.zip
12b) Nainstalujte gemy.
bundle install
13b) Spusťte migrace.
bundle exec rake easyproject:install RAILS_ENV=production
14b) Pokud je vše v pořádku, spusťte opět server puma.
sudo systemctl start puma@your.domain.name
Kontrolní seznam specifikací
Operační systém
Od verze 11 je jediným podporovaným operačním systémem (v němž aplikace běží přímo) Debian, jmenovitě verze 10 (Buster) a 11 (Bullseye).
Pokud vám Easy Project běží na námi poskytnutém virtuálním stroji, tento požadavek již s největší pravděpodobností splňujete. Pokud používáte nepodporovaný operační systém, musíte přejít na nový server (nejlépe náš virtuální počítač). Přeinstalace nebo upgrade OS pod produkční aplikací rozhodně není ve vašem nejlepším zájmu.
Databázový server
Je nutné používat Perconu/MySQL 5.7+. Existují zhruba tři typové případy:
- Máte starší verzi Percony -> aktualizujte podle oficiálních pokynů, např.:
https://www.percona.com/doc/percona-server/5.7/upgrading_guide_56_57.html - Máte jinou distribuci MySQL (například MariaDB) -> doporučujeme migraci na nový server (nejlépe náš virtuální stroj).
- Máte PostgreSQL -> doporučujeme migraci na nový server (nejlépe náš virtuální stroj). Před samotnou migrací je třeba převést databázi. Otestovali jsme různé nástroje pro převod a poskytujeme návod pro ty nejvhodnější. Jsme také připraveni provést konverzi za vás.
Ruby
Jazyk, který stojí za aplikací, je třeba neustále aktualizovat, podobně jako jazyk, jímž lidé komunikují. Aktualizace jazyka Ruby je popsána zde. Pokud není váš aktuální jazyk Ruby až příliš starý, můžete pokračovat na stejném serveru.
Bundler
Ruby gem pro správu ruby gemů. Protože Easy Project využívá více než 200 gemů, je bundler kriticky důležitou komponentou.
Pro instalaci:
gem install bundler
Pro ověření verze:
gem list | grep bundler
Verze 2.2.x by se měla nainstalovat automaticky. Pokud se tak nestane, postupujte podle oficiální dokumentace.
Redis
Pro zjednodušení některých nových funkcí a zlepšení výkonu ve verzi v11 používáme Sidekiq se serverem redis. Virtuální stroje Easy již tyto komponenty obsahují. Dejte si pozor na verzi, ER11 vyžaduje redis-server 5+.
Nabízíme výňatek z hlavního průvodce instalací, který se nachází v balíčku v11 v části doc/INSTALL_DEBIAN.
- Nastavení redis a sidekiq
Přepněte na uživatele easy.
vim /home/easy/current/config/additional_environment.rb
if Rails.env.production? config.active_job.queue_adapter = :sidekiq
redis_namespace = Rails.root.join("..").basename.to_s redis_url = "redis://#{ENV["REDIS_HOST"] || "127.0.0.1"}:#{ENV["REDIS_PORT"] || 6379}/1" Sidekiq.configure_server do |config| config.redis = { url: redis_url, namespace: redis_namespace }
end
Sidekiq.configure_client do |config| config.redis = { url: redis_url, namespace: redis_namespace }
end end
vim /home/easy/current/config/sidekiq.rb
:verbose: false :pidfile: ../sidekiq.pid :logfile: ./log/sidekiq.log :concurrency: <%= ENV["SIDEKIQ_WORKERS"] || 2 %> :queues:
- critical
- default
- recalculate_custom_fields
- easy_git
- easy_actions
- easy_mail_campaigns
- easy_integrations
- mailers
- easy_rake_tasks
- low
Node.js
A konečně poslední důležitý požadavek. Instalace je poměrně jednoduchá.
sudo apt update
sudo apt upgrade
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -
sudo apt install nodejs
Zkontrolujte, zda máte verzi 14.16. Dokumentace je k dispozici zde.
WebSockets
Ačkoli nejde o striktní požadavek, který by blokoval spuštění aplikace, dvě funkce tuto technologii využívají (zobrazení živého stavu online/offline v avataru uživatele; upozornění na dokončený export v aplikaci). V budoucnu plánujeme použití websocketů rozšířovat.
Je třeba povolit funkci Action Cable. Je závislá na službě Redis. Pokud chcete tyto funkce používat, ale nejste obeznámeni s konfigurací Redis/ActionCable, doporučujeme přejít na nový virtuální stroj, v němž jsou tyto funkce předkonfigurovány.
Konec sub-uri
Vzhledem k tomu, že front-end získává pokročilá vylepšení, není již možné nadále podporovat konfiguraci sub-uri. Tento druh konfigurace je citlivý na komponenty Javascriptu a často způsobuje nefunkčnost. Překonfigurujte prosím svůj server na běžnou doménu.
Po aktualizaci
Migrace textů Textile/Markdown
Jak je uvedeno v Poznámkách k verzi, přestali jsme podporovat různé textové editory. Pokud jste dříve používali textové editory textile nebo markdown, budete muset spustit migraci formátovaných textů do HTML pomocí příslušného příkazu těchto editorů.
Nejprve zkontrolujte své stávající formátování textu pomocí:
bundle exec rails r -e production "puts Setting.text_formatting"
Pokud jde o Textile, použijte tento příkaz:
bundle exec rake easyproject:textile:migrate_all source_formatting=textile RAILS_ENV=production
nebo pokud je formátování textu Markdown, pak tento:
bundle exec rake easyproject:textile:migrate_all source_formatting=markdown RAILS_ENV=production
A pokud byla migrace úspěšná, přepněte nakonec formátování textu na HTML pomocí:
bundle exec rails r -e production "puts Setting.text_formatting = 'HTML'"
Pro úplné uplatnění změn restartujte webový server.