Installera WordPress i Amazon Cloud

Medan hanterad WordPress-hosting är lämplig för de flesta, föredrar jag flexibiliteten att köra min egen server. En av de billigare lösningarna är Amazons molnbaserade webbtjänst (AWS).

Men om du inte har en djup teknisk bakgrund kan det vara överväldigande att komma igång med AWS.

När jag först installerade WordPress på en AWS-mikroinstans fortsatte den att springa ur minne och krascha. Sedan, när jag installerade ett anpassat, responsivt tema i större instans, var det fortfarande ganska långsamt.

Den här guiden kommer att ge dig en detaljerad steg för steg inställning för att skapa din WordPress-blogg på AWS på ett högpresterande och ekonomiskt sätt med hjälp av en AWS-mikro (eller liten) instans som körs på Apache. En uppföljningstutorial täcker hur du optimerar prestanda med Lack Cache och W3 Total Cache plugin. Genom att använda dessa tillvägagångssätt har jag framgångsrikt kört min egen webbplats i Amazonas moln under de senaste två åren och överlevt många anmärkningar på Slashdot, BoingBoing och andra högtrafikwebbplatser.

Beräkna kostnader

AWS kan vara dyr att använda per timme. För en WordPress-blogg som arbetar obestämd 7 dagar i veckan, 24 timmar om dygnet, är det bäst att köpa det som kallas en "tung reserverad instans". Det finns uppåtkostnader, men stora besparingar över tiden. Det är i grunden en volymrabatt för att köpa tid på sitt nätverk.

Med en treårig reserverad mikroinstans kan du köra en låg trafikblogg för 6,44 dollar per månad (med det första året gratis för nya AWS-användare). Om du vill ha lite mer utrymme att växa, köpa en treårig reserverad liten instans för en total månadsränta på 11,81 dollar (det jag använder för närvarande). 

Jag är ganska säker på att en jämförbar installation på WordPress.com skulle kosta ungefär $ 99 per år ($ 8,25 per månad) per blogg, $ 24 per månad på en värd som Page.ly och $ 29 per månad vid WPEngine. Med din egen instans kan du dock köra flera bloggar utan extra kostnad. Ju fler bloggar du planerar att köra, desto mer kostnadseffektiva AWS blir över WordPress.com. Du kan också använda din servernsinstans för andra uppgifter - jag är värd för andra webbplatser och kör några av mina andra webbapps på min.

Du kan lära dig mer om AWS-prissättning, reserverad instansprissättning och uppskatta dina kostnader med sin räknare.

Obs! Ovanstående uppskattningar inkluderar inte extra kostnader för S3-lagring och bandbredd som används av W3 Total Cache - men dessa kostnader är vanligtvis relativt mindre. Och vi inkluderar inte Amazonas skalbara Remote Database Service (RDS) i denna handledning för att minimera kostnader.

Jag föreslår att vänta tills din grundläggande WordPress-webbplats är igång innan du fattar ett beslut att köpa en reserverad instans. 

Om du köper en reserverad instans och sedan ångrar senare gör Amazon en marknadsplats för att sälja oanvända delar av reserverade instanser (för en liten provision). Jag har funnit det fungerar bra och har sålt två fall inom några veckor.

Att flytta din webbplats från en mikroinstans till en liten instans är dock inte trivial och det är inte dokumenterat här. Om du tror att du får en framgångsrik blogg, börja med ett litet eller medelstort exemplar.

Utöver vad som beskrivs i handledningen för optimering av prestanda erbjuder Amazon ett antal tjänster och tekniker för högre nivåer av flexibilitet och skalbarhet. Så, medan det inte beskrivs här, finns det ett antal sätt att AWS hjälper dig att odla din webbplats.

Om du inte har något Amazon Web Services-konto (AWS), anmäler du dig till en. Om du redan har ett konto, logga in och låt oss börja.

Skapa din EC2-instans

Nu när du har ett konto kan du logga in på AWS-konsolen för att skapa din nya virtuella server. Klicka på länken EC2 som visas i instrumentpanelen nedan:

Om du vill köra en lätthandlad WordPress-webbplats, kommer en mikroinstans troligen att fungera bra för dig. Om du är ny på AWS, bör du kunna köra din blogg i sin kostnadsfria användningstid i ett år. Om du köper en treårig reserverad mikroinstans för $ 100 kan du minska den totala månadsavgiften till $ 6.44. Med en mikroinstans måste du skapa en swap-fil (beskrivs nedan) som kan generera några mindre extra kostnader och ibland bör övervakas.

