NGINX

Installera NGINX PHP och WordPress i Ubuntu 12.10

1. Börja med att uppdatera och uppgradera din server. Om du får frågor här så är det bara att välja standardalternativet.

# apt-get update && apt-get -y upgrade

2. Sen installerar vi lite saker som våra programvaror (främst PHP) är beroende utav. Denna lista går säkert att korta ner.

# apt-get -y install make bison flex gcc patch autoconf subversion locate unzip
# apt-get -y install build-essential libtool libpcrecpp0 libpcre3-dev libxml2-dev libmysqlclient16-dev libcurl4-openssl-dev libfreetype6-dev libgd2-xpm-dev libpng12-dev libmcrypt-dev libmhash-dev libpspell-dev libming-dev libmm-dev libtidy-dev libxslt1-dev libevent-dev libc-client-dev autoconf2.13

3. Därefter installerar vi PHP med ett gäng olika tillägg. De viktigaste i sammanhanget är tilläggen för PHP-FPM och Xcache

# apt-get -y install php5 php5-cgi php5-cli php5-common php5-curl php5-fpm php5-gd php5-imap php5-mcrypt php5-mhash php5-mysql php5-pspell php5-remctl php5-sqlite php5-suhosin php5-svn php5-tidy php5-xcache php5-xmlrpc php5-xsl php-pear
# /etc/init.d/php5-fpm stop

4. Sedan installerar vi den ryska webbservern Nginx.

# apt-get install nginx
# /etc/init.d/nginx stop

5. Till slut så konfigurerar vi lite småsaker på servern, främst relaterade till Nginx/PHP.

# cd /etc/nginx
# mv fastcgi_params fastcgi_params.old
# nano fastcgi_params

Lägg in följande innehåll:


fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $http_x_forwarded_for;
fastcgi_param HTTP_X_FORWARDED_FOR $http_x_forwarded_for;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param REDIRECT_STATUS 200;

fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 32k;
fastcgi_buffers 32 32k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;

I samma mapp skapar vi även en fil som hanterar omskrivningar för WordPress, både med och utan WP Super Cache.

# nano wordpress_params.supercache

Lägg in följande innehåll:


if (-f $request_filename) {
break;
}
set $supercache_file '';
set $supercache_uri $request_uri;

if ($request_method = POST) {
set $supercache_uri '';
}
if ($query_string) {
set $supercache_uri '';
}
if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) {
set $supercache_uri '';
}
if ($supercache_uri ~ ^(.+)$) {
set $supercache_file /wp-content/cache/supercache/$http_host/$1index.html;
}
if (-f $document_root$supercache_file) {
rewrite ^(.*)$ $supercache_file break;
}
if (!-e $request_filename) {
rewrite ^.+?(/wp-.*) $1 last;
rewrite ^.+?(/.*.php)$ $1 last;
rewrite ^ /index.php last;
}
error_page 404 = //index.php?q=$uri;

Till sist så startar vi även tjänsterna för Nginx och PHP-FPM.

# /etc/init.d/nginx start
# /etc/init.d/php5-fpm start

Nu är serverinstallationen klar (men som sagt, glöm inte att säkra upp allt ordentligt).

Här är alla kommandon för att stoppa, starta och starta om tjänsterna på servern:

# /etc/init.d/nginx stop
# /etc/init.d/nginx start
# /etc/init.d/nginx restart
# /etc/init.d/php5-fpm stop
# /etc/init.d/php5-fpm start
# /etc/init.d/php5-fpm restart

Lägg upp en sajt på din blixtsnabba WordPress-server

Nu ska vi sätta upp en sajt på servern. Det är blir en egen ”virtual host”, som kör med en egen användare (till skillnad från t ex WordPress Multi-Site, där vi har en gemensam användare/virtual host för alla sajter). Detta underlättar vid felsökning, kvotahantering och bidrar även till ökad säkerhet.

1. Börja med att skapa en användare och en databas. Jag använder anvnamn_se som namn på användaren och anvnamn.se som domän på sajten.

# adduser anvnamn_se

2. Nu sätter vi upp en PHP-konfiguration för sajten.

# cd /etc/php5/fpm/pool.d/
# mv www.conf ../
# nano anvnamn.se.conf

Lägg in följande innehåll:


[anvnamn.se]
listen = 127.0.0.1:9000
listen.backlog = -1
listen.owner = anvnamn_se
listen.group = anvnamn_se
listen.mode = 0666
user = anvnamn_se
group = anvnamn_se
pm = dynamic
pm.max_children = 10
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 2
pm.max_requests = 50
request_slowlog_timeout = 60s
slowlog = /var/log/php-fpm.log.slow

Det här är en rätt så sparsmakad och resurssnål konfiguration. Du bör verkligen läsa kommentarerna i www.conf för mer info.

Om du t ex vill lägga till ytterligare sajter, efter denna, så måste du välja en annan port för listen, t ex från 9000 till 9001. Detta måste även synkas med konfigurationen av Nginx (här nedan). Om du vill öka kapaciteten på sajten (ta emot fler samtidiga besökare) så kan du skruva upp antalet servrar.

3. Konfigurera Nginx för din sajt

# cd /etc/nginx/sites-enabled
# nano anvnamn.se

Lägg in följande innehåll:


server {
listen 80;
server_name anvnamn.se *.anvnamn.se;
server_name_in_redirect off;
client_max_body_size 64M;
access_log /home/anvnamn_se/anvnamn.se/logs/access.log;
error_log /home/anvnamn_se/anvnamn.se/logs/error.log;

location / {
root /home/anvnamn_se/anvnamn.se;
index index.php;
rewrite ^.*/files/(.*) /wp-includes/ms-files.php?file=$1 last;
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php?q=$1 last;
}
}

location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/anvnamn_se/anvnamn.se/$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}

4. Allra sist hämtar vi ner och installerar WordPress.

# mkdir /home/anvnamn_se/anvnamn.se && cd /home/anvnamn_se/anvnamn.se
# svn co http://core.svn.wordpress.org/tags/3.5.1/ .
# mkdir wp-content/languages && cd wp-content/languages/
# wget http://svn.automattic.com/wordpress-i18n/sv_SE/tags/3.5.1/messages/sv_SE.mo
# cd -
# mkdir logs
# mv wp-config-sample.php wp-config.php
# nano wp-config.php

Ange dina databasuppgifter och spara filen. För att aktivera det svenska språkstödet, uppdatera följande variabel:

define ('WPLANG', 'sv_SE');

Till sist sätter vi rätt ägare på WordPress-installationen.

# cd /home/anvnamn_se
# chown -Rf anvnamn_se:anvnamn_se *

Därefter är det bara att starta om Nginx och PHP-FPM (se kommandon ovan). Sen kan du surfa in på sidan (förutsatt att domänen pekar till din server) och köra igång med din blixtsnabba WordPress-server.

Nästa steg – Installera SSL Certifikat