Nginx, WP 3.0 MU

WordPress 3.0 MU (subdomäner)+ Nginx

by J.Backlund on 25/05/2010

in Linux,Wordpress

I WordPress 3.0 är MU integrerat och är mycket lätt att aktivera och går såklart även att köra med Nginx som webbserver. Det krångliga är att få till de rewrite rules som krävs för att Nginx och WordPress 3.0 MU skall fungera.

Nedan så finner du den viktiga delen som du behöver lägga till i din konfigurationsfil för den domän du kör WordPress 3.0 MU i. I exemplet nedan gäller konfigurationsfilen för min domän helikopterpilot.se där root-katalogen för installationen är /var/www/helikopterpilot.se/web:

server {
	listen   80;
	server_name  helikopterpilot.se *.helikopterpilot.se;
	access_log  /var/www/helikopterpilot.se/log/access.log;

location /
	{
	root   /var/www/helikopterpilot.se/web;
	index  index.html index.php;
	if (!-e $request_filename) {
	       rewrite ^.+/?(/wp-.*) $1 last;
	       rewrite ^.+/?(/.*.php)$ $1 last;
	       rewrite ^(.+)$ /index.php?q=$1 last;
	       }
	}

location ~* ^.+.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$
	{
	root	/var/www/helikopterpilot.se/web;
	rewrite ^/.*(/wp-.*/.*.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ $1 last;
	rewrite ^.*/files/(.*(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ /wp-includes/ms-files.php?file=$1 last;
	expires 30d;
	break;
	}
}

Det du måste ändra är alltså root-katalogen för just din installation och parametern server_name till den domän du använder. När du uppdaterat din konfigurationsfil så kör följande kommando för att verkställa de nya inställningarna:

nginx -reload

Nu skall du kunna kör WordPress 3.0 MU med Nginx och använda subdomäner till de olika bloggarna i din WordPress installation.

Notera dock att du måste peka om alla subdomäner med ett wildcard för det domännamn du vill använda till servern där du kör Nginx med WordPress 3.0 MU samt att du bör köra version 0.7.65 eller högre för att allt ska fungera.

Stöter du på problem så skriv en kommentar nedan!

{ 0 comments }

Nginx i Debian

Testa konfigurationsfil Nginx

by J.Backlund on 24/05/2010

in Linux

Innan man laddar in konfigurationsfilen och kör Nginx är det bra att testa konfigurationsfilen för att se om den är ok och inte innehåller några fel.

Har du gjort ändringar i din konfigurationsfil (nginx.conf) så bör du testköra dina nya inställningar innan du startar om Nginx med de nya inställningarna. Du gör det enkelt med detta kommando:

nginx -t

Med alternativet “-t” väljer du alltså att testa konfigurationsfilen som är lokaliserad i din standarsökväg för nginx.conf. Jag anser dock att det inte är önskvärt att redigera den konfigurationsfil som för tillfället körs utan jag skapar istället en kopia av nginx.conf som jag redigerar. Kopian döper jag till nginx.conf.ny och kör följande kommando då filen ligger i /etc/nginx/:

nginx -t -c /etc/nginx/nginx.conf.ny

Nu testas istället den specifika konfigurationsfilen jag angett efter alternativet “-c“.

Det finns även andra alternativ du kan använda dig av för att kontrollera Nginx, till exempel så används följande alternativ när du vill se version av Nginx och vilka moduler som Nginx är kompilerade med:

nginx -V

Som jag skrev i ett tidigare inlägg så ångrar jag inte en sekund att jag bytt från Apache till Nginx. Nginx är mycket snabbare än Apache på att skicka ut statiskt innehåll och kräver inte alls lika mycket resurser.

{ 0 comments }

Nginx

Debian + Nginx + FastCGI + PHP5 + MySQL

by J.Backlund on 16/05/2010

in Linux

Sedan några dagar tillbaka har jag gått över från Apache2 till Nginx (Engine-X) som är ett riktigt bra alternativ. Nginx är en otroligt resursnål webbserver och är dessutom mycket snabb jämfört med Apache när det gäller statiskt innehåll. Till mina hemsidor använder jag mig av WordPress, därför behöver jag köra PHP och MySQL.

På min server (VPS) kör jag Debian 5 Lenny och det är egentligen inga större svårigheter att komma igång med Nginx och köra PHP med FastCGI med en MySQL-server. Nginx blir populärare för varje dag som går tack vare dess driftsäkerhet, snabbhet och låga resursbehov. Nginx är som sagt även lätt att konfigurera och den dokumentation som finns är lätt att förstå.

Nedan tänkte jag i några steg beskriva hur du går tillväga för att komma igång med Nginx, FastCGI, PHP5 och MySQL5 på en server med Debian 5 Lenny.

Steg 1 – Installera MySQL 5

Börja med att köra följande kommando för att installera MySQL 5:

apt-get install mysql-server mysql-client

Under installationen kommer du få ange ett lösenord för root-användaren på din server.

New password for the MySQL "root" user: <--- ange_ditt_lösenord
Repeat password for the MySQL "root" user: <--- ange_ditt_lösenord

Steg 2 – Installera Nginx

Nginx finns som färdigt paket och installeras med följande kommando:

apt-get install Nginx

Efter installationen, starta nginx med följande kommando:

/etc/init.d/nginx start

För att bekräfta att Nginx körs kan du nu öppna din webbläsare och surfa in på din ip-adress. Du bör nu mötas av en sida med texten “Welcome to nginx!

Steg 3 – Installera PHP5

För att köra PHP med Nginx använder vi oss av FastCGI, dessa processer startas inte upp automatiskt av Nginx utan vi måste själva göra ett script som startar upp några processer av FastCGI. För att kunna  köra PHP och MySQL med Nginx skall du installera följande paket med detta kommando:

apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Efter installationen, öppna /etc/php5/cgi/php.ini och lägg till följande linje i slutet av filen, cgi.fix_pathinfo = 1.

Du öppnar filen med följande kommando:

nano /etc/php5/cgi/php.ini

Filen skall se ut enligt följande:

[...]
cgi.fix_pathinfo = 1

För att starta upp processer av FastCGI måste vi nu skapa ett script enligt följande:

#!/bin/bash
BIND=127.0.0.1:9000
USER=www-data
PHP_FCGI_CHILDREN=15
PHP_FCGI_MAX_REQUESTS=1000

PHP_CGI=/usr/bin/php-cgi
PHP_CGI_NAME=`basename $PHP_CGI`
PHP_CGI_ARGS="- USER=$USER PATH=/usr/bin PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS $PHP_CGI -b $BIND"
RETVAL=0

start() {
      echo -n "Starting PHP FastCGI: "
      start-stop-daemon --quiet --start --background --chuid "$USER" --exec /usr/bin/env -- $PHP_CGI_ARGS
      RETVAL=$?
      echo "$PHP_CGI_NAME."
}
stop() {
      echo -n "Stopping PHP FastCGI: "
      killall -q -w -u $USER $PHP_CGI
      RETVAL=$?
      echo "$PHP_CGI_NAME."
}

case "$1" in
    start)
      start
  ;;
    stop)
      stop
  ;;
    restart)
      stop
      start
  ;;
    *)
      echo "Usage: php-fastcgi {start|stop|restart}"
      exit 1
  ;;
