Installera WordPress med Ubuntu 22.04, Apache2, MariaDB och PHP 8.2-FPM

Om du planerar att vara värd för WordPress på Cloud Server kommer den här guiden att vara till hjälp för dig. LAMP står för Linux, Apache, MariaDB och PHP-programvara som tillsammans kallas LAMP-stack.

För- och nackdelar med att välja Apache-webbserver framför NGINX

  • Fördelar: Den stöder .htaccess-fil som används av många som använder sidcaching och optimering. Detta är ett utmärkt val för icke-kodare.
  • Nackdelar: Den har något sämre prestanda än NGINX, men det kan hanteras med APO. För en webbplats med mycket trafik är LEMP-stacken det bästa valet.

Följ de här tre stegen och titta på videon. Behöver du hjälp? Kontakta mig. 😊

  1. Konfigurera Cloudflare DNS
  2. Skaffa Ubuntu Server
  3. Distribuera LAMP-stacken

Innan du börjar är det här ett snabbt tips. Använd tillägget Sök och ersätt för att ändra example.com till din egen domän på den här webbsidan.

Ett tidsbesparande tips för Google Chrome-användare.
search replace

Part A: Keep Cloudflare Nameservers active

Vi kommer att använda Cloudflare DNS för att få Let’s Encrypt Wildcard SSL-certifikat. Slutför det här steget först för att njuta av migrering utan nedtid.

Kontrollera aktuella namnservrar

Del B: Gör en Ubuntu Server 22.04 LTS Server redo

Ubuntu
Ubuntu-logotyp

1. Registrera dig på Vultr för att få $100 gratis krediter (giltigt i 14 dagar)

Jag har provat många molnserverföretag, men min erfarenhet säger att du inte kan göra fel med Vultr. Dessa killar är genuina och omtänksamma när det gäller support och tjänster.

vultr

⚡ Prestanda

  • Tredje generationens AMD EPYC™
  • NVME / SSD
  • Upp till 4 GHz CPU
  • Upp till 5 Gbps nätverkshastighet
  • Datacenter i America, Europe, Asia, Austraillia
  • IPV6 redo

💡 Funktioner

  • Nybörjarvänlig instrumentpanel
  • Snapshot med ett klick
  • Automtatic Backup (betald)
  • Gratis molnbrandvägg
  • DDoS skydd (betald)
  • 100% KVM Virtualisering

⚙ Stöd

  • PayPal/Card
  • 24/7 Biljettstöd
  • Dokumentation

2. Deloy en ny server

Klicka bara på plusknappen för att komma igång

Deploy New Server

3. Välj Servertyp

Välj Cloud Compute för delad CPU till överkomliga priser.

Cloud Compute

Därefter kan du välja AMD High Performance eller Intel High Frequency i CPU & Storage Technology. Den har den snabbaste CPU:n och NVMe-disken någonsin. Om budgeten är mindre kan du välja Regular plan med Intel CPU där du får SSD-disk.

CPU Technology

4. Välj en serverplats

Vultr erbjuder servrar i de fyra världsdelarna. För lägsta latenstid och bästa prestanda bör du alltid välja den region som ligger närmast din målgrupp.

vultr server region

Om till exempel 99 % av trafiken kommer från Sweden väljer du den närmaste regionen – Stockholm.

Asia

  • Mumbai, India
  • Delhi NCR, India
  • Bengaluru, India
  • Singapore, Singapore
  • Tokyo, Japan
  • Seoul, South Korea

America

  • Miami, United States
  • Atlanta, United States
  • Chicago, United States
  • Dallas, United States
  • Honolulu, United States
  • Los Angeles, United States
  • Mexico City, Mexico
  • New York (NJ), United States
  • Seattle, United States
  • Silicon Valley, United States
  • Toronto, Canada, São Paulo

Europe

  • Stockholm, Sweden
  • London, United Kingdom
  • Amsterdam, Netherlands
  • Frankfurt, Germany
  • Madrid, Spain
  • Paris, France
  • Warsaw, Poland

Australlia

  • Sydney, Australlia
  • Melbourne, Australia

5. Välj Server Image > Operating System > Ubuntu 22.04 LTS x64

ubuntu os

