Nainstalujte Plesk na CentOS 7
Používáte jiný systém? Plesk je proprietární ovládací panel webového hostitele, který umožňuje uživatelům spravovat jejich osobní a/nebo klientské webové stránky, databáze
Redmine je bezplatný a open source webový nástroj pro správu projektů. Je napsán v Ruby on Rails a podporuje více databázových serverů pro ukládání databáze. Jedná se o funkčně bohatou aplikaci podporující více projektů, role ACL a systém sledování problémů. Má také podporu Ganttova diagramu a kalendáře, správu souborů, wiki projektu a fórum a mnoho dalších funkcí. Podporuje systémy správy verzí, jako je Git, SVN nebo CVS. Je také vícejazyčný a podporuje až 49 jazyků.
Tato příručka byla napsána pro Redmine 3.4.4, ale může se vztahovat i na novější verze.
Pro tento tutoriál použijeme 192.168.1.1
jako veřejnou IP adresu a redmine.example.com
jako název domény směřující k instanci Vultr. Ujistěte se, že jste nahradili všechny výskyty vzorového názvu domény a IP adresy skutečnými.
Aktualizujte svůj základní systém pomocí průvodce Jak aktualizovat CentOS 7 . Jakmile bude váš systém aktualizován, pokračujte v instalaci závislostí.
Redmine je napsán v Ruby on Rails, takže pro obsluhu aplikace budeme vyžadovat, aby se Phusion Passenger integroval s webovým serverem Apache. Nainstalujte Apache.
sudo yum -y install httpd httpd-devel libcurl-devel
K sestavení aplikace Redmine budeme potřebovat také nějaké vývojové nástroje. Nainstalujte požadované nástroje.
sudo yum -y install ImageMagick ImageMagick-devel git libxml2-devel libxslt-devel gcc bzip2 openssl-devel zlib-devel gdbm-devel ncurses-devel autoconf automake bison gcc-c++ libffi-devel libtool patch readline-devel sqlite-devel glibc-headers glibc-devel libyaml-devel libicu-devel libidn-devel
Redmine podporuje několik typů databázových serverů, jako jsou MySQL, PostgreSQL a MSSQL. V tomto tutoriálu použijeme PostgreSQL k hostování databázového serveru Redmine.
PostgreSQL je objektově relační databázový systém. Výchozí yum
úložiště obsahuje starou verzi PostgreSQL, proto přidejte úložiště PostgreSQL do systému.
sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpm
Nainstalujte databázový server PostgreSQL.
sudo yum -y install postgresql10-server postgresql10-contrib postgresql10
Inicializujte databázi.
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
Spusťte PostgreSQL server a povolte jeho automatické spouštění při bootování.
sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10
Změňte heslo pro výchozího uživatele PostgreSQL.
sudo passwd postgres
Přihlaste se jako uživatel PostgreSQL.
sudo su - postgres
Vytvořte nového uživatele PostgreSQL pro Redmine.
createuser redmine
Můžete použít libovolné uživatelské jméno místo redmine
. PostgreSQL poskytuje psql
prostředí pro spouštění dotazů na databázi. Přepněte do prostředí PostgreSQL.
psql
Nastavte heslo pro nově vytvořeného uživatele pro databázi Redmine.
ALTER USER redmine WITH ENCRYPTED password 'DBPassword';
Nahraďte jej DBPassword
bezpečným heslem. Vytvořte novou databázi pro instalaci Redmine.
CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
Vyjděte ze psql
skořápky.
\q
Přepnout na sudo
uživatele.
exit
Upravte pg_hba.conf
soubor, abyste povolili ověřování založené na MD5.
sudo nano /var/lib/pgsql/10/data/pg_hba.conf
Najděte následující řádky a změňte hodnoty peer
a ident
ve METHOD
sloupci na trust
a md5
.
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
Po aktualizaci by konfigurace měla vypadat takto.
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
Restartujte PostgreSQL, aby se změny projevily.
sudo systemctl restart postgresql-10
Nainstalujte několik dalších požadovaných závislostí PostgreSQL.
sudo yum -y install libpqxx-devel protobuf-devel
Ke spuštění aplikace se doporučuje použít neprivilegovaného uživatele, aby byla izolována od zbytku systému. Vytvořte nového uživatele pro Redmine a přepněte na nově vytvořeného uživatele.
sudo adduser redmine
sudo su - redmine
Nejnovější verzi Ruby nainstalujeme pomocí Správce verzí Ruby neboli RVM. Používá se k instalaci a správě více verzí Ruby.
Přidejte klíč GPG RVM na svůj server.
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
Nainstalujte RVM.
curl -sSL https://get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm
Získejte seznam dostupných verzí Ruby.
rvm list known
Uvidíte dlouhý seznam verzí Ruby.
[redmine@vultr ~]$ rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.7]
[ruby-]2.3[.4]
[ruby-]2.4[.1]
ruby-head
...
Nainstalujte nejnovější verzi Ruby ze seznamu.
rvm install 2.4
Použijte nainstalovanou verzi Ruby.
rvm use 2.4
Jeho verzi si můžete ověřit.
ruby -v
Uvidíte podobný výstup.
[redmine@vultr ~]$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
Nainstalujte bundler, což je správce závislostí pro aplikaci Ruby.
gem install bundler
Ruby je nyní nainstalován. Než nainstalujeme Redmine, budeme muset nainstalovat Phusion Passenger.
Spuštěním následujícího příkazu nainstalujte Passenger.
gem install passenger
Poskytněte oprávnění ke spuštění domovskému adresáři redmine
uživatele. Cestující potřebuje spustit binární soubory, aby mohl sloužit aplikaci.
chmod o+x "/home/redmine"
Nainstalujte modul Apache pro cestující.
passenger-install-apache2-module
The installer script will ask you some questions. First, it will provide you information about the installation process. Then it will ask you to select the language which you will be using. Since our application is written in Ruby on Rails, select Ruby from the menu and press "Enter
" to proceed further.
Which languages are you interested in?
Use <space> to select.
If the menu doesn't display correctly, press '!'
‣ ⬢ Ruby
⬡ Python
⬡ Node.js
⬡ Meteor
The installer will now check for requirements. The installer will not encounter any missing dependencies and will automatically proceed to compile and install the module.
Once the module is installed, it will prompt you to add the module into the Apache configuration file.
Almost there!
Please edit your Apache configuration file, and add these lines:
LoadModule passenger_module /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12
PassengerDefaultRuby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
</IfModule>
After you restart Apache, you are ready to deploy any number of web
applications on Apache, with a minimum amount of configuration!
Press ENTER when you are done editing.
We will skip this for now and will complete it later in the tutorial as the user with which we are logged in now does not have sudo
permissions. Press "Enter
" to skip this step.
Finally, the installer script will validate the installation and you will see a warning saying the Passenger module is not specified in Apache configuration.
Validating installation...
* Checking whether this Passenger install is in PATH... ✓
* Checking whether there are no other Passenger installations... ✓
* Checking whether Apache is installed... ✓
* Checking whether the Passenger module is correctly configured in Apache... (!)
You did not specify 'LoadModule passenger_module' in any of your Apache
configuration files. Please paste the configuration snippet that this
installer printed earlier, into one of your Apache configuration files, such
as /etc/httpd/conf/httpd.conf.
Detected 0 error(s), 1 warning(s).
Press ENTER to continue.
Now that we have installed the Passenger module for Apache, proceed to download and install Redmine.
Download the latest version of Redmine from the official Redmine download page.
cd ~
wget http://www.redmine.org/releases/redmine-3.4.4.tar.gz
Extract the archive and rename the directory for sake of convenience.
tar -xf redmine-*.tar.gz
mv redmine-*/ redmine/
Copy the example configuration files to its production location.
cd redmine
cp config/configuration.yml.example config/configuration.yml
cp config/database.yml.example config/database.yml
Open the database configuration file we just copied to enter the database details.
nano config/database.yml
By default, the database file is configured for MySQL. Find the configurations for production and development, and test which uses the MySQL adapter. Comment out all of these lines.
#production:
# adapter: mysql2
# database: redmine
# host: localhost
# username: root
# password: ""
# encoding: utf8
#development:
# adapter: mysql2
# database: redmine_development
# host: localhost
# username: root
# password: ""
# encoding: utf8
#test:
# adapter: mysql2
# database: redmine_test
# host: localhost
# username: root
# password: ""
# encoding: utf8
Furthur, find the lines which are commented, having production
configuration for the postgresql
adapter. Uncomment those lines and update the database name and user credentials. Make sure to use the correct indentation, which is two spaces.
production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: "DBPassword"
Configure the application to use the PostgreSQL configuration.
bundle config build.pg --with-pg-config=/usr/pgsql-10/bin/pg_config
Install the application dependencies required by the application.
bundle install --without development test
You will see the following message at the end of the installation.
Installing roadie-rails 1.1.1
Bundle complete! 31 Gemfile dependencies, 55 gems now installed.
Gems in the groups development and test were not installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
The following command generates secret tokens that are used to encode the session data.
bundle exec rake generate_secret_token
Write the PostgreSQL database.
RAILS_ENV=production bundle exec rake db:migrate
Run the following command, which writes the default data into PostgreSQL database.
RAILS_ENV=production bundle exec rake redmine:load_default_data
The above command will ask you to choose the default language to be used with the application. The default choice is English; choose according to your preference.
[redmine@vultr redmine]$ RAILS_ENV=production bundle exec rake redmine:load_default_data
Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, es-PA, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en]
====================================
Default configuration data loaded.
Instalace aplikace Redmine je nyní dokončena. Změňte vlastnictví a oprávnění adresářů a souborů.
mkdir -p tmp tmp/pdf public/plugin_assets
chown -R redmine:redmine files log tmp public/plugin_assets
chmod -R 755 files log tmp public/plugin_assets
Nastavili jsme vše, co potřebujeme od neprivilegovaného uživatele. Přepněte zpět na sudo
uživatele spuštěním su - <username>
.
Přidejte modul Passenger pro Apache do konfiguračního souboru Apache. Tím se automaticky načte modul Passenger.
echo "LoadModule passenger_module /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so" | sudo tee -a /etc/httpd/conf.modules.d/00-base.conf
Vytvořte nový soubor virtuálního hostitele pro vaši aplikaci Redmine.
sudo nano /etc/httpd/conf.d/redmine.conf
Naplňte soubor následujícím obsahem.
<VirtualHost *:80>
ServerName redmine.example.com
DocumentRoot /home/redmine/redmine/public
PassengerRoot /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12
PassengerRuby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
PassengerUser redmine
<Directory /home/redmine/redmine/public>
Allow from all
Options -MultiViews
Require all granted
</Directory>
</VirtualHost>
Nezapomeňte nahradit redmine.example.com
skutečným názvem domény. Také se ujistěte, že cesta k PassengerRoot
a PassengerRuby
je správná. Cesta k binárním souborům se může změnit, když bude nové vydání Ruby nebo Passenger. Chcete-li najít tyto cesty, spusťte následující příkaz.
sudo su redmine -c "passenger-config about ruby-command"
Získáte následující výstup.
[user@vultr ~]$ sudo su redmine -c "passenger-config about ruby-command"
passenger-config was invoked through the following Ruby interpreter:
Command: /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
Version: ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
To use in Apache: PassengerRuby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
To use in Nginx : passenger_ruby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
To use with Standalone: /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12/bin/passenger start
Po vytvoření souboru virtuálního hostitele restartujte webový server Apache.
sudo systemctl restart httpd
Upravte konfiguraci brány firewall tak, aby umožňovala port 80
přes bránu firewall.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --reload
Nyní můžete přistupovat ke svému rozhraní Redmine na http://redmine.example.com
. Přihlaste se pomocí uživatelského jména admin
a hesla admin
. Při prvním přihlášení vás Redmine vyzve k aktualizaci hesla.
Vzhledem k tomu, že naše instalace Redmine je na veřejném serveru, doporučujeme použít SSL pro zabezpečení výměny dat ze serveru.
Nainstalujte Certbot, což je klientská aplikace pro Let's Encrypt CA.
sudo yum -y install epel-release
sudo yum -y install certbot mod_ssl
Než budete moci požádat o certifikáty, budete muset povolit port 80
a/ 443
nebo standard HTTP
a HTTPS
služby přes bránu firewall. Protože port jsme již povolili 80
dříve, povolme port 443
.
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
Poznámka: Chcete-li získat certifikáty od Let's Encrypt CA, doména, pro kterou mají být certifikáty generovány, musí být nasměrována na server. Pokud ne, proveďte potřebné změny v záznamech DNS domény a počkejte, až se DNS rozšíří, než znovu požádáte o certifikát. Certbot před poskytnutím certifikátů zkontroluje autoritu domény.
Vygenerujte certifikáty SSL.
sudo certbot certonly --webroot -w /home/redmine/redmine/public -d redmine.example.com
Vygenerované certifikáty budou pravděpodobně uloženy ve formátu /etc/letsencrypt/live/redmine.example.com/
. SSL certifikát bude uložen jako cert.pem
a soukromý klíč bude uložen jako privkey.pem
.
Platnost certifikátů Let's Encrypt vyprší za 90 dní, proto se doporučuje nastavit automatické obnovování certifikátů pomocí úloh Cron.
Otevřete soubor úlohy Cron pro root
uživatele.
sudo crontab -e
Přidejte následující řádek na konec souboru.
30 5 * * * /usr/bin/certbot renew --quiet
Výše uvedená úloha Cron bude probíhat každý den v 5:30. Pokud má platnost certifikátu vypršet, bude automaticky obnoven.
Upravte soubor virtuálního hostitele, který jsme dříve vytvořili pro Redmine.
sudo nano /etc/httpd/conf.d/redmine.conf
Upravte soubor virtuálního hostitele tak, aby vypadal takto.
<VirtualHost *:80>
Redirect permanent / https://www.example.com/
ServerName redmine.example.com
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName redmine.example.com
DocumentRoot "/home/redmine/redmine/public"
<Directory "/home/redmine/redmine/public">
Options None
Require all granted
</Directory>
PassengerAppEnv production
PassengerRoot /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12
PassengerRuby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
PassengerUser redmine
PassengerHighPerformance on
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/redmine.example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/redmine.example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/redmine.example.com/chain.pem
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
<IfModule headers_module>
Header always edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"
</IfModule>
</VirtualHost>
Uložte soubor a ukončete editor.
Restartujte Apache, aby se změny projevily.
sudo systemctl restart httpd
Nyní máte přístup Redmine během HTTPS
dne https://redmine.example.com
.
Gratulujeme, úspěšně jste nainstalovali Redmine do vaší instance CentOS 7. Začněte vyvíjet svůj projekt vytvořením nebo importem projektu.
Používáte jiný systém? Plesk je proprietární ovládací panel webového hostitele, který umožňuje uživatelům spravovat jejich osobní a/nebo klientské webové stránky, databáze
Squid je populární bezplatný linuxový program, který vám umožňuje vytvořit webový proxy pro předávání. V této příručce uvidíte, jak nainstalovat Squid na CentOS, aby vás otočil
Úvod Lighttpd je fork Apache, jehož cílem je být mnohem méně náročný na zdroje. Je lehký, odtud jeho název, a jeho použití je docela jednoduché. Installin
VULTR nedávno provedl změny na jejich konci a vše by nyní mělo fungovat dobře po vybalení s povoleným NetworkManagerem. Pokud si přejete deaktivovat
Icinga2 je výkonný monitorovací systém a při použití v modelu master-client může nahradit potřebu monitorovacích kontrol založených na NRPE. Hlavní klient
Používáte jiný systém? Apache Cassandra je bezplatný a otevřený systém pro správu databází NoSQL, který je navržen tak, aby poskytoval škálovatelnost, vysokou
Používáte jiný systém? Microweber je open source drag and drop CMS a online obchod. Zdrojový kód Microweber je hostován na GitHubu. Tento průvodce vám to ukáže
Používáte jiný systém? Vanilla forum je open source aplikace fóra napsaná v PHP. Je plně přizpůsobitelný, snadno použitelný a podporuje externí
Používáte jiný systém? Mattermost je open source alternativa k zasílání zpráv Slack SAAS s vlastním hostitelem. Jinými slovy, s Mattermostem můžete ca
Co budete potřebovat Vultr VPS s alespoň 1 GB RAM. Přístup SSH (s oprávněními root/administrátor). Krok 1: Instalace BungeeCord První věci
Ovládací panel Plesk se vyznačuje velmi pěknou integrací pro Lets Encrypt. Lets Encrypt je jedním z jediných poskytovatelů SSL, kteří rozdávají kompletní certifikáty
Lets Encrypt je certifikační autorita určená k bezplatnému poskytování certifikátů SSL. cPanel vytvořil úhlednou integraci, takže vy a váš klient
Používáte jiný systém? Concrete5 je open source CMS, který nabízí mnoho charakteristických a užitečných funkcí, které pomáhají editorům snadno vytvářet obsah
Používáte jiný systém? Review Board je bezplatný a open source nástroj pro kontrolu zdrojového kódu, dokumentace, obrázků a mnoha dalších. Je to webový software
V této příručce se dozvíte, jak nastavit HTTP ověřování pro webový server Nginx běžící na CentOS 7. Požadavky Chcete-li začít, budete potřebovat
YOURLS (Your Own URL Shortener) je open source aplikace pro zkracování adres URL a analýzu dat. V tomto článku se budeme zabývat procesem instalace
Používáte jiný systém? Úvod ArangoDB je open source databáze NoSQL s flexibilním datovým modelem pro dokumenty, grafy a páry klíč–hodnota. to je
Úvod Adresář /etc/ hraje kritickou roli ve způsobu fungování systému Linux. Důvodem je skutečnost, že téměř každá konfigurace systému
Mnoho systémových administrátorů spravuje velké množství serverů. Když je potřeba přistupovat k souborům přes různé servery, přihlaste se ke každému zvlášť ca
Tento návod pokryje proces instalace herního serveru Half Life 2 na systém CentOS 6. Krok 1: Instalace předpokladů Aby bylo možné nastavit ou
Umělá inteligence není v budoucnosti, je zde přímo v současnosti V tomto blogu si přečtěte, jak aplikace umělé inteligence ovlivnily různé sektory.
Jste také obětí DDOS útoků a nemáte jasno v metodách prevence? Chcete-li vyřešit své dotazy, přečtěte si tento článek.
Možná jste slyšeli, že hackeři vydělávají spoustu peněz, ale napadlo vás někdy, jak takové peníze vydělávají? Pojďme diskutovat.
Chcete vidět revoluční vynálezy Google a jak tyto vynálezy změnily život každého dnešního člověka? Pak si přečtěte na blogu a podívejte se na vynálezy od Googlu.
Koncept aut s vlastním pohonem, která vyrazí na silnice s pomocí umělé inteligence, je snem, který už nějakou dobu máme. Ale přes několik slibů nejsou nikde vidět. Přečtěte si tento blog a dozvíte se více…
Jak se věda vyvíjí rychlým tempem a přebírá mnoho našeho úsilí, stoupá také riziko, že se vystavíme nevysvětlitelné singularitě. Přečtěte si, co pro nás může znamenat singularita.
Způsoby ukládání dat se mohou vyvíjet od narození dat. Tento blog se zabývá vývojem ukládání dat na základě infografiky.
Přečtěte si blog, abyste co nejjednodušším způsobem poznali různé vrstvy v architektuře velkých dat a jejich funkce.
V tomto digitálním světě se chytrá domácí zařízení stala klíčovou součástí života. Zde je několik úžasných výhod chytrých domácích zařízení o tom, jak náš život stojí za to žít a zjednodušit jej.
Apple nedávno vydal doplňkovou aktualizaci macOS Catalina 10.15.4, která opravuje problémy, ale zdá se, že aktualizace způsobuje další problémy, které vedou k zablokování počítačů mac. Přečtěte si tento článek a dozvíte se více