Om du tror att din blogg popularitet och komplexitet kommer att hämta snabbt, kanske du vill börja med en liten instans. Genom att köpa en treårig reserverad liten instans för 188 dollar, är den effektiva månadsräntan 11,82 dollar. 

Klicka på knappen Starta start för att starta guiden Skapa instans. Om du inte förväntar dig en signifikant trafik på din blogg, välj en Ubuntu 14.xx (64 bit) Micro-instans. 

Du kan generellt välja standardinställningarna för varje steg när du flyttar genom guiden.

När du når sidan för Konfigurera brandväggen lägger du till en säkerhetsregel för att tillåta HTTP-trafik på port 80:

Under processen kommer guiden att hämta en privat nyckel till din dators nedladdningar katalog. Håll en kopia av den här filen på ett säkert ställe. Om du förlorar det kommer du att förlora åtkomst till hela din instans.

Nu är din instans redo för att du loggar in på distans via SSH. Öppna terminal på din dator. Flytta den nedladdade nyckeln till din SSH-nyckelkatalog och ställ in behörigheterna:

mv ~ / Nedladdningar / wordpress.pem ~ / .ssh chmod 400 ~ / .ssh / wordpress.pem

Kopiera URL-adressen för exemplet från konsolen, t.ex.. ec2-75-101-173-192.compute-1.amazonaws.com (se nedan):

Från terminal, försök att ansluta via SSH:

ssh -i ~ / .ssh / wordpress.pem [email protected]

Om du använder Windows måste du använda PUTTY för att ansluta.

Om du fortfarande har problem kan du använda knappen Anslut i Amazonas konsol ovanför EC2 Instance-listan.

Nu är det dags att associera en offentlig IP-adress med din förekomst så att du kan kartlägga ditt domännamn t.ex.. yourbrand.com till din WordPress-webbplats. Dessa dagar fördelar AWS en ny offentlig IP-adress med varje instans men om det inte gör det automatiskt för dig, måste du fördela en ny elastisk IP-adress. 

Från EC2 Dashboard vänster sidofält, klicka på Elastic IPs. Klicka sedan på Tilldela ny adress. Amazon tillhandahåller en fri Elastic IP-kod per löpande instans.

Då måste du associera den nya elastiska adressen med förekomsten du skapade. Detta gör det möjligt för Amazon att skicka trafik som kommer in i den elastiska IP-adressen till din instans som kör WordPress.

Den adress som du loggar in via SSH kommer nu att ha ändrats för att återspegla din elastiska IP-adress (ersätt x med din nya elastiska IP):

ssh -i ./wordpress.pem [email protected]

Det kan också fungera nu:

ssh -i ./wordpress.pem [email protected]

Nu kan du börja processen med att mappa ditt domännamn t.ex. yourdomain.com till din framtida WordPress-webbplats. Besök domänregistratorns DNS-inställningar och ändra A-posten för din yourdomain.com till den nya IP-adressen, t.ex. 59.234.124.118.

Här är en handledning för att konfigurera DNS A-poster, men din domänregistrator har sannolikt en guide också.

Vänta tills din DNS ändrar propagera (ibland upp till 24 timmar eller mer - kolla dem här), försök ansluta via SSH med din domän:

ssh -i ./wordpress.pem [email protected]

Under tiden bör du kunna fortsätta att konfigurera andra delar av din webbplats.

Säkra din instans

Medan AWS har sin egen brandvägg finns det fortfarande saker du kan göra för att minimera säkerhetsrisker. Här är tre saker jag rekommenderar:

  1. Skapa ett alternativt användarkonto till standard root (ubuntu) inloggning
  2. Stäng av SSH Access for Default root (ubuntu) Konto
  3. Ändra standardporten som används för SSH från 22

Varning: Var vänlig följ dessa anvisningar. Att avvika något från dessa steg kan skapa problem - även om din instans blir otillgänglig.

1. Skapa ett alternativt användarkonto

Vi lägger till en användare med namnet "hal". Byt ut "hal" med ditt önskade användarnamn i följande exempel:

sudo adduser hal

