Ställa in klockan i Debian

Jag har under en längre tid haft problem med att klockan på mina servrar har gått fel , det har resulterat i att cronjobb inte gått när jag har tänkt mig och en massa annat irriterande. Men jag har inte riktigt haft ork  att fixa det förrän inatt. Min hårdvaruklocka går inte rätt den är inställd på en helt annan tidszon, men det gör inget för med ett enkelt handgrepp får jag klockan maskinen att gå rätt.

ln -sf /usr/share/zoneinfo/Europe/Stockholm /etc/localtime

Sådär, nu kommer klockan att stå rätt i din maskin, oavsett vad hrårdvaruklockan står på. För att vara säker på att alltid har rätt tid på maskinerna så låter jag dem köra ntpdate-debian en gång / dygn, det gjorde jag genom att helt enkelt lägga en fil med kommandot “ntpdate-debian” i /etc/cron.daily.

Man kan även sätta tidzoner för varje användare med hjälp av kommandot “tzselect”, men det slår bara på den aktuella sessionen och inte på hela maskinen.

Catch all-host och redirect

Ibland har man domäner på sin maskin som man inte använder, som man kanske vill parkera så länge eller så har man ibland flyttat den till en annan adress, till exempel i samband med att siten bytte namn. För att hantera detta på ett snyggt sätt och slippa duplicate content i sökmotorerna så kan man lägga en ‘redirect’ på domänen i fråga. En redirect är en HTTP-status kod som talar om för webbläsaren, sökmotorn etc hur de ska hantera sidan, om de ska gå vidare eller om de ska slå upp den. De två vanligaste HTTP-statuskoderna är 200 och 404.

404 betyder att innehållet man letar efter inte finns, man kanske försöker öppna en fil som inte finns eller liknande.
200 betyder helt enkelt att filen hittas och det är OK att slå upp/visa sidan.
300-serien indikerar att filen/siten har flyttats, tex så betyder 301 att den flyttat permanent och 302 att den flyttat temporärt och kommer att komma tillbaka.
500-serien indikerar att det är något som är fel på servern.

I mitt fall har vi en server där jag hanterar många olika domäner, dock så har servern själv ingen egen domän som är dess ‘primära’ utan en domän utan hemsida som bara är för managementsyfte. Dessutom så vill vi inte att min maskin ska visa blanka sidor eller säga att en site inte finns, så för att hantera det så har jag lagt en redirect med status 301 på en virtuell host som fångar alla domäner som inte är specificerade någon annanstans, exemplet hittade jag på Nginx Wiki: NginxVirtualHostExample.

server {
  server_name _;
  server_name_in_redirect  off;
  rewrite ^/(.*) http://www.ngweb.se/$1 permanent;
}

Den här Vhost konfigurationen tar alla anrop till servern till en domän som inte finns på maskinen och skickar dem till www.ngweb.se.

För att göra det tydligare så överväger jag att be David skriva en undersida som talar om att det är en domän som ägs av ngweb.se, så det blir riktigt tydligt.

Installera Nginx med PHP5

Nginx är en snabb och effektiv webbserver med många användningsområden, den kan agera som gateway, lastbalanserare mm.
Jag ska installera den tillsammans med PHP5-FPM och  konfigurera upp en standardwebbsite. Det här gör jag på en maskin som kör debian stable/Debian Lenny. Många använder fastcgi för att köra php, men det finns ett bättre sätt; PHP5-FPM.

Vi börjar med att lägga till Dotdeb som källa för apt, detta gör att debian ännu så länge inte har php5-fpm paketerat.

sudo echo "deb http://php53.dotdeb.org stable all" >> /etc/apt/sources.list

Uppdatera nu paketförråden med apt-get update och installera sedan Nginx och php5-cli.

apt-get install nginx php5-cli php5-common php5-suhosin

Installera därefter php5-fpm.

apt-get install php5-fpm php5-cgi

Nu ska vi konfigurera en Virtuell Host i Nginx som kommer att använda php5. Jag utgår från Nginx default/exempel konfig som finns i /etc/nginx/sites-available/default

server {
        listen   80;
        server_name  localhost;
      access_log  /var/log/nginx/localhost.access.log;
        error_log   /var/log/nginx/localhost.error.log debug;

            location / {
                root   /var/www/nginx-default;
                index  index.html;
             }
          location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name;
                include fastcgi_params;
            }
            location ~ /\.ht {
               deny  all;
            }

  }

Nu är det bara att skapa en fil i mappen /var/www/nginx/default med innehåller <?php phpinfo(); ?> och köra /etc/init.d/php5-fpm restart så ska det fungera och du bör se en text som liknar den nedan!

php5-fpm

 

Migrera webbsiter

Jag vill migrera webbsiter med en mysql databas till en annan server, båda två är linux maskiner. För att lösa det problemet skrev jag ihop ett litet snabbt script, som först frågar dig efter lite uppgifter om siten sedan dumpar ut databasen, packar ihop det till en .tar och till sist skickar över den till den andra maskinen med SCP där du manuellt får packa upp och installera den igen.

Glöm inte sätta körrättigheter på scriptet!

#!/bin/sh
#config
dbuser="changeme";
dbpass="changeme";
targetserver="change@me";
target="/change/me";
#Defines
echo "Sourcefolder with trailing slash: ";
read -e source
echo "Name on .tar archive:";

read -e tarname

echo "Databasename:";
read -e database

#dump database to sourcefolder
echo "Exporting database";
mysqldump -u$dbuser -p$dbpass $database > $source/$database.sql

#create archive
tar -cf $tarname $source*;

#send by scp to targetfolder
scp $tarname $targetserver:target