esac
exit $RETVAL

Detta script startar upp 15 FastCGI-processer med användaren www-data på 127.0.0.1:9000. Scriptet skall sparas till /etc/init.d/php-fcgi.

För att göra detta, kör följande kommando:

nano /etc/init.d/php-fcgi

Klistra nu in scriptet och avsluta redigeraren med ctrl + x, tryck “y” för att spara, sedan “enter“. Du måste även göra skriptet körbart:

chmod +x /etc/init.d/php-fastcgi

Installera nu scriptet så att det körs när du startar din server:

update-rc.d php-fcgi defaults

Steg 4 – Konfigurera Nginx

Du hittar konfigurationsfilen för Nginx på /etc/nginx/nginx.conf och vi öppnar den med följande kommando:

nano /etc/nginx/nginx.conf

Följande värden kan vara intressanta att ändra:

[...]
worker_processes  5;
[...]
keepalive_timeout   60;
[...]
server_names_hash_bucket_size 128;
[...]

Enligt Nginxs dokumentation bör du köra en process per kärna, i mitt fall 5. Timeout för keep alive har jag valt till 60 (Läs kommentaren efter artikeln som Emil har lämnat, tack!). Default för server_names_hash_bucket_size kan vara för lågt om du använder dig av virutal hosts och nginx kommer i det fallet inte att starta, därför har jag valt värdet 128.

Du kan konfigurera virtual hosts genom att lägga till fler konfigurationsfiler i /etc/nginx/sites-available/ och sedan göra symboliska länkar till dessa i /etc/nginx/sites-enabled/. Exempel på en konfigurationsfil är:

server {
	listen   80;
	server_name  exempel.se www.exempel.se;

	access_log  /var/log/nginx/localhost.access.log;

	location / {
		root   /var/www/nginx-default;
		index  index.html index.php;
	}

	# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
	#
	location ~ .php$ {
                fastcgi_pass   127.0.0.1:9000;
		fastcgi_param  SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
		fastcgi_index  index.php;
                include        fastcgi_params;
	}
}

Förserver_name anger du din domän(er) med subdomäner som du vill koppla till den konfigurationsfilen. I location anger du med root sökvägen till din virtual host och med index vilka filtyper som skall öppnas som default då URL:en avslutas med ett “/”.

