Installige Plesk operatsioonisüsteemi CentOS 7
Kas kasutate teistsugust süsteemi? Plesk on patenteeritud veebihosti juhtpaneel, mis võimaldab kasutajatel hallata oma isiklikke ja/või klientide veebisaite, andmebaase
Pidev integreerimine on DevOpsi tarkvaraarenduspraktika, mis võimaldab arendajatel sageli liita muudetud koodi jagatud hoidlasse mitu korda päevas. Pärast iga ühendamist tehakse koodis esinevate probleemide tuvastamiseks automaatsed ehitused ja testid. See võimaldab arendajatel vigu kiiresti leida ja lahendada, et parandada tarkvara kvaliteeti ja pakkuda tarkvara pidevat tarnimist. Concourse'ist edasi-tagasi lülitumine on väga lihtne, kuna see säilitab kogu oma konfiguratsiooni deklaratiivsetes failides, mida saab kontrollida versioonikontrollis. See pakub ka veebikasutajaliidest, mis kuvab interaktiivselt ehitusteavet.
Kindlasti asendada kõik esinemised 192.0.2.1
ja ci.example.com
oma tegeliku Vultr avaliku IP aadressi ja domeeni nimega.
Värskendage oma baassüsteemi, kasutades juhendit CentOS 7 värskendamine . Kui teie süsteem on värskendatud, jätkake PostgreSQL-i installimisega.
PostgreSQL on objektide relatsiooniline andmebaasisüsteem. Concourse salvestab oma konveieri andmed PostgreSQL-i andmebaasi. Lisage PostgreSQL-i hoidla.
sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
Installige PostgreSQL andmebaasiserver.
sudo yum -y install postgresql96-server postgresql96-contrib
Initsialiseerige andmebaas.
sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
initdb
loob uue PostgreSQL-i andmebaasiklastri, mis on andmebaaside kogum, mida haldab üks serveri eksemplar. Redigeerige pg_hba.conf
faili, et lubada MD5-põhine autentimine.
sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf
Leia järgmised read ja muuda väärtusi peer
ja ident
on METHOD
veeru trust
ja md5
vastavalt.
# 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
Pärast värskendamist peaks konfiguratsioon välja nägema selline.
# 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
Käivitage PostgreSQL-server ja lubage see alglaadimisel automaatselt käivituda.
sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6
Muutke PostgreSQL-i vaikekasutaja parooli.
sudo passwd postgres
Logi sisse PostgreSQL-i kasutajana:
sudo su - postgres
Looge Concourse CI jaoks uus PostgreSQL-i kasutaja.
createuser concourse
Märkus : Vaikimisi PostgreSQL kasutaja saab kasutada autentimiseks andmebaasi, kuid see on soovitatav kasutada spetsiaalset kasutaja autentimiseks Concourse andmebaasi tootmise setup.
PostgreSQL pakub andmebaasis päringute käitamiseks kesta. Lülituge PostgreSQL-i kestale, käivitades:
psql
Määrake vastloodud Concourse'i andmebaasi kasutaja parool.
ALTER USER concourse WITH ENCRYPTED password 'DBPassword';
Tähtis : asendage DBPassword
tugeva parooliga. Märkige parool üles, kuna seda nõutakse hiljem õpetuses.
Looge Concourse'i jaoks uus andmebaas.
CREATE DATABASE concourse OWNER concourse;
Väljuge psql
kestast.
\q
Lülituge praeguselt postgresi kasutajalt sudo kasutajale.
exit
Laadige alla Concourse'i käivitatava faili uusim versioon ja salvestage see, /usr/bin
et seda saaks otse käivitada. Concourse'i ja Fly binaarfailide uusima versiooni leiate Concourse'i allalaadimislehelt . Uued väljaanded ilmuvad väga sageli. Asendage allolev link uue lingiga uusima versiooni jaoks.
sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/concourse_linux_amd64 -O /usr/bin/concourse
Samamoodi laadige alla käivitatava faili uusim versioon ja salvestage see /usr/bin
.
sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/fly_linux_amd64 -O /usr/bin/fly
Fly on käsurea liides Concourse CI ATC API-ga ühenduse loomiseks. Fly on saadaval mitmele platvormile, nagu Linux, Windows ja MacOS.
Määrake allalaaditud concourse
ja fly
kahendfailidele täitmisõigus.
sudo chmod +x /usr/bin/concourse /usr/bin/fly
Kontrollige, kas Concourse ja Fly töötavad õigesti, kontrollides nende versiooni.
concourse -version
fly -version
RSA võtmepaarid pakuvad võimalust Concourse'i komponentide vahelise suhtluse krüpteerimiseks.
Et Concourse töötaks, tuleb genereerida vähemalt kolm paari võtmeid. Seansi andmete krüptimiseks looge session_signing_key
. Seda võtit kasutab TSA ka ATC-le esitatavate taotluste allkirjastamiseks. TSA SSH-serveri kaitsmiseks looge tsa_host_key
. Lõpuks genereerida worker_key
jaoks iga töötaja.
Looge Concourse CI-ga seotud võtmete ja konfiguratsiooni salvestamiseks uus kataloog.
sudo mkdir /opt/concourse
Looge vajalikud võtmed.
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
Autoriseerige töötajate avalik võti, kopeerides selle sisu authorized_worker_keys
faili:
sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys
Concourse pakub kahte eraldi komponenti, mida tuleb käivitada: veeb ja töötaja. Käivitage Concoursi veebileht.
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
basic-auth
Soovi korral muutke kasutajanime ja parooli . Veenduge, et võtmefailide tee on õige, ja veenduge, et PostgreSQL-i andmebaasi konfiguratsioonis on kasutajanime ja parooli õige väärtus.
Märkus . ATC kuulab vaikeporti 8080
ja TSA kuulab porti 2222
. Kui autentimist ei soovi, edastage see --no-really-i-dont-want-any-auth
valik pärast põhiliste autentimisvalikute eemaldamist.
Kui veebiserver on käivitatud, tuleks kuvada järgmine väljund.
{"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"}}
Peatage server praegu, kuna veel mõned asjad peavad olema seadistatud.
Käivitage 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
Ülaltoodud käsk eeldab, et TSA töötab localhostis ja kuulab vaikeporti 2222
.
Kuigi Concourse'i veebi ja töötajat saab ülaltoodud käskude abil hõlpsasti käivitada, on serveri haldamiseks soovitatav kasutada Systemd.
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
Sihtsisselogimine salvestatakse üheks päevaks. Pärast seda see aegub.
Kohe väljalogimiseks.
fly -t my-ci logout
Fly saab kasutada serverisse sisselogimiseks väljaspool võrku, kuid ainult siis, kui serveril on avalik IP-aadress ja see on juurdepääsetav väljastpoolt võrku. Windowsi või MacOS-i kahendfaili saab alla laadida allalaadimissaidilt või serveri veebiliidese kaudu.
Sisselogimised ja muu veebiliidese kaudu Concourse'i serverisse saadetud teave ei ole kaitstud. Ühendus ei ole krüptitud. Nginxi pöördpuhverserveri saab seadistada tasuta SSL-iga Let's Encrypt.
Installige Nginxi veebiserver ja Certbot, mis on Let's Encrypt CA klientrakendus.
sudo yum -y install certbot-nginx nginx
Käivitage ja lubage Nginx alglaadimisel automaatselt käivituda:
sudo systemctl start nginx
sudo systemctl enable nginx
Enne sertifikaatide päringu esitamist tuleb tulemüüri kaudu lubada portid 80 ja 443 või standardsed HTTP- ja HTTPS-teenused. Certbot kontrollib enne sertifikaatide väljastamist domeeni autoriteeti.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
Porti 8080 ei pea enam tulemüürist läbi lubama, sest Concourse'i käitatakse nüüd standardse HTTPS-i pordiga. Port 8080 lubamiseks eemaldage tulemüüri kirje.
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload
Märge
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.
Looge SSL-sertifikaadid.
sudo certbot certonly --webroot -w /usr/share/nginx/html -d ci.example.com
Loodud sertifikaadid salvestatakse tõenäoliselt /etc/letsencrypt/live/ci.example.com/
kataloogi. SSL-sertifikaat salvestatakse kui fullchain.pem
ja privaatvõti salvestatakse kui privkey.pem
.
Teeme krüptimise sertifikaadid aeguvad 90 päeva pärast, seega on soovitatav sertifikaatide automaatne uuendamine seadistada cronjobsi abil. Cron on süsteemiteenus, mida kasutatakse perioodiliste toimingute käitamiseks.
Avage cron tööfail.
sudo crontab -e
Lisage faili lõppu järgmine rida.
30 5 * * 1 /usr/bin/certbot renew --quiet
Ülaltoodud cron töötab igal esmaspäeval kell 5.30. Kui sertifikaat hakkab aeguma, uuendatakse seda automaatselt.
Looge uus virtuaalne host.
sudo nano /etc/nginx/conf.d/concourse-ssl.conf
Täitke fail.
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;
}
}
Märkus . Asendage ci.example.com
tegeliku domeeniga.
Redigeerige Concourse Web jaoks loodud keskkonnafaili.
sudo nano /opt/concourse/web.env
Muutke väärtust CONCOURSE_EXTERNAL_URL
ja lisage faili lõppu veel kaks rida.
CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080
Salvestage fail ja taaskäivitage Concourse Web, Worker ja Nginxi veebiserver:
sudo systemctl restart concourse-worker concourse-web nginx
Kõik brauserisse ja sealt saadetud andmed on nüüd kaitstud SSL-krüptimisega.
Kas kasutate teistsugust süsteemi? Plesk on patenteeritud veebihosti juhtpaneel, mis võimaldab kasutajatel hallata oma isiklikke ja/või klientide veebisaite, andmebaase
Squid on populaarne tasuta Linuxi programm, mis võimaldab teil luua edastamise veebipuhverserveri. Selles juhendis näete, kuidas installida Squid CentOS-i, et teid pöörata
Sissejuhatus Lighttpd on Apache'i hark, mille eesmärk on olla palju vähem ressursimahukas. See on kerge, sellest ka oma nimi, ja seda on üsna lihtne kasutada. Installin
VULTR on hiljuti teinud nende osas muudatusi ja kõik peaks nüüd töötama hästi, kui NetworkManager on lubatud. Kui soovite keelata
Icinga2 on võimas seiresüsteem ja kui seda kasutatakse põhikliendi mudelis, võib see asendada vajaduse NRPE-põhiste seirekontrollide järele. Meister-klient
Kas kasutate teistsugust süsteemi? Apache Cassandra on tasuta ja avatud lähtekoodiga NoSQL-i andmebaasihaldussüsteem, mis on loodud pakkuma skaleeritavust, hig.
Kas kasutate teistsugust süsteemi? Microweber on avatud lähtekoodiga pukseeritav CMS-i ja veebipood. Microweberi lähtekoodi majutatakse GitHubis. See juhend näitab teile
Kas kasutate teistsugust süsteemi? Mattermost on avatud lähtekoodiga isehostitav alternatiiv Slack SAAS-i sõnumsideteenusele. Teisisõnu, Mattermostiga saate ca
Mida vajate Vultr VPS-i, millel on vähemalt 1 GB muutmälu. SSH-juurdepääs (juur-/administraatoriõigustega). 1. samm: BungeeCordi installimine Kõigepealt
Pleski juhtpaneelil on Lets Encrypti jaoks väga kena integratsioon. Lets Encrypt on üks ainsatest SSL-i pakkujatest, kes väljastab sertifikaate täielikult
Lets Encrypt on sertifitseerimisasutus, mis on pühendunud SSL-sertifikaatide tasuta pakkumisele. cPanel on teie ja teie kliendi jaoks loonud korraliku integratsiooni
Kas kasutate teistsugust süsteemi? Concrete5 on avatud lähtekoodiga CMS, mis pakub palju eristatavaid ja kasulikke funktsioone, mis aitavad toimetajatel sisu hõlpsalt luua.
Kas kasutate teistsugust süsteemi? Review Board on tasuta avatud lähtekoodiga tööriist lähtekoodi, dokumentatsiooni, piltide ja palju muu ülevaatamiseks. See on veebipõhine tarkvara
In this guide, you will learn how to setup HTTP authentication for an Nginx web server running on CentOS 7. Requirements To get started, youll need th
YOURLS (Your Own URL Shortener) on avatud lähtekoodiga URL-i lühendamise ja andmeanalüüsi rakendus. Selles artiklis käsitleme installimisprotsessi
Kas kasutate teistsugust süsteemi? Sissejuhatus ArangoDB on avatud lähtekoodiga NoSQL-i andmebaas, millel on paindlik andmemudel dokumentide, graafikute ja võtmeväärtuste jaoks. see on
Sissejuhatus Kataloog /etc/ mängib Linuxi süsteemi toimimises kriitilist rolli. Selle põhjuseks on peaaegu iga süsteemi konfiguratsioon
Paljud süsteemiadministraatorid haldavad suuri servereid. Kui failidele on vaja juurde pääseda erinevatest serveritest, logige igasse eraldi sisse ca
See õpetus hõlmab Half Life 2 mänguserveri installimist süsteemi CentOS 6 System. 1. samm: eeltingimuste installimine Ou seadistamiseks
Laravel GitScrum ehk GitScrum on avatud lähtekoodiga produktiivsuse tööriist, mis on loodud selleks, et aidata arendusmeeskondadel rakendada Scrumi metoodikat sarnasel viisil.
Tehisintellekt ei ole tulevik, see on siin, olevikus. Sellest blogist loe, kuidas tehisintellekti rakendused on mõjutanud erinevaid sektoreid.
Kas olete ka DDOS-i rünnakute ohver ja olete segaduses ennetusmeetodite osas? Oma päringute lahendamiseks lugege seda artiklit.
Võib-olla olete kuulnud, et häkkerid teenivad palju raha, kuid kas olete kunagi mõelnud, kuidas nad sellist raha teenivad? arutleme.
Kas soovite näha Google'i revolutsioonilisi leiutisi ja seda, kuidas need leiutised muutsid iga inimese elu tänapäeval? Seejärel lugege ajaveebi, et näha Google'i leiutisi.
Isejuhtivate autode kontseptsioon tehisintellekti abil teedele jõudmiseks on meil juba mõnda aega unistus. Kuid vaatamata mitmele lubadusele pole neid kusagil näha. Lisateabe saamiseks lugege seda ajaveebi…
Kuna teadus areneb kiiresti, võttes üle suure osa meie jõupingutustest, suureneb ka oht, et allume seletamatule singulaarsusele. Loe, mida singulaarsus meie jaoks tähendada võiks.
Andmete säilitamise meetodid on arenenud alates andmete sünnist. See ajaveeb käsitleb infograafiku alusel andmete salvestamise arengut.
Lugege ajaveebi, et kõige lihtsamal viisil teada saada Big Data Architecture'i erinevaid kihte ja nende funktsioone.
Selles digipõhises maailmas on nutikad koduseadmed muutunud elu oluliseks osaks. Siin on mõned nutikate koduseadmete hämmastavad eelised, mis muudavad meie elu elamisväärseks ja lihtsamaks.
Hiljuti andis Apple välja macOS Catalina 10.15.4 täiendusvärskenduse probleemide lahendamiseks, kuid tundub, et värskendus põhjustab rohkem probleeme, mille tulemuseks on Maci masinate tellimine. Lisateabe saamiseks lugege seda artiklit