Långtidsstöd (LTS) är en policy för hantering av produkters livscykel där en stabil version av datorprogramvara underhålls under en längre tidsperiod än standardutgåvan.

ubuntu releases 2

6. Välj en serverstorlek

server size

En $6/mo-plan skulle vara en bra utgångspunkt för en ny blogg. Du kan uppgradera när som helst efter behov.

Tips: Om du migrerar kontrollerar du Total installationsstorlek i Information om webbplatsens hälsa.

Site health info

7. Aktivera IPV6, säkerhetskopiering

vultr enable backup ipv6

8. Lägg till en SSH-nyckel

Detta är ett rekommenderat, valfritt steg för ökad säkerhet.

Add SSH key
  • Klicka på knappen Lägg till ny för att lägga till en ny SSH-nyckel för att skicka in din 🔒offentliga nyckel.
  • Generera nycklar med nedanstående metod enligt ditt operativsystem.
win os
  • Ladda ner programmet PuTTy.
  • Sök efter PuTTygen i Start-menyn
  • Klicka på Generera-knappen och håll muspekaren över den.
  • Kopiera den offentliga nyckeln och ge den till Vultr
  • Ange nyckel lösenfras
  • Spara 🔑Private Key på en säker plats.
  • Detta kan användas för inloggning till SSH eller SFTP.
linux 2
  • Kör: ssh-keygen -t rsa. För en säkrare 4096-bitars nyckel kör du: ssh-keygen -t rsa -b 4096
  • Tryck på enter när du blir tillfrågad om var du vill spara nyckeln (standardplatsen används).
  • Ange en lösenfras för nyckeln.
  • Kör cat ~/.ssh/id_rsa.pub – detta ger dig nyckeln i rätt format som du kan klistra in i kontrollpanelen.
  • Se till att du säkerhetskopierar filen ~/.ssh/id_rsa. Den kan inte återställas om den försvinner.

Välj din SSH-nyckel

Genom att följa dessa steg kopplas din offentliga nyckel till din nya instans. Därefter kan du logga in på SSH med både lösenord i vanlig text och SSH-nyckel.

select SSH public key

9. Länka en webbbrandväggsregel till en serverinstans

Firewall
  1. Klicka på Hantera och skapa en ny brandväggsgrupp.
  2. Tillåt TCP-port 22 för SSH. 80 för HTTP och 443 HTTPS för både IPV4- och IPV6-regler.
  3. När du är klar kopplar du brandväggsgruppen till din instans.
firewall status
Accepterar endast TCP-anslutningar från 22, 80, 443
Link Firewall Group
Länka brandväggsregeln till den nya instansen

10. Ange värdnamn och etikett klicka på Distribuera nu

server hostname label

Nu kommer du att se att du installerar i förloppet

Instance Installing

11. Gå till sidan Ny instans

Kopiera IP-adress, användarnamn och lösenord. Din standardport är 22.

new instance info page

12. Inaktivera lösenordsinloggning

Av säkerhetsskäl rekommenderas det att inaktivera lösenordsautentisering och endast tillåta nyckelbaserad autentisering.

  1. Redigera konfigurationsfilen nano /etc/ssh/sshd_config
  2. Hitta (CTRL + W) och sök PasswordAuthentication
  3. Ändra värdet från ja till nej
  4. För att spara skriver du, CTRL + O
  5. Starta om SSH-tjänsten med kommandot sudo service ssh restart
disable password auth
Inaktivera autentisering av lösenord

Från och med nästa gång kan du bara använda SSH via nyckel som visas i videon.

För Linux eller Mac, använd Terminal med följande kommando

ssh [email protected] -p 22 -i id_rsa

Steg 13. Inaktivera UFW

När du distribuerar en ny instans på VULTR är UFW (Uncomplicated Firewall) aktiverad, vilket innebär att alla portar är blockerade utom SSH-port 22. Detta kan ge ERR_CONNECTION_REFUSED-fel i webbläsaren. För att åtgärda detta föreslår jag att du låter UFW vara inaktiverad.

ufw disable

Nu ska jag påskynda den ursprungliga processen för att distribuera WordPress på LAMP-stacken.

Part C. Deploy WordPress on LAMP Stack

1. Uppdatera förvaringsutrymmen

