Installera Plesk på CentOS 7
Använder du ett annat system? Plesk är en egen kontrollpanel för webbhotell som tillåter användare att administrera sina personliga och/eller klienters webbplatser, databaser
Redmine är ett gratis och öppen källkod, webbaserat projekthanteringsverktyg. Den är skriven i Ruby on Rails och stöder flera databasservrar för lagring av databasen. Det är en funktionsrik applikation som stöder flera projekt, rollbaserad ACL och problemspårningssystem. Den har också stöd för Gantt-diagram och kalender, filhantering, wiki och forum per projekt, samt många andra funktioner. Den stöder versionskontrollsystem som Git, SVN eller CVS. Den är också flerspråkig och stöder så många som 49 språk.
Den här guiden skrevs för Redmine 3.4.4, men kan även gälla nyare versioner.
För den här handledningen kommer vi att använda 192.168.1.1
som den offentliga IP-adressen och redmine.example.com
som domännamnet pekade mot Vultr-instansen. Se till att ersätta alla förekomster av exemplets domännamn och IP-adress med den faktiska.
Uppdatera ditt bassystem med hjälp av guiden Hur man uppdaterar CentOS 7 . När ditt system har uppdaterats fortsätter du med att installera beroenden.
Redmine är skrivet i Ruby on Rails, så vi kommer att kräva att Phusion Passenger integreras med Apache-webbservern för att tjäna applikationen. Installera Apache.
sudo yum -y install httpd httpd-devel libcurl-devel
För att bygga Redmine-applikationen behöver vi också några utvecklingsverktyg. Installera nödvändiga verktyg.
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 stöder flera typer av databasservrar som MySQL, PostgreSQL och MSSQL. I den här handledningen kommer vi att använda PostgreSQL för att vara värd för Redmines databasserver.
PostgreSQL är ett objektrelationellt databassystem. Standardförvaret yum
innehåller en gammal version av PostgreSQL, så lägg till PostgreSQL-förvaret i systemet.
sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpm
Installera PostgreSQL-databasservern.
sudo yum -y install postgresql10-server postgresql10-contrib postgresql10
Initiera databasen.
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
Starta PostgreSQL-servern och låt den starta automatiskt vid uppstart.
sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10
Ändra lösenordet för standardpostgreSQL-användaren.
sudo passwd postgres
Logga in som PostgreSQL-användare.
sudo su - postgres
Skapa en ny PostgreSQL-användare för Redmine.
createuser redmine
Du får använda vilket användarnamn som helst istället för redmine
. PostgreSQL tillhandahåller psql
skalet för att köra frågor på databasen. Byt till PostgreSQL-skalet.
psql
Ställ in ett lösenord för den nyskapade användaren för Redmine-databasen.
ALTER USER redmine WITH ENCRYPTED password 'DBPassword';
Ersätt DBPassword
med ett säkert lösenord. Skapa en ny databas för Redmine-installationen.
CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
Gå ut ur psql
skalet.
\q
Växla till sudo
användaren.
exit
Redigera pg_hba.conf
filen för att aktivera MD5-baserad autentisering.
sudo nano /var/lib/pgsql/10/data/pg_hba.conf
Hitta följande rader och ändra värden peer
och ident
i METHOD
kolumnen till trust
och md5
, respektive.
# 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
När den väl har uppdaterats bör konfigurationen se ut så här.
# 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
Starta om PostgreSQL så att ändringarna kan träda i kraft.
sudo systemctl restart postgresql-10
Installera ytterligare några nödvändiga PostgreSQL-beroenden.
sudo yum -y install libpqxx-devel protobuf-devel
Det rekommenderas att använda en oprivilegierad användare för att köra programmet för att hålla det isolerat från resten av systemet. Skapa en ny användare för Redmine och byt till den nyskapade användaren.
sudo adduser redmine
sudo su - redmine
Vi kommer att installera den senaste versionen av Ruby med Ruby Version Manager, eller RVM. Den används för att installera och hantera flera versioner av Ruby.
Lägg till GPG-nyckeln för RVM till din server.
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
Installera RVM.
curl -sSL https://get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm
Hämta listan över tillgängliga versioner av Ruby.
rvm list known
Du kommer att se en lång lista med Ruby-versioner.
[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
...
Installera den senaste versionen av Ruby från listan.
rvm install 2.4
Använd den installerade versionen av Ruby.
rvm use 2.4
Du kan verifiera dess version.
ruby -v
Du kommer att se en liknande utgång.
[redmine@vultr ~]$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
Installera bundler, som är beroendehanteraren för Ruby-applikationen.
gem install bundler
Ruby är nu installerad. Innan vi installerar Redmine måste vi installera Phusion Passenger.
Kör följande kommando för att installera Passenger.
gem install passenger
Ge exekveringsbehörighet till redmine
användarens hemkatalog . Passageraren måste köra binärfilerna för att kunna betjäna applikationen.
chmod o+x "/home/redmine"
Installera Apache-modulen för passagerare.
passenger-install-apache2-module
Installationsskriptet kommer att ställa några frågor. Först kommer det att ge dig information om installationsprocessen. Sedan kommer den att be dig välja vilket språk du ska använda. Eftersom vår applikation är skriven i Ruby on Rails, välj Ruby från menyn och tryck på " Enter
" för att gå vidare.
Which languages are you interested in?
Use <space> to select.
If the menu doesn't display correctly, press '!'
‣ ⬢ Ruby
⬡ Python
⬡ Node.js
⬡ Meteor
Installationsprogrammet kommer nu att söka efter krav. Installationsprogrammet kommer inte att stöta på några saknade beroenden och kommer automatiskt att fortsätta med att kompilera och installera modulen.
När modulen är installerad kommer den att uppmana dig att lägga till modulen i Apache-konfigurationsfilen.
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.
Vi kommer att hoppa över detta för nu och kommer att slutföra det senare i handledningen eftersom användaren som vi är inloggade med nu inte har sudo
behörigheter. Tryck på " Enter
" för att hoppa över detta steg.
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
Hitta vidare raderna som kommenteras, med production
konfiguration för postgresql
adaptern. Avkommentera dessa rader och uppdatera databasens namn och användaruppgifter. Se till att använda rätt indrag, som är två mellanslag.
production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: "DBPassword"
Konfigurera applikationen för att använda PostgreSQL-konfigurationen.
bundle config build.pg --with-pg-config=/usr/pgsql-10/bin/pg_config
Installera de applikationsberoenden som applikationen kräver.
bundle install --without development test
Du kommer att se följande meddelande i slutet av installationen.
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.
Följande kommando genererar hemliga tokens som används för att koda sessionsdata.
bundle exec rake generate_secret_token
Skriv PostgreSQL-databasen.
RAILS_ENV=production bundle exec rake db:migrate
Kör följande kommando, som skriver standarddata till PostgreSQL-databasen.
RAILS_ENV=production bundle exec rake redmine:load_default_data
Kommandot ovan kommer att be dig välja vilket standardspråk som ska användas med applikationen. Standardvalet är engelska; välj enligt dina önskemål.
[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.
Installationen av Redmine-applikationen är nu klar. Ändra ägande och behörigheter för kataloger och filer.
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
Vi har konfigurerat allt vi behöver från den icke-privilegierade användaren. Växla tillbaka till sudo
användaren genom att köra su - <username>
.
Lägg till passagerarmodulen för Apache i Apache-konfigurationsfilen. Detta kommer automatiskt att ladda passagerarmodulen.
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
Skapa en ny virtuell värdfil för din Redmine-applikation.
sudo nano /etc/httpd/conf.d/redmine.conf
Fyll filen med följande innehåll.
<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>
Se till att ersätta redmine.example.com
med ditt faktiska domännamn. Se också till att sökvägen till PassengerRoot
och PassengerRuby
är korrekt. Sökvägen till binärerna kan ändras när det finns en ny version av Ruby eller Passenger. För att hitta dessa sökvägar, kör följande kommando.
sudo su redmine -c "passenger-config about ruby-command"
Du kommer att få följande utdata.
[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
När den virtuella värdfilen har skapats startar du om Apache-webbservern.
sudo systemctl restart httpd
Ändra brandväggskonfigurationen för att tillåta port 80
genom brandväggen.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --reload
Du kan nu komma åt ditt Redmine-gränssnitt på http://redmine.example.com
. Logga in med användarnamn admin
och lösenord admin
. Vid din första inloggning kommer Redmine att uppmana dig att uppdatera lösenordet.
Eftersom vår Redmine-installation är på en offentlig server, rekommenderas det att använda SSL för att säkra utbytet av data från servern.
Installera Certbot, som är klientapplikationen för Let's Encrypt CA.
sudo yum -y install epel-release
sudo yum -y install certbot mod_ssl
Innan du kan begära certifikaten måste du tillåta port 80
och/ 443
eller standard HTTP
och HTTPS
tjänster genom brandväggen. Eftersom vi redan har tillåtit port 80
tidigare, låt oss tillåta port 443
.
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
Obs: För att få certifikat från Let's Encrypt CA måste domänen för vilken certifikaten ska genereras peka mot servern. Om inte, gör de nödvändiga ändringarna i domänens DNS-poster och vänta tills DNS:n sprider sig innan du gör certifikatbegäran igen. Certbot kontrollerar domänmyndigheten innan certifikaten tillhandahålls.
Generera SSL-certifikaten.
sudo certbot certonly --webroot -w /home/redmine/redmine/public -d redmine.example.com
De genererade certifikaten kommer sannolikt att lagras i /etc/letsencrypt/live/redmine.example.com/
. SSL-certifikatet kommer att lagras som cert.pem
och privat nyckel kommer att lagras som privkey.pem
.
Låt oss kryptera certifikaten går ut om 90 dagar, därför rekommenderas det att ställa in automatisk förnyelse av certifikaten med Cron-jobb.
Öppna Cron-jobbfilen för root
användaren.
sudo crontab -e
Lägg till följande rad i slutet av filen.
30 5 * * * /usr/bin/certbot renew --quiet
Ovanstående Cron-jobb kommer att köras varje dag klockan 5:30. Om certifikatet löper ut kommer det automatiskt att förnyas.
Redigera den virtuella värdfilen vi skapade tidigare för Redmine.
sudo nano /etc/httpd/conf.d/redmine.conf
Ändra den virtuella värdfilen så att den ser ut som följande.
<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>
Spara filen och avsluta redigeraren.
Starta om Apache så att ändringarna kan träda i kraft.
sudo systemctl restart httpd
Du kan nu komma åt Redmine över HTTPS
på https://redmine.example.com
.
Grattis, du har framgångsrikt installerat Redmine på din CentOS 7-instans. Börja utveckla ditt projekt antingen genom att skapa eller importera ditt projekt.
Använder du ett annat system? Plesk är en egen kontrollpanel för webbhotell som tillåter användare att administrera sina personliga och/eller klienters webbplatser, databaser
Squid är ett populärt, gratis Linux-program som låter dig skapa en webbproxy för vidarebefordran. I den här guiden ser du hur du installerar Squid på CentOS för att förvandla dig
Inledning Lighttpd är en apachegaffel som syftar till att vara mycket mindre resurskrävande. Den är lätt, därav namnet, och är ganska enkel att använda. Installera
VULTR har nyligen gjort ändringar på deras sida, och allt borde nu fungera bra direkt när NetworkManager är aktiverat. Om du vill inaktivera
Icinga2 är ett kraftfullt övervakningssystem, och när det används i en master-klient-modell kan det ersätta behovet av NRPE-baserade övervakningskontroller. Master-klienten
Använder du ett annat system? Apache Cassandra är ett gratis NoSQL-databashanteringssystem med öppen källkod som är designat för att ge skalbarhet, hög
Använder du ett annat system? Microweber är en öppen källkod för dra och släpp CMS och onlinebutik. Microweber källkod finns på GitHub. Denna guide kommer att visa dig
Använder du ett annat system? Vanilla forum är en open source forumapplikation skriven i PHP. Det är en helt anpassningsbar, enkel att använda och stöder externa
Använder du ett annat system? Mattermost är ett alternativ med öppen källkod, självvärd till meddelandetjänsten Slack SAAS. Med andra ord, med Mattermost, du ca
Vad du behöver En Vultr VPS med minst 1 GB RAM. SSH-åtkomst (med root-/administrativa privilegier). Steg 1: Installera BungeeCord Först till kvarn
Plesks kontrollpanel har en mycket trevlig integration för Lets Encrypt. Lets Encrypt är en av de enda SSL-leverantörerna som ger ut certifikat fullständigt
Lets Encrypt är en certifikatmyndighet dedikerad till att tillhandahålla SSL-certifikat gratis. cPanel har byggt en snygg integration så att du och din klient
Använder du ett annat system? Concrete5 är ett CMS med öppen källkod som erbjuder många distinkta och användbara funktioner för att hjälpa redaktörer att producera innehåll enkelt och
Använder du ett annat system? Review Board är ett gratis och öppen källkodsverktyg för att granska källkod, dokumentation, bilder och många fler. Det är webbaserad mjukvara
I den här guiden lär du dig hur du ställer in HTTP-autentisering för en Nginx-webbserver som körs på CentOS 7. Krav För att komma igång behöver du
YOURLS (Your Own URL Shortener) är ett webbadressförkortnings- och dataanalysprogram med öppen källkod. I den här artikeln kommer vi att täcka installationsprocessen
Använder du ett annat system? Inledning ArangoDB är en NoSQL-databas med öppen källkod med en flexibel datamodell för dokument, grafer och nyckel-värden. Det är
Inledning Katalogen /etc/ spelar en avgörande roll för hur ett Linux-system fungerar. Anledningen till detta är att nästan varje systemkonfiguration
Många systemadministratörer hanterar stora mängder servrar. När filer behöver nås över olika servrar, logga in på var och en individuellt ca
Denna handledning kommer att täcka processen att installera en Half Life 2-spelserver på CentOS 6 System. Steg 1: Installera förutsättningarna För att ställa in ou
Artificiell intelligens är inte i framtiden, det är här i nuet I den här bloggen Läs hur Artificiell intelligens-applikationer har påverkat olika sektorer.
Är du också ett offer för DDOS-attacker och förvirrad över de förebyggande metoderna? Läs den här artikeln för att lösa dina frågor.
Du kanske har hört att hackare tjänar mycket pengar, men har du någonsin undrat hur de tjänar den typen av pengar? låt oss diskutera.
Vill du se revolutionerande uppfinningar av Google och hur dessa uppfinningar förändrade livet för varje människa idag? Läs sedan till bloggen för att se uppfinningar av Google.
Konceptet med att självkörande bilar ska ut på vägarna med hjälp av artificiell intelligens är en dröm vi har ett tag nu. Men trots flera löften finns de ingenstans att se. Läs den här bloggen för att lära dig mer...
När vetenskapen utvecklas i snabb takt och tar över en hel del av våra ansträngningar, ökar också riskerna för att utsätta oss för en oförklarlig singularitet. Läs, vad singularitet kan betyda för oss.
Lagringsmetoderna för data har utvecklats kan vara sedan födelsen av data. Den här bloggen tar upp utvecklingen av datalagring på basis av en infografik.
Läs bloggen för att känna till olika lager i Big Data Architecture och deras funktionaliteter på enklaste sätt.
I denna digitala värld har smarta hemenheter blivit en avgörande del av livet. Här är några fantastiska fördelar med smarta hemenheter om hur de gör vårt liv värt att leva och enklare.
Nyligen släppte Apple macOS Catalina 10.15.4, en tilläggsuppdatering för att åtgärda problem, men det verkar som om uppdateringen orsakar fler problem som leder till att mac-datorer blir murade. Läs den här artikeln för att lära dig mer