Lägg till din nya användare i administratorgruppen:

sudo adduser hal admin

Lägg till din nya användare i sudoersgruppen. Redigera sudoers-filen:

sudo nano / etc / sudoers

Lägg till den här raden i sudoers-filen, i avsnittet Användarbehörigheter:

Hall ALL = (ALL) NOPASSWD: ALL

Nu skapar vi nycklar för den här användaren så att de kan logga in på AWS. Byt till den nya användaren:

su hal

Byt till hemkatalogen för den här användaren:

cd / hem / hal

Skapa en SSH-katalog och ange behörigheter:

mkdir .ssh chmod 700 .ssh

Skapa ett nytt nyckelpar:

cd .ssh ssh-keygen -b 1024 -f id_hal -t dsa

Lägg till den offentliga nyckeln till authorized_keys-filen:

katt ~ / .ssh / id_hal * .pub> ~ / .ssh / authorized_keys

Ange behörigheter:

chmod 600 ~ / .ssh / *

Flytta den privata nyckeln till en tempmapp för nedladdning till din dator:

cp ~ / .ssh / * / tmp chmod 644 / tmp / *

Redigera SSH-konfigurationsfilen för att lägga till den nya användaren:

sudo nano / etc / ssh / sshd_config

Lägg till det nya halkontot i fältet AllowUsers (eller skapa raden om det inte finns):

TillåtUsers ubuntu hal

Starta om tjänsten igen

sudo service ssh omstart

Byt nu tillbaka till din lokala dator med Terminal. Hämta den nya nyckeln från din dator med ditt ubuntu-konto:

scp -i ~ / .ssh / wordpress.pem [email protected]: / tmp / * ~ / .ssh

Fortsätt med dessa steg på din lokala dator. Ange behörigheter och test:

cd ~ / .ssh chmod 400 id_hal ssh -i .ssh / id_hal [email protected]

Om du stöter på några fel kan du försöka återvända till serverns förekomst och titta på inloggningen medan du försöker logga in:

svans -f /var/log/auth.log

På fjärrserverinstansen, ta bort nyckelfilerna från tmp-katalogen:

rm-rf / tmp / *

2. Stäng av SSH-åtkomst för standardrotskonto

Redigera SSH-konfigurationsfilen igen:

sudo nano / etc / ssh / sshd_config

Ta bort ubuntu-kontot från fältet AllowUsers:

Tillåt användaren hal

Se till att PermitRootLogin är inställd på nej eller utan lösenord, det senare kräver att logga in med en nyckel:

PermitRootLogin utan lösenord

Starta om ssh-tjänsten

sudo service ssh omstart

Om du stöter på svårigheter kan du också gå tillbaka för att logga in genom AWS-konsolens exempellista.

3. Ändra standardporten som används för SSH från 22

Eftersom hackare regelbundet letar efter SSH-åtkomst på port 22 är det bäst att använda ett helt annat portnummer för att konfigurera och behålla din server.

Redigera SSH-konfigurationsfilen igen:

sudo nano / etc / ssh / sshd_config

Ändra portlinjen till ett annat portnummer, t.ex. 33322:

# Vilka portar, IP-adresser och protokoll vi lyssnar på Port 33322

Återgå till AWS-konsolen och redigera säkerhetsgruppen. Lägg till porten # som du valde t.ex. 33322. Ta bort port 22. Se till att klicka på Apply Apply-knappen (inte bilden); Det ligger under rutan Lägg till regel.

Starta om tjänsten igen:

sudo service ssh omstart

När du ansluter via SSH måste du använda -p 33322 (eller din valda port)

ssh -p 33322 -i .ssh / id_hal [email protected]

Det finns ännu mer avancerade tekniker för att dölja din SSH-inloggning. t.ex. Port knackar. Men se till att du vet vad du gör, jag har haft ledsna användare maila mig efter att de har låst sig ur sin egen server.

Installera WordPress

Det är dags för den roliga delen att installera open source-versionen av WordPress. Fullständiga instruktioner tillhandahålls mer detaljerat på WordPress 'Codex.

Uppgradera till den senaste Ubuntu-distributionen och dess paket:

sudo apt-get dist-uppgradering

Skapa en www-katalog med behörigheter för Apache-webbservern:

sudo mkdir / var / www sudo chown www-data: www-data / var / www cd / var / www