Skriv nedanstående kommando och tryck på enter

sudo -s
apt update && apt upgrade -y && apt dist-upgrade && apt autoclean && apt autoremove -y && reboot

eller .

wget -qO update https://dl.gulshankumar.net/update && chmod +x update

Nästa gång ska du alltid använda nedanstående snabbkommando för att uppdatera.

./update

2. Installera MariaDB med säkerhet

Logga in igen och ange följande kommando

sudo apt install mariadb-server -y && sudo mysql_secure_installation

Svara på nedanstående frågor

  • Enter current password for root (enter for none): Tryck på Enter-tangenten
  • Switch to unix_socket authentication [Y/n]: Skriv n och tryck på Enter.
  • Set root password? [Y/n]: Tryck på Enter-tangenten.
  • New password: Kopiera ett starkt lösenord från Dashlane Password Generator. Om du vill klistra in ett lösenord i SSH-konsolen högerklickar du och trycker på Enter. Lösenordet kommer inte att vara synligt på skärmen.
  • Re-enter new password: Högerklicka och tryck på Enter igen.

När du har lyckats ange ett lösenord kommer du att se följande

Password updated successfully!
Reloading privilege tables..
... Success!

Du måste också besvara följande frågor.

  • Remove anonymous users? [Y/n]: Tryck på Enter-tangenten
  • Disallow root login remotely? [Y/n]: Tryck på Enter-tangenten
  • Remove test database and access to it? [Y/n]: Tryck på Enter-tangenten
  • Reload privilege tables now? [Y/n]: Tryck på Enter-tangenten

3. Skapa en ny databas för WordPress

Logga in på MySQL, tryck på enter när den frågar efter lösenordet.

mysql -u root -p

Skapa en ny databas och ge behörighet till dess användare med lösenord. Det är här WordPress lagrar all information om inlägg, sidor, teman, insticksprogram etc.

create database wordpress;
grant all on wordpress.* to gulshan@localhost identified by '5pY8CKJxDRJEGQNkX7';
flush privileges;
exit;

Var din …
databasen är wordpress
användarnamn är gulshan
lösenordet är 5pY8CKJxDRJEGQNkX7

Tips: Överväg att använda unika inloggningsuppgifter

4. Installera PHP 8.2, Apache2 och ange behörighet

sudo add-apt-repository ppa:ondrej/php -y && apt update && apt install php8.2-fpm php8.2-common php8.2-mysql php8.2-xml php8.2-xmlrpc php8.2-curl php8.2-gd php8.2-imagick php8.2-cli php8.2-dev php8.2-imap php8.2-mbstring php8.2-soap php8.2-zip php8.2-bcmath -y && sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php/8.2/fpm/php.ini && service php8.2-fpm restart && apt install apache2 -y && chown -R www-data:www-data /var/www/ && chmod -R 755 /var/www/

Justera PHP-konfigurationen

De flesta fantasifulla teman och insticksprogram kräver en avancerad PHP-konfiguration för att kunna köras. Därför bör vi göra dessa ändringar.

sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/post_max_size = 8M/post_max_size = 128M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_file_uploads = 20/max_file_uploads = 30/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_execution_time = 30/max_execution_time = 900/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_input_time = 60/max_input_time = 3000/g' /etc/php/8.2/fpm/php.ini
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 128M/g' /etc/php/8.2/fpm/php.ini
service php8.2-fpm restart

5. Installera Wildcard Let’s Encrypt SSL-certifikat

Skapa en fil cloudflare.ini i katalogen /root/.secrets/.

mkdir -p /root/.secrets/ && cd /root/.secrets/ && nano cloudflare.ini

Lägg till nedanstående kod och spara med CTRL+O och avsluta med CTRL+X

dns_cloudflare_email = "[email protected]"
dns_cloudflare_api_key = "XXXXXXXXXXXXXXXXX"

Hitta din Cloudflare e-postadress och globala API-nyckel på ”Min profil” > API-token > Global API-nyckel

chmod 0400 /root/.secrets/cloudflare.ini

Installera Certbot och DNS Authenticator i enlighet med operativsystemet och HTTP-webbservern.

