Asenna Plesk CentOS 7:ään
Käytätkö erilaista järjestelmää? Plesk on patentoitu verkkoisäntäohjauspaneeli, jonka avulla käyttäjät voivat hallita henkilökohtaisia ja/tai asiakkaidensa verkkosivustoja, tietokantoja
Redmine on ilmainen ja avoimen lähdekoodin web-pohjainen projektinhallintatyökalu. Se on kirjoitettu Ruby on Rails -kielellä ja tukee useita tietokantapalvelimia tietokannan tallentamiseen. Se on monipuolinen sovellus, joka tukee useita projekteja, roolipohjaista ACL:ää ja ongelmanseurantajärjestelmää. Siinä on myös Gantt-kaavio- ja kalenterituki, tiedostojen hallinta projektikohtaisesti wiki- ja foorumikohtaisesti sekä monia muita ominaisuuksia. Se tukee versionhallintajärjestelmiä, kuten Git, SVN tai CVS. Se on myös monikielinen ja tukee jopa 49 kieltä.
Tässä opetusohjelmassa käytämme 192.168.1.1
julkisena IP-osoitteena ja redmine.example.com
Vultr-instanssiin osoittavana toimialueen nimenä. Muista korvata kaikki esimerkin verkkotunnuksen nimen ja IP-osoitteen esiintymät todellisella.
Päivitä perusjärjestelmäsi Ubuntu 16.04:n päivittäminen -oppaan avulla . Kun järjestelmäsi on päivitetty, jatka riippuvuuksien asentamista.
Redmine on kirjoitettu Ruby on Rails -kielellä, joten vaadimme Phusion Passengerin integroituvan Apache-verkkopalvelimeen palvelemaan sovellusta.
Asenna Apache.
sudo apt -y install apache2 apache2-dev libcurl4-openssl-dev
Rubyn ja Passengerin rakentamiseen tarvitsemme myös joitain kehitystyökaluja. Asenna tarvittavat työkalut.
sudo apt -y install imagemagick libmagickwand-dev git build-essential automake libgmp-dev
Redmine tukee useita tietokantapalvelimia, kuten MySQL, PostgreSQL ja MSSQL. Tässä opetusohjelmassa käytämme Redmine-tietokantapalvelimen isännöimiseen PostgreSQL:ää.
PostgreSQL on oliorelaatiotietokantajärjestelmä. Ubuntun oletusarkisto sisältää vanhan PostgreSQL-version, joten lisää PostgreSQL-arkisto järjestelmään.
echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
Asenna PostgreSQL-tietokantapalvelin.
sudo apt -y install postgresql
Käynnistä PostgreSQL-palvelin ja ota se käyttöön automaattisesti käynnistyksen yhteydessä.
sudo systemctl start postgresql
sudo systemctl enable postgresql
Vaihda PostgreSQL-oletuskäyttäjän salasana.
sudo passwd postgres
Kirjaudu sisään PostgreSQL-käyttäjänä.
sudo su - postgres
Luo uusi PostgreSQL-käyttäjä Redminelle.
createuser redmine
Voit käyttää mitä tahansa käyttäjätunnusta redmine
. PostgreSQL tarjoaa psql
komentotulkin kyselyjen suorittamiseen tietokannassa. Vaihda PostgreSQL-kuoreen.
psql
Aseta salasana Redmine-tietokannan äskettäin luodulle käyttäjälle.
ALTER USER redmine WITH ENCRYPTED password 'DBPassword';
Vaihda DBPassword
suojatulla salasanalla. Luo uusi tietokanta Redmine-asennusta varten.
CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
Poistu psql
kuoresta.
\q
Vaihda sudo
käyttäjäksi.
exit
Asenna vielä muutama vaadittava PostgreSQL-riippuvuus.
sudo apt -y install libpqxx-dev protobuf-compiler
Asennamme Rubyn uusimman version RVM:n avulla. Sitä käytetään useiden Ruby-versioiden asentamiseen ja hallintaan.
Lisää RVM-arkisto.
sudo apt-add-repository -y ppa:rael-gc/rvm
sudo apt update
Asenna RVM.
sudo apt -y install rvm
Koska meidän on asennettava Ruby-järjestelmän laajuinen, siirrymme väliaikaisesti pääkäyttäjään.
sudo -i
Päivitä ympäristömuuttujat.
echo "source /etc/profile.d/rvm.sh" | tee -a /etc/profile
source /etc/profile.d/rvm.sh
Asenna Rubyn uusin versio.
rvm install 2.5.1
Huomautus: Jos käytät toista Rubyn versiota, muista päivittää Ruby-polku vastaavasti.
Käytä Rubyn asennettua versiota.
rvm use 2.5.1 --default
Voit tarkistaa sen version.
ruby -v
Näet samanlaisen tulosteen.
root@vultr:~# ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
Asenna bundler
, joka on Ruby-sovelluksen riippuvuushallinta.
gem install bundler
Ruby on nyt asennettu. Ennen kuin asennamme Redmine, meidän on asennettava Phusion Passenger.
Suorita seuraava komento asentaaksesi Passenger.
gem install passenger
Asenna Apache-moduuli matkustajalle.
passenger-install-apache2-module
Asennusohjelma kysyy sinulta joitain kysymyksiä. Ensinnäkin se antaa sinulle tietoja asennusprosessista. Sitten se pyytää sinua valitsemaan kielen, jota käytät. Koska sovelluksemme on kirjoitettu Ruby on Rails -kielellä, valitse Ruby valikosta ja paina ENTERjatkaaksesi eteenpäin.
Which languages are you interested in?
Use <space> to select.
If the menu doesn't display correctly, press '!'
‣ ⬢ Ruby
⬢ Python
⬡ Node.js
⬡ Meteor
Asennusohjelma tarkistaa nyt vaatimukset. Asennusohjelma ei kohtaa puuttuvia riippuvuuksia ja jatkaa automaattisesti moduulin kääntämistä ja asentamista.
Kun moduuli on asennettu, se kehottaa lisäämään moduulin Apache-määritystiedostoon.
Almost there!
Please edit your Apache configuration file, and add these lines:
LoadModule passenger_module /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.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. 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/apache2/apache2.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. Switch to the sudo
user again since we do not need to run any more commands using root
user.
exit
It is recommended to use an unprivileged user to run the application to keep it isolated from rest of the system. Create a new user for Redmine and switch to the newly created user.
sudo adduser --disabled-password --gecos "Redmine User" redmine
sudo su - 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 the 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/bin/pg_config
Install the dependencies required by the application.
bundle install --path vendor/bundle --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.
Bundled gems are installed into `./vendor/bundle`
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.
Installation of the Redmine application is now finished. Change ownership and permissions of the directories and files.
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
We have configured everything we need from the non-privileged user. Switch back to the sudo
user by running su - <username>
.
Add the Passenger module for Apache into the Apache configuration file. This will automatically load the Passenger module.
echo "LoadModule passenger_module /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/buildout/apache2/mod_passenger.so" | sudo tee -a /etc/apache2/apache2.conf
Huomautus: Matkustaja-moduulin polku voi muuttua, kun Passenger-versio julkaistaan. Käytä sudo find / -name mod_passenger.so
komentoa löytääksesi polun moduuliin .
Luo uusi virtuaalinen isäntätiedosto Redmine-sovelluksellesi.
sudo nano /etc/apache2/sites-available/redmine.conf
Täytä tiedosto seuraavalla sisällöllä.
<VirtualHost *:80>
ServerName redmine.example.com
DocumentRoot /home/redmine/redmine/public
PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
PassengerUser redmine
<Directory /home/redmine/redmine/public>
Allow from all
Options -MultiViews
Require all granted
</Directory>
</VirtualHost>
Muista korvata se redmine.example.com
todellisella verkkotunnuksellasi. Varmista myös, että polku PassengerRoot
ja PassengerDefaultRuby
-merkkiin ovat oikein. Polku binääriin voi muuttua, kun Ruby tai Passenger julkaistaan. Löydä nämä polut suorittamalla seuraava komento.
passenger-config about ruby-command
Saat seuraavan tulosteen.
user@vultr:~$ passenger-config about ruby-command
passenger-config was invoked through the following Ruby interpreter:
Command: /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
Version: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
To use in Apache: PassengerRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
To use in Nginx : passenger_ruby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
To use with Standalone: /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/bin/passenger start
## Notes for RVM users
Do you want to know which command to use for a different Ruby interpreter? 'rvm use' that Ruby interpreter, then re-run 'passenger-config about ruby-command'.
Kun virtuaalinen isäntätiedosto on luotu. Aktivoi kokoonpano.
sudo a2ensite redmine
Käynnistä Apache-verkkopalvelin uudelleen.
sudo systemctl restart apache2
Voit nyt käyttää Redmine-käyttöliittymääsi osoitteessa http://redmine.example.com
. Kirjaudu sisään käyttäjätunnuksella admin
ja salasanalla admin
. Ensimmäisellä kirjautumisellasi Redmine kehottaa sinua päivittämään salasanan.
Koska Redmine-asennuksemme on julkiselle palvelimelle, on suositeltavaa käyttää SSL-salausta tietojen vaihdon turvaamiseksi palvelimelta.
Lisää Certbot-arkisto.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Asenna Certbot, joka on Let's Encrypt CA:n asiakassovellus.
sudo apt -y install certbot
Huomautus: Jotta Let's Encrypt CA:lta saadaan varmenteita, toimialue, jolle sertifikaatit luodaan, on osoitettava palvelimeen. Jos ei, tee tarvittavat muutokset toimialueen DNS-tietueisiin ja odota DNS:n leviämistä ennen kuin teet varmennepyynnön uudelleen. Certbot tarkistaa toimialueen viranomaisen ennen varmenteiden toimittamista.
Luo SSL-varmenteet.
sudo certbot certonly --webroot -w /home/redmine/redmine/public -d redmine.example.com
Luodut varmenteet tallennetaan todennäköisesti kansioon /etc/letsencrypt/live/redmine.example.com/
. SSL-varmenne tallennetaan nimellä cert.pem
ja yksityinen avain muodossa privkey.pem
.
Let's Encrypt -sertifikaatit vanhenevat 90 päivässä, joten on suositeltavaa määrittää varmenteiden automaattinen uusiminen Cron-töiden avulla.
Avaa Cron-työtiedosto root
käyttäjälle.
sudo crontab -e
Lisää seuraava rivi tiedoston loppuun.
30 5 * * * /usr/bin/certbot renew --quiet
Yllä oleva Cron-työ suoritetaan joka päivä klo 5.30. Jos varmenteen voimassaolo päättyy, se uusitaan automaattisesti.
Ota SSL-moduuli käyttöön Apachelle.
sudo a2enmod ssl
Muokkaa virtuaalista isäntätiedostoa, jonka loimme aiemmin Redminelle.
sudo nano /etc/apache2/sites-available/redmine.conf
Muokkaa Virtual host -tiedostoa seuraavan kaltaiseksi.
<VirtualHost *:80>
ServerName redmine.example.com
Redirect permanent / https://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 /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.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>
Tallenna tiedosto ja poistu editorista.
Käynnistä Apache uudelleen, jotta muutokset tulevat voimaan.
sudo systemctl restart apache2
Voit nyt käyttää Redminea HTTPS
osoitteessa https://redmine.example.com
.
Onnittelut, Redmine on asennettu onnistuneesti Ubuntu 16.04 -esiintymääsi. Aloita projektisi kehittäminen joko luomalla tai tuomalla projektisi.
Käytätkö erilaista järjestelmää? Plesk on patentoitu verkkoisäntäohjauspaneeli, jonka avulla käyttäjät voivat hallita henkilökohtaisia ja/tai asiakkaidensa verkkosivustoja, tietokantoja
Johdanto Cacti on avoimen lähdekoodin seuranta- ja grafiikkatyökalu, joka perustuu täysin RRD-tietoihin. Cactin kautta voit seurata lähes minkä tahansa tyyppisiä laitteita
Johdanto Lets Encrypt on varmenteen myöntäjäpalvelu, joka tarjoaa ilmaisia TLS/SSL-varmenteita. Certbot yksinkertaistaa asennusprosessia,
Käytätkö erilaista järjestelmää? Mikä on Tekkit Classic? Tekkit Classic on modack peliin, jonka kaikki tuntevat ja rakastavat; Minecraft. Se sisältää joitain ver
Käytätkö erilaista järjestelmää? Tämä opetusohjelma näyttää kuinka asennat ryhmätyöohjelman iRedMail uuteen Debian Wheezy -asennukseen. Sinun pitäisi käyttää tarjoilua
Käytätkö erilaista järjestelmää? Jekyll on loistava vaihtoehto WordPressille bloggaamiseen tai sisällön jakamiseen. Se ei vaadi tietokantoja ja se on erittäin helppoa i
Käytätkö erilaista järjestelmää? Jos ostat Debian-palvelimen, sinulla pitäisi aina olla viimeisimmät tietoturvakorjaukset ja -päivitykset riippumatta siitä, oletko nukkumassa vai ei.
PHP ja siihen liittyvät paketit ovat yleisimmin käytettyjä komponentteja verkkopalvelimen käyttöönotossa. Tässä artikkelissa opimme asentamaan PHP 7.0 tai PHP 7.1 o
Squid on suosittu, ilmainen Linux-ohjelma, jonka avulla voit luoda edelleenlähetysverkkovälityspalvelimen. Tässä oppaassa näet, kuinka Squid asennetaan CentOS:ään kääntääksesi sinut
Johdanto Lighttpd on Apachen haarukka, jonka tarkoituksena on olla paljon vähemmän resurssiintensiivinen. Se on kevyt, tästä syystä sen nimi, ja on melko yksinkertainen käyttää. Asenna
1. Virtualmin/Webmin Virtualmin on tehokas ja joustava web-hosting-ohjauspaneeli Linux- ja UNIX-järjestelmille, joka perustuu tunnettuun avoimen lähdekoodin verkkotietokantaan
Yii on PHP-kehys, jonka avulla voit kehittää sovelluksia nopeammin ja helpommin. Yiin asentaminen Ubuntuun on yksinkertaista, kuten opit tarkalleen
Screen on sovellus, joka mahdollistaa usean pääteistuntojen käytön yhdessä ikkunassa. Tämän avulla voit simuloida useita pääteikkunoita, joissa se ma
Tämä opetusohjelma selittää, kuinka DNS-palvelin määritetään Bind9:n avulla Debianissa tai Ubuntussa. Korvaa koko artikkelin ajan verkkotunnuksesi-nimi.com vastaavasti. klo th
Johdanto Logrotate on Linux-apuohjelma, joka yksinkertaistaa lokitiedostojen hallintaa. Se toimii yleensä kerran päivässä cron-työn kautta ja hallitsee lokipohjaa
VULTR on äskettäin tehnyt muutoksia heidän omiinsa, ja kaiken pitäisi nyt toimia hyvin heti, kun NetworkManager on käytössä. Jos haluat poistaa käytöstä
Icinga2 on tehokas valvontajärjestelmä, ja master-client-mallissa käytettynä se voi korvata NRPE-pohjaisten valvontatarkastusten tarpeen. Pääasiakas
Käytätkö erilaista järjestelmää? Red5 on Java-kielellä toteutettu avoimen lähdekoodin mediapalvelin, jonka avulla voit ajaa Flash-monikäyttäjäsovelluksia, kuten suoratoistoa.
Tässä artikkelissa näemme, kuinka Nginx-päälinja voidaan kääntää ja asentaa virallisista Nginx-lähteistä PageSpeed-moduulilla, jonka avulla voit
Käytätkö erilaista järjestelmää? Apache Cassandra on ilmainen ja avoimen lähdekoodin NoSQL-tietokannan hallintajärjestelmä, joka on suunniteltu tarjoamaan skaalautuvuutta, hig.
Tekoäly ei ole tulevaisuudessa, se tässä nykyisyydessä Tässä blogissa Lue kuinka tekoälysovellukset ovat vaikuttaneet eri sektoreihin.
Oletko myös DDOS-hyökkäysten uhri ja hämmentynyt ehkäisymenetelmistä? Lue tämä artikkeli ratkaistaksesi kysymyksesi.
Olet ehkä kuullut, että hakkerit ansaitsevat paljon rahaa, mutta oletko koskaan miettinyt, kuinka he ansaitsevat tuollaista rahaa? keskustellaan.
Haluatko nähdä Googlen vallankumouksellisia keksintöjä ja kuinka nämä keksinnöt muuttivat jokaisen ihmisen elämää nykyään? Lue sitten blogia nähdäksesi Googlen keksinnöt.
Konsepti itseohjautuvista autoista lähteä tielle tekoälyn avulla on ollut haaveena jo jonkin aikaa. Mutta useista lupauksista huolimatta niitä ei näy missään. Lue tämä blogi saadaksesi lisätietoja…
Kun tiede kehittyy nopeasti ja ottaa haltuunsa suuren osan ponnisteluistamme, myös riskit altistaa itsemme selittämättömälle singulariteetille kasvavat. Lue, mitä singulaarisuus voisi tarkoittaa meille.
Tietojen säilytystavat ovat kehittyneet mahdollisesti Datan syntymästä lähtien. Tämä blogi käsittelee tiedon tallennuksen kehitystä infografian pohjalta.
Blogista saat tietää Big Data -arkkitehtuurin eri kerroksista ja niiden toiminnoista yksinkertaisimmalla tavalla.
Tässä digitaalisessa maailmassa kodin älylaitteista on tullut tärkeä osa elämää. Tässä on muutamia älykkäiden kodin laitteiden hämmästyttäviä etuja, joiden avulla ne tekevät elämästämme elämisen arvoista ja yksinkertaisempaa.
Apple julkaisi äskettäin macOS Catalina 10.15.4 -lisäpäivityksen ongelmien korjaamiseksi, mutta näyttää siltä, että päivitys aiheuttaa lisää ongelmia, jotka johtavat mac-koneiden tiilikaamiseen. Lue tämä artikkeli saadaksesi lisätietoja