Hämta den senaste versionen av WordPress, expandera arkivet och sätt behörigheter:

sudo wget http://wordpress.org/latest.tar.gz sudo tar -xzvf latest.tar.gz sudo chown -R www-data: www-data wordpress

Installera MySQL Server

Installera MySQL Server-paketet:

sudo apt-get installera mysql-server

Du kommer att bli ombedd att ange ett användarnamn och lösenord. Notera dina val för användning under installationsprocessen.

Konfigurera MySQL-databasen. Ändra användarnamn och lösenord nedan till vad du valde under installationen:

mysql -u root -p skapa databas wordpress; bevilja alla privilegier på wordpress. * Till "ditt-mysql-användarnamn" @ "localhost" identifierat av "ditt-mysql-lösenord"; spola privilegier; utgång;

Senare vill du granska säkerställandet av din MySQL-server. Jag har en kort sammanfattning på min sida här.

Konfigurera din WordPress Apache-webbplats

Om du inte väljer en Amazon AWS AMI som förinstallerad Apache, kan du behöva installera den nu:

sudo apt-get installera php5 libapache2-mod-php5 libapache2-mod-auth-mysql php5-mysql

Nu är det dags att skapa en konfigurationsfil för din Apache-server för att vara värd för WordPress:

cd / etc / apache2 / sites-available

Låt oss skapa en ny fil att redigera. Obs! I nya versioner av Ubuntu 14.04 ska webbplatsens konfigurationsfil sluta i .conf. Om filen bara kallas wordpress som i tidigare versioner av denna handledning, fungerar a2ensite nedan inte.

sudo nano wordpress.conf

Klistra in i provplatsfilen nedan och var noga med att ersätta namngivningskonventionen för ditt domännamn:

 ServerName YOURDOMAIN.COM DocumentRoot / var / www / wordpress DirectoryIndex index.php  TillåtOverride All Order Förneka, Tillåt Tillåt från alla  

Berätta Apache för att aktivera webbplatsen och ladda om:

sudo a2ensite wordpress sudo service apache2 omstart

Konfigurera WordPress

Nu är vi redo att berätta för WordPress om databasen och din blogg. Först ändrar vi tillfälligt behörigheterna i din wordpress-katalog:

cd / var / www sudo chmod-R 777 wordpress

Öppna en webbläsare och navigera till ditt domännamn t.ex. http://yourdomain.com.

Fyll i databasinformationen som WordPress begär med dina val ovan. Processen kommer att se ut så här:

Låt oss nu låsa ned behörigheterna för WordPress-installationen för säkerhet:

sudo hitta / var / www / wordpress / -type d -exec chmod 755  \; sudo hitta / var / www / wordpress / -type f -exec chmod 644  \;

Låt oss också göra manuella uppdateringar till wp-config.php-filen:

sudo nano /var/www/wordpress/wp-config.php

Lägg till följande konfigurationslinjer över stoppredigeringsraden:

definiera ('FS_METHOD', 'direkt'); // för automatisk plugin installation / * Det är allt, sluta redigera! Glad bloggning. * /

Försök logga in i WordPress Administration-systemet. Besök http://yourdomain.com/wp-admin och ange användarnamnet och lösenordet du valde under installationsprocessen.

Du bör se WordPress Dashboard, som nedan:

Bra jobb och grattis till din nya WordPress-installation!

Håller WordPress igång i en mikroinstans

WordPress, dess plugins och Apache tillsammans kan stöta upp nära gränserna för AWS Micro-instansminne. Starta om din instans en gång efter denna handledning och övervaka hur mycket minne du använder. Från Terminal, SSH in och gör:

sudo omstart

Eller du kan starta om från EC2 Dashboard enligt bilden nedan. Se menyn Åtgärder. Övervaka aktiviteten på din instans med gratis eller överst:

fri

Eller använd toppen. Att skriva 'q' kommer att gå överst.

topp

Prova att besöka olika sidor på ditt WordPress-webbplats och se hur det påverkar minnesanvändningen. Prova med att komma åt sidor från mobilen och surfplattan. Om du använder en Amazon Micro-instans, är det troligt att du måste konfigurera en swap-fil på EBS för att förhindra att din instans kraschar.

Konfigurera en SWAP-fil