apt install snapd -y
snap install --beta --classic certbot
snap set certbot trust-plugin-with-root=ok
snap install --beta certbot-dns-cloudflare
snap connect certbot:plugin certbot-dns-cloudflare

Skaffa Wildcard SSL-certifikat

certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d example.com,*.example.com --preferred-challenges dns-01

Ställ in automatisk förnyelse med hjälp av Cron Job

  • Typ crontab -e
  • Typ 1 för nano editor
  • Ange nedanstående kommando och spara
0 0 * * *  /etc/init.d/apache2 reload >/dev/null 2>&1

Förnyelse av provningen

certbot renew --dry-run

Aktivera dessa användbara moduler

a2enmod proxy_fcgi ssl http2 expires headers rewrite remoteip
systemctl restart apache2

6. Skapa App Directory för varje WordPress-webbplats som du vill installera.

mkdir -p /var/www/example.com/public

Detta kommer att vara sökvägen till dokumentroten i Apache-konfigurationsfilen. Anledningen till att skapa example.com inom www är för att hålla varje webbplats organiserad. För det andra skapade jag också en offentlig katalog för att hålla alla WordPress-kärnfiler där, utom wp-config.php en nivå högre (/var/www/example.com/).

7. Skapa Apache2-konfiguration

Detta är viktigt när du måste konfigurera din domän och hur Apache2 ska hantera dina HTTP-begäranden.

Ta bort konfigurationsfiler för standardserverblock i Apache2

rm /etc/apache2/sites-available/000-default.conf
rm /etc/apache2/sites-available/default-ssl.conf
rm /etc/apache2/sites-enabled/000-default.conf
source /etc/apache2/envvars

Skapa nu nya konfigurationsfiler för ett serverblock. Du måste göra det här steget varje gång du vill lägga till en ny WordPress på samma server.

Ersätt example.com med din egen domän och glöm inte att avsluta konfigurationsfilens namn med .conf-tillägget. Annars kommer det inte att fungera.

cd /etc/apache2/sites-available/
nano example.com.conf
  1. Ersätt example.com med din egen domän
  2. Ange koden nedan och tryck på ctrl+o för att spara och ctrl+x för att avsluta.
##############################################################
#                                                               
# NOTER: Vänligen sök och byt ut example.com mot din egen domän.
#                                                                
##############################################################


# Vi ska tvinga fram HTTPS non-www
# Om du vill ha HTTPS www, behåll https://www.example.com/ i sista raden.
# Annars kan du få problem med omdirigeringsslingor.

<VirtualHost *:80>
   ServerSignature Off
   ServerName example.com
   ServerAlias www.example.com
   Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
   ServerSignature Off
   ServerName example.com
   ServerAlias www.example.com
   Protocols h2 h2c http/1.1
   DirectoryIndex index.php index.html
    
   # Aktivera om du använder Cloudflare Proxy
   # RemoteIPHeader X-Forwarded-For
   
   # Dokumentets rotväg (var uppmärksam på denna väg för att undvika 404).
   DocumentRoot /var/www/example.com/public
   
   # Loggningsväg är /var/log/apache2/example.com-access.log
   ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
   CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
   
   # Låt oss kryptera SSL
   SSLEngine On
   SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
   
   # Tillåt användning av .htaccess-filen för att åsidosätta konfigurationen
   <Directory /var/www/example.com/public>
     Options FollowSymLinks
     AllowOverride All
     Require all granted
   </Directory>
   
   # Blockera PHP-exekvering i katalogen för uppladdningar
   <Directory /var/www/example.com/public/wp-content/uploads>
    <Files *.php>
      deny from all
    </Files>
   </Directory>
   
   # Skydda wp-config.php
   <files wp-config.php>
      order allow,deny
      deny from all
   </files>

  # HTTP Auth för ytterligare säkerhet
  # Om du vill ha HTTP Auth för WordPress inloggningssida bör du överväga att avkommentera detta kodblock.
  # Om du gör det måste du också generera .htpasswd-filen.
  # <Files wp-login.php>
  #  AuthName "Admins Only"
  #    AuthUserFile /var/www/.htpasswd
  #   AuthType basic
  #    require user gulshan
  #   <RequireAny>
  #      Require ip 127.0.0.1
  #       Require valid-user
  #   </RequireAny>
  # </Files>
   
   # Blockera XML-RPC för att förhindra DDoS-attacker. 
   <Files xmlrpc.php>
      Order Deny,Allow
      Deny from all
   </Files>
   
   # Hantera utförandet av PHP
   <FilesMatch ".php$">
      SetHandler "proxy:unix:/var/run/php/php8.2-fpm.sock|fcgi://localhost/"
   </FilesMatch>
