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.
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.
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.
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:
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.
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 / *
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.
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.
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-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.
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
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!
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.
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
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.
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.
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.
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.
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.
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.