Medan det är lätt att installera, finns det en liten risk att drabbas av obegränsade bandbreddsavgifter för internet - så var noga med att övervaka din webbplats och ställa in faktureringsalar som beskrivs på min webbplats här. Jag har aldrig haft några problem med det här - men folk varnar för det.

När du har skapat en swap-fil bör din mikroinstans vara stabil.

sudo dd om = / dev / noll av = / swapfile bs = 1M count = 1024 sudo mkswap / swapfil sudo swapon / swapfile

Nu, för att göra swapfilen ihållande över omstart, redigerar du fstab-filen:

sudo nano / etc / fstab

Lägg till den här raden:

/ swapfile swap swap default 0 0

Verifiera att byt filen är aktiv genom att skriva:

fri

Det borde visa något som:

Byt: 1048572 0 1048572

Andra saker att tänka på

Du är nu en systemadministratör som kör din egen WordPress-webbplats. Grymt bra. Men du är nu ansvarig för många saker som typiskt hanteras av ett värdföretag.

Det finns ingen shaming i återvändande till hanterad hosting. Om du känner att du har kommit över huvudet, känner du dig fri att dra sig tillbaka till WordPress.com eller en annan värd. Vi fattar alla beslut där vi spenderar vår tid - och hanterad hosting är en rimlig. När du har förpliktat dig att köra din egen webbplats, kommer det att ta mer tid att behålla det som kommer att migrera till hanterad hosting senare. Så var uppmärksam på detta.

säkerhet

Det är viktigt att du loggar in regelbundet i din förekomst och uppdaterar säkerhetspaket. När du loggar in rapporterar Ubuntu något som: "35 paket kan uppdateras. 22 uppdateringar är säkerhetsuppdateringar." Använd följande kommando för att uppdatera systemet:

sudo apt-get uppgradering

Den senaste hjärtinfarkta är ett försiktigt exempel på de slags sårbarheter som behöver patchas från tid till annan. Om du inte håller ditt Linux-system uppdaterat kan det hända att personer kan hacka din webbplats.

Att hålla sig till WordPress-uppdateringar är lika viktigt. De senaste versionerna av WordPress är konfigurerade för att varna dig för nya uppgraderingar.

Säkerhetskopior

Ingen säkerhetskopierar din WordPress-webbplats. Du måste välja hur man gör det här. Du kan manuellt komma ihåg att skapa en AWS-snapshot av din förekomst via AWS-gränssnittet. Om du söker online kan du hitta skript för att anpassa det som gör det från din Linux-instans. I grund och botten behöver du säkerhetskopiera WordPress-katalogstrukturen (med dina teman, plugins och bilder), MySQL-databasen som lagras i Linux-filsystemet samt din Apache-konfigurationsfil.

Ett annat tillvägagångssätt som fungerar bra är en tjänst som VaultPress, som ägs av WordPress moderbolag Automattic. Det finns också WordPress-plugins som du kan köpa för att köra säkerhetskopior till andra lagringstjänster, inklusive Amazons S3-lagringssystem.

Kontaktformulär

WordPress-kontaktformulär kräver att du kör din egen e-postserver för att kunna skicka e-postmeddelanden till dig. Att köra Postfix-postserver är ganska komplicerat och har egna skalor och säkerhetsrisker. Istället gillar jag att kombinera något som kontaktformuläret 7 plugin med Mailgun WordPress plugin. Det finns en del inställningar men det är gratis för de flesta användningsområden och fungerar felfritt.

Övervakningslösningar

Du är också ansvarig för att hantera serverns upptid. Så, du behöver en övervakningstjänst för att berätta när Amazon-fall går ner. Och de gör - sällan, men det händer. En betald tjänst som ScoutApp.com eller min egen självhävd Simple Monitor är bra lösningar. Om du själv är värd för din övervakning är det viktigt att köra det i en annan instans eller åtminstone aktivera hjärtslag i ett frekvent intervall t.ex. 2 timmar Om förekomsten av övervakningen misslyckas, kommer du inte veta förrän du märker att du inte fick den sista hjärtatslaget.

sökmotoroptimering

Detta är ett långt ämne som vi inte kommer att ta upp helt här. Jag har skrivit mer om detta ämne på min egen sida. Utförandet av din webbplats påverkar också din rankning av sökmotorn.

Så det är dags att bygga grunden för super snabb prestanda med Lack Cache och W3 Total Cache.