</VirtualHost>

För att spara trycker du på CTRL+O och Enter key. Sedan avslutar du nano-redigeraren med kommandot CTRL+X.

För att aktivera serverblocket, ange kommandot

Innan du kör kommandot nedan, ersätt example.com med din egen domän.

a2ensite example.com.conf

Testkonfiguration (valfritt)

apache2 -t

Starta om och uppdatera

service apache2 restart && service php8.2-fpm restart && service mysql restart && apt-get update && apt upgrade -y

8. Installera WordPress-filer

Ladda ner WordPress-filer i katalogen /var/www/example.com/public/ och ange behörighet.

cd /var/www/example.com/public/ && wget https://sv.wordpress.org/latest-sv_SE.tar.gz && tar -xvzf latest-sv_SE.tar.gz && mv -v wordpress/* /var/www/example.com/public/ && rm -rf latest-sv_SE.tar.gz wordpress && chown -R www-data:www-data /var/www/example.com/public/ && sudo chmod -R 755 /var/www/example.com/public/

För att uppdatera behörigheten i framtiden använder du kommandot nedan. Detta kommer att ställa in www-data för allt i katalogen /var/www/.

chown -R www-data:www-data /var/www/example.com/public/ && sudo chmod -R 755 /var/www/example.com/public/

9. Uppdatering av DNS

Det här steget är användbart om du är värd för WordPress lokalt, om du vill kringgå proxy eller om du vill utföra en migrering utan driftstopp. Jag föredrar i allmänhet när det gäller statiska WordPress Dev-området. 😉

  • Det finns två sätt att peka på DNS. Om du flyttar webbplatsen till Vultr och vill testa först lokalt kan du redigera din hosts-fil och peka dit.

För Windows

  • Gå till egenskaper för ‪‪C:\Windows\System32\drivers\etc\hosts
  • Ändra behörigheten ”Säkerhet” till full kontroll för ditt nuvarande användarnamn.
  • Nu kan du fritt redigera hosts-filen under din systemanvändare och spara den.
# For same machine you can have localhost address else public IP
127.0.0.1 example.com
127.0.0.1 www.example.com

Ett exempel, så här ska det se ut

För Mac eller Linux

Du kan redigera hosts-filen med det här kommandot under sudoanvändaren.

sudo nano /etc/hosts

Uppdatera DNS med Cloudflare

  • Om allt ser perfekt ut och du vill att din webbplats ska börja fungera, logga in på Cloudflare DNS och uppdatera den nya IP-adressen.
Record TypeNameValue
A@IPV4
AAAA@IPV6
CNAMEwwwexample.com

där @ betecknar rotdomänen example.com

9. Besök ditt domännamn för att konfigurera WordPress

Om du vill behålla en domän med en icke-www-version för din WordPress, besök då den icke-www-versionen annars www.

https://example.com
  • Ange inloggningsuppgifter till databasen för att påbörja installationen av WordPress
  • Kör installation
  • Fyll i grundläggande uppgifter om din nya webbplats och installera WordPress.
  • Logga in på WordPress

Andra nödvändiga saker

  • Öka swapminnet för att hantera plötslig belastning
swapoff -a
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  • Se till att använda ett plugin för sidcaching för att hålla serverbelastningen under kontroll. Eftersom det här är en LAMP-stack rekommenderar jag WP Fastest Cache.
  • Spara alltid en säkerhetskopia.
  • Använd SMTP-plugin-tjänster för att skicka utgående e-post från WordPress, annars kan du inte ta emot meddelanden från länken för återställning av lösenord och kontaktformulär 7.

Slutligen har WordPress-installationen slutförts.

Jag uppskattar verkligen din värdefulla tid för att läsa den här artikeln. Vi ses i nästa handledning!

Lämna en kommentar