För att köra PHP måste vi ange att alla PHP-filer skall köras med FastCGI varav vissa parametrar för detta måste anges. I exemplet skickas PHP-scripts till FastCGI-servern på 127.0.0.1:9000. Vi inkluderar även konfigurationsfilen “fastcgi_params”.

När du gjort dina önskade förändringar så starta om nginx:

/etc/init.d/nginx restart

För att kontrollera att PHP fungerar som det skall så skapa en PHP-fil för att köra phpinfo().

nano /var/www/nginx-default/info.php

Skriv in följande men börja med “<” och avsluta med “>”:

?php
phpinfo();
?

Gå nu till din ip-adress/serverdomän och öppna info.php, http://exempel.se/info.php. Du bör nu kunna se PHP-info och allt bör fungera som det ska!

Det är säker mycket som är oklart efter denna genomgång så ställ frågor så ska vi nog kunna lösa ditt problem om det uppstår något.

{ 4 comments }

Inaktivitet på bloggen

June 18, 2009
Thumbnail image for Inaktivitet på bloggen

Senaste veckan har det varit riktigt dåligt med nya inlägg här på bloggen vilket beror på att jag har haft mycket annat runt omkring som har tagit tid. Bland annat har jag tagit examen på högskola. Det har som sagt inte hänt så mycket här på bloggen, men nu är det snart semester och jag [...]

Read the full article →

Skaffa en Gravatar

June 14, 2009
Thumbnail image for Skaffa en Gravatar

En Gravatar är en liten bild som är kopplad till din mailadress som visas då du skriver kommentarer på olika bloggar. Skaffa en egen Gravatar helt gratis. Som jag skrev så är en Gravatar en liten bild eller ikon som är kopplad till din mailadress som visas till exempel på bloggar då du kommenterar inlägg. [...]

Read the full article →

Blogg-guiden är här

June 13, 2009
Thumbnail image for Blogg-guiden är här

I veckan så fick jag Blogg-guiden levererad till min brevlåda. 130 sidor med mycket bra information om hur du skall lyckas med din blogg och även kunna tjäna lite pengar på den. Som jag skrivit tidigare så är Blogg-guiden skriven av Tommy k Johansson som driver Sveriges största IT-blogg. Med den erfarenhet han har fått [...]

Read the full article →

WordPress 2.7 –> 2.8 Baker

June 12, 2009
Thumbnail image for WordPress 2.7 –> 2.8 Baker

I veckan så kom WordPress 2.8 och uppdateringen från 2.7 gick på några sekunder utan några problem! Flera buggar är fixade och hela CMS-verktyget har blivit snabbare och bättre med avseende på många punkter. Jag har precis uppdaterat WordPress från version 2.7 till version 2.8. Hela förfarandet gick otroligt smidigt och snabbt och utan några [...]

Read the full article →

Tjäna pengar med Google AdSense

June 7, 2009
Thumbnail image for Tjäna pengar med Google AdSense

Har du redan en blogg idag är det väldigt lätt att komma igång med Google AdSense som möjliggör att du kan börja tjäna pengar på din blogg. Det är bara att registrera ett konto hos Google och börja visa reklam! Google AdSense är nog den vanligaste och enklaste reklamformen på internet för hemsidor och bloggar. [...]

Read the full article →

WordPress 2.8 – 10:e juni

June 6, 2009
Thumbnail image for WordPress 2.8 – 10:e juni

Nu är det snart dags för release av WordPress 2.8. Det är på onsdag den 10:e juni vi kommer kunna uppdatera våra WordPress-drivna bloggar. I mitten av maj släpptes de första kandidaterna av version 2.8 till de nyfikna användarna som då kunde ge feedback på buggar och andra problem. Med denna hjälpen har nu WordPress.org [...]

Read the full article →

WordPress i din iPhone/iPod Touch

June 5, 2009
Thumbnail image for WordPress i din iPhone/iPod Touch

Bloggar du med WordPress och har en iPhone eller en iPod Touch kan du nu blogga direkt från din mobiltelefon med WordPress-applikationen till iPhone/iPod Touch. Riktigt smidigt när du är på resande fot utan dator! Det är inte alltid man har datorn med sig vilket gör det svårt att blogga… om man inte har en [...]

Read the full article →

Blogg-guiden

June 4, 2009
Thumbnail image for Blogg-guiden

Blogg-guiden är en tidning som riktar sig till alla som bloggar eller vill börja blogga. Tidningen är nu tryckt och beställer du den nu bör du ha den inom en vecka! Jag skrev några veckor sedan om Blogg-guiden och jag beställde även ett exemplar som snart bör trilla ner i min brevlåda. Den tar upp tips [...]

Read the full article →