Settu upp Plesk á CentOS 7
Að nota annað kerfi? Plesk er sérstakt stjórnborð fyrir vefþjón sem gerir notendum kleift að stjórna persónulegum og/eða viðskiptavinum vefsíðum sínum, gagnagrunnum
Stöðug samþætting er DevOps hugbúnaðarþróunaraðferð sem gerir forriturum kleift að sameina breytta kóðann oft í sameiginlegu geymsluna oft á dag. Eftir hverja sameiningu eru sjálfvirkar smíðir og prófanir gerðar til að greina vandamál í kóðanum. Það gerir hönnuðum kleift að finna og leysa villurnar fljótt til að bæta hugbúnaðargæði og veita stöðuga afhendingu hugbúnaðarins. Það er mjög auðvelt að skipta til og frá Concourse þar sem það geymir allar stillingar sínar í yfirlýsingarskrám sem hægt er að athuga í útgáfustýringu. Það býður einnig upp á netnotendaviðmót sem sýnir byggingarupplýsingarnar gagnvirkt.
Vertu viss um að skipta um öll tilvik af 192.0.2.1
og ci.example.com
með raunverulegu Vultr opinberu IP-tölu þinni og raunverulegu lén.
Uppfærðu grunnkerfið þitt með því að nota handbókina Hvernig á að uppfæra CentOS 7 . Þegar kerfið þitt hefur verið uppfært skaltu halda áfram að setja upp PostgreSQL.
PostgreSQL er hluttengslagagnagrunnskerfi. Concourse geymir leiðslugögn sín í PostgreSQL gagnagrunni. Bættu við PostgreSQL geymslunni.
sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
Settu upp PostgreSQL gagnagrunnsþjóninn.
sudo yum -y install postgresql96-server postgresql96-contrib
Frumstilla gagnagrunninn.
sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
initdb
býr til nýjan PostgreSQL gagnagrunnsklasa, sem er safn gagnagrunna sem er stjórnað af einu netþjónstilviki. Breyttu pg_hba.conf
skránni til að virkja MD5 byggða auðkenningu.
sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf
Finndu eftirfarandi línur og breyttu gildunum peer
og ident
í METHOD
dálkinum í trust
og md5
, í sömu röð.
# 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
Þegar uppfærsla hefur verið uppfærð ætti uppsetningin að líta svona út.
# 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
Ræstu PostgreSQL þjóninn og gerðu það kleift að ræsast sjálfkrafa við ræsingu.
sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6
Breyttu lykilorðinu fyrir sjálfgefinn PostgreSQL notanda.
sudo passwd postgres
Skráðu þig inn sem PostgreSQL notandi:
sudo su - postgres
Búðu til nýjan PostgreSQL notanda fyrir Concourse CI.
createuser concourse
Athugið : Hægt er að nota sjálfgefinn PostgreSQL notanda fyrir auðkenningu á gagnagrunninum, en mælt er með því að nota sérstakan notanda fyrir auðkenningu á Concourse gagnagrunni í framleiðsluuppsetningu.
PostgreSQL býður upp á skel til að keyra fyrirspurnir í gagnagrunninum. Skiptu yfir í PostgreSQL skelina með því að keyra:
psql
Stilltu lykilorð fyrir nýstofnaðan Concourse gagnagrunnsnotanda.
ALTER USER concourse WITH ENCRYPTED password 'DBPassword';
Mikilvægt : Skiptu út DBPassword
fyrir sterkt lykilorð. Skráðu lykilorðið þar sem það verður krafist síðar í kennslunni.
Búðu til nýjan gagnagrunn fyrir Concourse.
CREATE DATABASE concourse OWNER concourse;
Farðu úr psql
skelinni.
\q
Skiptu yfir í sudo notanda frá núverandi postgres notanda.
exit
Sæktu nýjustu útgáfuna af Concourse executable og geymdu hana /usr/bin
svo að hægt sé að keyra hana beint. Nýjustu útgáfuna af Concourse and Fly binaries er að finna á Concourse niðurhalssíðunni . Nýjar útgáfur eru mjög tíðar. Skiptu út hlekknum hér að neðan fyrir nýja hlekkinn fyrir nýjustu útgáfuna.
sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/concourse_linux_amd64 -O /usr/bin/concourse
Á sama hátt skaltu hlaða niður nýjustu útgáfunni af flugu keyrslunni og geyma hana í /usr/bin
.
sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/fly_linux_amd64 -O /usr/bin/fly
Fly er skipanalínuviðmótið til að tengjast ATC API Concourse CI. Fly er fáanlegt fyrir marga palla eins og Linux, Windows og MacOS.
Úthlutaðu framkvæmdarheimild til niðurhalaðra concourse
og fly
tvöfalda.
sudo chmod +x /usr/bin/concourse /usr/bin/fly
Athugaðu hvort Concourse og Fly virka rétt með því að athuga útgáfu þeirra.
concourse -version
fly -version
RSA lykilpör bjóða upp á leið til að dulkóða samskipti milli íhluta Concourse.
Til að Concourse virki þarf að búa til að minnsta kosti þrjú pör af lyklum. Til að dulkóða lotugögnin skaltu búa til session_signing_key
. Þessi lykill verður einnig notaður af TSA til að undirrita beiðnir sem það gerir til ATC. Til að tryggja TSA SSH netþjóninn skaltu búa til tsa_host_key
. Að lokum skaltu búa til a worker_key
fyrir hvern starfsmann.
Búðu til nýja möppu til að geyma lykla og stillingar sem tengjast Concourse CI.
sudo mkdir /opt/concourse
Búðu til nauðsynlega lykla.
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/session_signing_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/tsa_host_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/worker_key
Leyfðu opinbera lykil starfsmanna með því að afrita innihald hans í authorized_worker_keys
skrána:
sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys
Concourse býður upp á tvo aðskilda þætti sem þarf að ræsa, vefinn og starfsmanninn. Byrjaðu Concourse vefinn.
sudo concourse web \
--basic-auth-username admin \
--basic-auth-password StrongPass \
--session-signing-key /opt/concourse/session_signing_key \
--tsa-host-key /opt/concourse/tsa_host_key \
--tsa-authorized-keys /opt/concourse/authorized_worker_keys \
--postgres-user=concourse \
--postgres-password=DBPassword \
--postgres-database=concourse \
--external-url http://192.0.2.1:8080
Breyttu notendanafni og lykilorði basic-auth
ef þess er óskað. Gakktu úr skugga um að slóðin að lykilskránum sé rétt og vertu viss um að rétt gildi fyrir notandanafn og lykilorð í PostgreSQL gagnagrunnsstillingunni sé gefið upp.
Athugið : ATC mun hlusta á sjálfgefna höfnina 8080
og TSA mun hlusta á höfnina 2222
. Ef auðkenning er ekki óskað skaltu fara yfir --no-really-i-dont-want-any-auth
valmöguleikann eftir að hafa fjarlægt helstu auðkenningarvalkosti.
Once the web server is started, the following output should be displayed.
{"timestamp":"1503657859.661247969","source":"tsa","message":"tsa.listening","log_level":1,"data":{}}
{"timestamp":"1503657859.666907549","source":"atc","message":"atc.listening","log_level":1,"data":{"debug":"127.0.0.1:8079","http":"0.0.0.0:8080"}}
Stop the server for now, as a few more things still must be setup.
Start the Concourse CI Worker.
sudo concourse worker \
--work-dir /opt/concourse/worker \
--tsa-host 127.0.0.1 \
--tsa-public-key /opt/concourse/tsa_host_key.pub \
--tsa-worker-private-key /opt/concourse/worker_key
The above command will assume that the TSA is running on localhost and listening to the default port 2222
.
Though the Concourse web and worker can be started easily using the commands above, it is recommended to use Systemd to manage the server.
Using Systemd service for managing the application ensures that the application is automatically started on failures and at boot time. The Concourse server does not take data from any configuration file, but it can access the data from environment variables. Instead of setting global environment variables, create a new file to store the environment variables and then pass the variables to the Concourse CI using the Systemd service.
Create a new environment file for Concourse web.
sudo nano /opt/concourse/web.env
Populate the file.
CONCOURSE_SESSION_SIGNING_KEY=/opt/concourse/session_signing_key
CONCOURSE_TSA_HOST_KEY=/opt/concourse/tsa_host_key
CONCOURSE_TSA_AUTHORIZED_KEYS=/opt/concourse/authorized_worker_keys
CONCOURSE_POSTGRES_USER=concourse
CONCOURSE_POSTGRES_PASSWORD=DBPassword
CONCOURSE_POSTGRES_DATABASE=concourse
CONCOURSE_BASIC_AUTH_USERNAME=admin
CONCOURSE_BASIC_AUTH_PASSWORD=StrongPass
CONCOURSE_EXTERNAL_URL=http://192.0.2.1:8080
Change the username and password of the BASIC_AUTH
if desired. Make sure that the path to the key files are correct and make sure that the correct value for username and password in the PostgreSQL database configuration is provided.
Similarly, create an environment file for the worker.
sudo nano /opt/concourse/worker.env
Populate the file.
CONCOURSE_WORK_DIR=/opt/concourse/worker
CONCOURSE_TSA_WORKER_PRIVATE_KEY=/opt/concourse/worker_key
CONCOURSE_TSA_PUBLIC_KEY=/opt/concourse/tsa_host_key.pub
CONCOURSE_TSA_HOST=127.0.0.1
As the environment files contain username and passwords, change its permissions so that it cannot be accessed by other users.
sudo chmod 600 /opt/concourse/*.env
Now create a new user for Concourse to run the web environment. This will ensure that the web server is running in an isolated environment.
sudo adduser --system concourse
Give the concourse user ownership over Concourse CI file's directory.
sudo chown -R concourse:concourse /opt/concourse
Create a new systemd service file for the Concourse web service.
sudo nano /etc/systemd/system/concourse-web.service
Populate the file.
[Unit]
Description=Concourse CI web server
After=postgresql-9.6.service
[Service]
Type=simple
User=concourse
Group=concourse
Restart=on-failure
EnvironmentFile=/opt/concourse/web.env
ExecStart=/usr/bin/concourse web
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_web
[Install]
WantedBy=multi-user.target
Save and close the file. Create a new service file for the Concourse worker service.
sudo nano /etc/systemd/system/concourse-worker.service
Populate the file.
[Unit]
Description=Concourse CI worker process
After=concourse-web.service
[Service]
Type=simple
User=root
Group=root
Restart=on-failure
EnvironmentFile=/opt/concourse/worker.env
ExecStart=/usr/bin/concourse worker
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_worker
[Install]
WantedBy=multi-user.target
The web and worker service can now be started directly by running:
sudo systemctl start concourse-web concourse-worker
To enable the worker and web process to automatically start at boot time, run:
sudo systemctl enable concourse-worker concourse-web
To check the status of services, run:
sudo systemctl status concourse-worker concourse-web
If the service is not started, or in the FAILED
state, remove the cache from the /tmp
directory.
sudo rm -rf /tmp/*
Restart the services.
sudo systemctl restart concourse-worker concourse-web
Notice that this time the services have started correctly. The output upon verifying the status of the services should be simil.
[user@vultr ~]$ sudo systemctl status concourse-worker concourse-web
● concourse-worker.service - Concourse CI worker process
Loaded: loaded (/etc/systemd/system/concourse-worker.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3037 (concourse)
CGroup: /system.slice/concourse-worker.service
└─3037 /usr/bin/concourse worker
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.934722900","source":"tsa","message":"t...""}}
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.941227913","source":"guardian","messag...0"}}
...
● concourse-web.service - Concourse CI web server
Loaded: loaded (/etc/systemd/system/concourse-web.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3036 (concourse)
CGroup: /system.slice/concourse-web.service
└─3036 /usr/bin/concourse web
Aug 26 07:27:57 vultr.guest concourse_web[3036]: {"timestamp":"1503732477.925554752","source":"tsa","message":"tsa...ve"}}
Aug 26 07:28:02 vultr.guest concourse_web[3036]: {"timestamp":"1503732482.925430775","source":"tsa","message":"tsa...ve"}}
...
Hint: Some lines were ellipsized, use -l to show in full.
Adjust your firewall to allow port 8080, on which ATS is running and port 2222, on which TSA is running.
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent
sudo firewall-cmd --reload
Once the server is started, the web interface of the Concourse CI can be accessed by going to http://192.0.2.1:8080
in any browser. Log in using the username and password provided in the environment file.
To connect to the server using Fly, run:
fly -t my-ci login -c http://192.0.2.1:8080
The above command is used for initial login to the server. -t
is used to provide a target name. replace my-ci
with any desired target name. The above command will log in to the default team main
. It will ask for the username and password provided in the environment file.
The output will look like the following.
[user@vultr ~]$ fly -t my-ci login -c http://192.0.2.1:8080
logging in to team 'main'
username: admin
password:
target saved
The target login will be saved for a day. After that, it will expire.
To log out immediately.
fly -t my-ci logout
fly can be used to login to the server outside of the network, but only if the server has a public IP address and it is accessible from outside the network. The Windows or MacOS binary can be downloaded from the download site or from the web UI of the server.
Logins, and other information sent through the web UI to the Concourse server is not secured. The connection is not encrypted. An Nginx reverse proxy can be set up with a Let's Encrypt free SSL.
Install the Nginx web server and Certbot, which is the client application for the Let's Encrypt CA.
sudo yum -y install certbot-nginx nginx
Start and enable Nginx to automatically start at boot time:
sudo systemctl start nginx
sudo systemctl enable nginx
Áður en hægt er að biðja um skírteinin verður að virkja gátt 80 og 443, eða staðlaða HTTP og HTTPS þjónustu, í gegnum eldvegginn. Certbot mun athuga lénsvaldið áður en það gefur út vottorð.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
Gátt 8080 þarf ekki lengur að vera leyft í gegnum eldvegginn lengur vegna þess að Concourse verður nú keyrt á venjulegu HTTPS tenginu. Fjarlægðu eldveggsfærsluna til að leyfa tengi 8080.
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload
Athugið
To obtain certificates from Let's Encrypt CA, the domain for which the certificates are to be generated must be pointed towards the server. If not, make the necessary changes to the DNS records of the domain and wait for the DNS to propagate before making the certificate request again. Certbot checks the domain authority before providing the certificates.
Búðu til SSL vottorðin.
sudo certbot certonly --webroot -w /usr/share/nginx/html -d ci.example.com
Líklegt er að útbúin vottorð séu geymd í /etc/letsencrypt/live/ci.example.com/
skránni. SSL vottorðið verður geymt sem fullchain.pem
og einkalykillinn verður geymdur sem privkey.pem
.
Við skulum dulkóða vottorð renna út eftir 90 daga, svo það er mælt með sjálfvirkri endurnýjun þar sem skírteinin eru sett upp með cronjobs. Cron er kerfisþjónusta sem er notuð til að keyra reglubundin verkefni.
Opnaðu cron vinnuskrána.
sudo crontab -e
Bættu við eftirfarandi línu í lok skráarinnar.
30 5 * * 1 /usr/bin/certbot renew --quiet
Ofangreint cron starf mun standa yfir alla mánudaga klukkan 5:30. Ef skírteinið á að renna út verður það sjálfkrafa endurnýjað.
Búðu til nýjan sýndargestgjafa.
sudo nano /etc/nginx/conf.d/concourse-ssl.conf
Fylltu út skrána.
server {
listen 80;
server_name ci.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name ci.example.com;
ssl_certificate /etc/letsencrypt/live/ci.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ci.example.com/privkey.pem;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/concourse.access.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:8080;
proxy_read_timeout 90;
proxy_redirect http://localhost:8080 https://ci.example.com;
}
}
Athugið : Skiptu út ci.example.com
fyrir raunverulegt lén.
Breyttu Umhverfisskránni sem búin var til fyrir Concourse Web.
sudo nano /opt/concourse/web.env
Breyttu gildinu á CONCOURSE_EXTERNAL_URL
og bættu einnig við tveimur línum í lok skráarinnar.
CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080
Vistaðu skrána og endurræstu Concourse Web, Worker og Nginx vefþjóninn:
sudo systemctl restart concourse-worker concourse-web nginx
Öll gögn sem send eru til og frá vafranum eru nú tryggð með SSL dulkóðun.
Að nota annað kerfi? Plesk er sérstakt stjórnborð fyrir vefþjón sem gerir notendum kleift að stjórna persónulegum og/eða viðskiptavinum vefsíðum sínum, gagnagrunnum
Smokkfiskur er vinsælt, ókeypis Linux forrit sem gerir þér kleift að búa til framsendingarforrit á vefnum. Í þessari handbók muntu sjá hvernig á að setja upp Squid á CentOS til að snúa þér
Inngangur Lighttpd er gaffal af Apache sem miðar að því að vera miklu minna auðlindafrekt. Hann er léttur, þess vegna heitir hann, og er frekar einfaldur í notkun. Uppsetning
VULTR hefur nýlega gert breytingar á enda þeirra og allt ætti nú að virka vel út úr kassanum með NetworkManager virkt. Ef þú vilt slökkva á
Icinga2 er öflugt eftirlitskerfi og þegar það er notað í aðal-viðskiptavinamódel getur það komið í stað þörf fyrir NRPE-undirstaða vöktunareftirlit. Húsbóndinn
Að nota annað kerfi? Apache Cassandra er ókeypis og opinn uppspretta NoSQL gagnagrunnsstjórnunarkerfi sem er hannað til að veita sveigjanleika, háan
Að nota annað kerfi? Microweber er opinn uppspretta draga og sleppa CMS og netverslun. Microweber frumkóði er hýst á GitHub. Þessi handbók mun sýna þér
Að nota annað kerfi? Mattermost er opinn uppspretta, sjálfhýst valkostur við Slack SAAS skilaboðaþjónustuna. Með öðrum orðum, með Mattermost, þú ca
Það sem þú þarft Vultr VPS með að minnsta kosti 1GB af vinnsluminni. SSH aðgangur (með rót / stjórnunarréttindi). Skref 1: Uppsetning BungeeCord Fyrst af öllu
Plesk stjórnborðið er með mjög fallegri samþættingu fyrir Lets Encrypt. Lets Encrypt er ein af einu SSL veitunum sem gefa út skírteini að fullu
Lets Encrypt er vottunaryfirvöld sem sérhæfir sig í að útvega SSL vottorð án endurgjalds. cPanel hefur byggt upp snyrtilega samþættingu svo þú og viðskiptavinurinn þinn
Að nota annað kerfi? Concrete5 er opinn uppspretta CMS sem býður upp á marga áberandi og gagnlega eiginleika til að aðstoða ritstjóra við að framleiða efni auðveldlega og
Að nota annað kerfi? Review Board er ókeypis og opinn hugbúnaður til að skoða frumkóða, skjöl, myndir og margt fleira. Það er vefbundið hugbúnaðarstríð
Í þessari handbók munt þú læra hvernig á að setja upp HTTP auðkenningu fyrir Nginx vefþjón sem keyrir á CentOS 7. Kröfur Til að byrja þarftu að
YOURLS (Your Own URL Shortener) er opinn uppspretta vefslóða styttingar og gagnagreiningarforrit. Í þessari grein munum við fjalla um ferlið við uppsetningu
Using a Different System? Introduction ArangoDB is an open source NoSQL database with a flexible data model for documents, graphs, and key-values. It is
Inngangur /etc/ skrárinn gegnir mikilvægu hlutverki í því hvernig Linux kerfi virkar. Ástæðan fyrir þessu er sú að næstum allar kerfisstillingar
Margir kerfisstjórar stjórna miklu magni af netþjónum. Þegar aðgangur þarf að skrám á mismunandi netþjónum er innskráning á hvern og einn fyrir sig ca
Þessi kennsla mun fjalla um ferlið við að setja upp Half Life 2 leikjaþjón á CentOS 6 System. Skref 1: Forsendur settar upp Til að setja upp ou
Laravel GitScrum, eða GitScrum er opinn uppspretta framleiðniverkfæri hannað til að hjálpa þróunarteymi að innleiða Scrum aðferðafræðina á svipaðan hátt
Gervigreind er ekki í framtíðinni, hún er hér í nútímanum Í þessu bloggi Lestu hvernig gervigreindarforrit hafa haft áhrif á ýmsa geira.
Ertu líka fórnarlamb DDOS árása og ruglaður með forvarnaraðferðirnar? Lestu þessa grein til að leysa spurningar þínar.
Þú gætir hafa heyrt að tölvuþrjótar græða mikið af peningum, en hefur þú einhvern tíma velt því fyrir þér hvernig þeir vinna sér inn svona peninga? við skulum ræða.
Viltu sjá byltingarkenndar uppfinningar frá Google og hvernig þessar uppfinningar breyttu lífi hvers manns í dag? Lestu síðan til að blogga til að sjá uppfinningar frá Google.
Hugmyndin um að sjálfkeyrandi bílar fari á göturnar með hjálp gervigreindar er draumur sem við höfum átt um tíma núna. En þrátt fyrir nokkur loforð eru þau hvergi sjáanleg. Lestu þetta blogg til að læra meira…
Þar sem vísindin þróast hratt og taka yfir mikið af viðleitni okkar, eykst hættan á því að verða fyrir óútskýranlegri einstæðu. Lestu, hvað sérkenni gæti þýtt fyrir okkur.
Geymsluaðferðir gagna hafa verið að þróast gæti verið frá fæðingu gagna. Þetta blogg fjallar um þróun gagnageymslu á grundvelli upplýsingamynda.
Lestu bloggið til að þekkja mismunandi lög í Big Data Architecture og virkni þeirra á einfaldasta hátt.
Í þessum stafræna heimi hafa snjallheimilistæki orðið afgerandi hluti af lífi. Hér eru nokkrir ótrúlegir kostir snjallheimatækja um hvernig þau gera líf okkar þess virði að lifa því og einfaldara.
Nýlega gaf Apple út macOS Catalina 10.15.4 viðbótaruppfærslu til að laga vandamál en svo virðist sem uppfærslan sé að valda fleiri vandamálum sem leiða til múrsteins á Mac vélum. Lestu þessa grein til að læra meira