Andreas Bergman

Icon

Förhindra exekvering av PHP i en mapp

För att förhindra att PHP-filer i en mapp kan exekveras av Apache2s mod_php, lägg till följande i .htaccess

<Directory />
php_admin_flag engine off
</Directory>

Där sökvägen motsvarar sökvägen till mappen du vill förhindra exekvering i.

Apache2 och IPv6

Att idag ha en webbserver som bara lyssnar på IPv6 är rent ut sagt korkat, för alldeles för få människor surfar i Ipv6 rymden. Dock så tycker jag att det är var mans skyldighet att stöjda IPv6 i sina tjänster, så därför bör din server lyssna både på IPv4 och IPv6.

För att uppnå detta i Apache2 så måste man skriva två olika Vhostar, en för IPv4 och en för IPv6, där den enda skillnaden är vilken adress vhosten lyssnar/binder på. Glöm inte att infoga IPv6 adressen i brackets.

Exempel:

<VirtualHost [2a02:750:5::5b2]>
ServerAdmin webmaster@example.com
ServerName www.example.com
ServerAlias example.com

Förhindra att resolv.conf skrivs över

För att förhindra att dhclient skriver över /etc/resolv.conf så lägger du till en fil i /etc/dhcp3/dhclient-enter-hooks.d/ i den filen skriver du:

make_resolv_conf() {
 echo "doing nothing to resolv.conf"
}

Sedan gör du dina ändringar i /etc/resolv.conf, startar du nu om dhclient eller servern så kommer ändringarna att sparas.


			

Förhindra att PHP-FPM sänker din server

Igår kväll hade jag problem med att en av våra servrar höll på att gå under, vi har nyligen satt igång ett ganska prestandakrävande script på maskinen, och av någon anledning så verkar det ha hängt sig. Eftersom jag inte är skaparen av scriptet så låter jag det förbli osagt varför.

För att förhindra att PHP-FPM sänker din server så finns det en inbyggd funktion för att sätta max_execution_time, PHP har en egen variabel för det i php.ini, men om den inte funkar så kommer FPM döda workern åt dig. Det finns också en fin funktion som loggar vilka phpscript som kör för länge, på så sätt kan man hålla utkik och enkelt felsöka sina applikationer.

request_terminate_timeout = 30m
; The timeout for serving a single request after which a PHP backtrace will be
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
request_slowlog_timeout = 5s

; The log file for slow requests
; Default Value: /var/log/php5-fpm.log.slow
slowlog = /var/log/php5-fpm.log.slow

Jag väljer att ha 30minuters gräns för hur länge ett script får lov att köra, och det loggas i php5-fpm.log.slow efter 5s, på så sätt får jag snabbt information om ifall det är något som gått snett. Glöm inte starta om php5-fpm för att ändringarna ska slå igenom.


			

Monocaffe – Anslutningshantering i stil med mRemote

Om ni som jag ofta kopplar upp er mot olika servrar, via olika protokoll, så blir det snabbt jobbigt att hålla servernamn och protokoll i huvudet, plus att det kommer bli meckigt att byta mellan olika fönster hela tiden, framförallt som RDP har en tendens att ta över hela ditt skrivbord.

För att råda bot på detta så tog man fram applikationen mRemote (http://www.mremote.org), dock så fungerar mRemote i dagsläget bara på windows och vi som kör linux är lämnade ut i kylan, typ.

Efter att ha googlat en stund så hittade jag Monocaffe, eller MCM. Monocaffe Connections Manager.Det tog en stund att får rätt på python depsen, men det beror främst på att jag är ny på Arch Linux så jag har ingen koll, inte så mycket på applikationen. MCM funkar både som konsoll, och som Xapplikation, det medföljer även en installationsfil så man får en fin menuoption i sin Gnome meny.

Rekomenderas starkt, och jag kommer garanterat att ha MCM i  snabbmenyn!

Datan gör inte företaget, men utan data försvinner företaget.

När jag säger “data” så menar jag inte en Dator, utan jag menar information, värden, säljsiffror, svar på kundundersökningar, det är data. Data är livsviktig för alla företag, egentligen för alla sorters organisationer, det kan vara medlemsregister, produktlistor eller något så enkelt som träningstider. Vi kan ta ett mer personligtexempel, tänk när du blir av med din mobiltelefon och måste börja knappa in alla nummer från början, det är jävligt tungt, men det är genomförbart. Tänk då att ett företags säljsiffror för ett helt år försvinner, tänk hur mycket det kommer kosta att samla in den datan igen, från kvitton, avtal eller liknande. Det kan vara ett gigantiskt jobb som kostar tokigt mycket pengar.

I ditt eget fall ska du vara glad om du har alla dina kontakter sparade i din Outlook, så du kan synka hem dem via exchange eller liknande.Riktigt så enkelt är det sällan för ett företag, då deras data för det mesta finns sparad på  servern som dog, det kan jämföras med att både din mobiltelefon blir stulen samtidigt som hela företagets exchange exploderar. Det känns enormt långsökt, men det KAN hända, och när det händer vill man inte stå där med fingrarna i gylfen och inte fatta något.

Därför är det enormt viktigt att göra regelbundna backuper på alla sina prylar. På min egen dator använder jag dropbox för att backupa mina filer, det låter mig även komma åt alla filer överallt där jag har internet. På jobbet så sparar vi vår data i databaser, och det virtuella servrarna backas av hostingbolaget. Men vad händer om jag av någon anledning vill göra en återläsning av en databas, för att någon gjort fel någonstans, eller av någon annan anledning? Har jag då ingen backup så är det kört. Dessutom så litar jag aldrig på att backupen görs av hostingbolaget, tänk om deras backupmaskiner strular?

Därför har jag i min jakt på att hitta ett skönt sätt att backupa mina databaser, funnit AutoMysqlBackup ett enkelt script som med mysqldump backar och roterar mina databaser en gång om dygnet. Nu kan jag sova relativt gott om nätterna! Scriptet är väldigt enkelt och straight forward, så jag tror du själv kan klura ut hur det funkar.

Behöver du serverbackup, så rekomenderar jag Danska DmSave de har byggt en grym tjänst ovanpå Tivoli Storage Manager.

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.

Använd Phpmyadmin mot flera databasservrar

Med phpmyadmin kan du utan problem administrera  flera servrar från en phpmyadmin installation, för att fixa de inställningarna gör du ändringar i konfigurationen för phpmyadmin och inte för mysql. Konfigurationen hittar du i rooten för phpmyadmin i filen config.inc.php.

Själva konfigurationen är väldigt enkel och består av en array, så det enda du behöver göra ät att kopiera och lägga in e värden du vill ha, nedan ser du min konfiguration för två maskiner. Sedan måste du konfigurera mysql för att acceptera anslutningar från andra maskiner än den som den är installerad på och eventuellt öppna rätt portar i brandväggen.

/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'host.se';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;

x86 64 eller x86

Jag behövde nyligen ta reda på om maskinen jag satt på var 64-bitars eller inte, detta av den enkla anledningen att jag planerar att testa HipHop för PHP på den. HipHop är i korthet ett sätt att konvertera PHP till c++ och sedan kompilera det och köra det som en standalone applikation, tanken bakom detta är att spara CPU då PHP är relativt prestandakrävande.

Hur som helst, för att ta reda på om maskinen är en 64 bitars eller 32 bitars så använder man sig av kommandot uname -a, och bör få en output som liknar den nedan.

Linux host.local 2.6.26-2-amd64 #1 SMP Tue Jan 12 22:12:20 UTC 2010 x86_64 GNU/Linux

I mitt fall var det således en 64 bitars maskin, vilket är perfekt, då hiphop än så länge bara funkar på 64 bitar. Om det inte framgår så är det x86_64 i slutet på raden som talar om vad det är för arkitektur.

Den här bloggen

skriver jag, Andreas Bergman, vilket i sig inte bör vara så förvånande. Jag driver en SMS tjänst och jobbar som tekniker/allt i allo på SEA där jag bland annat driftar en stor bloggportal och ett webbhotell. Vi håller även på att bygga ett datacenter.


Jag har några microsoft titlar, ett gäng DELL certifikat och jobbar dagligen med hårt belastade webbservrar. Utöver det jobbar jag också med virtualisering och server/storage. Någon gång ibland säljer jag även server och storagelösningar.

Maila mig gärna om något av ovan, eller annat, jag är ganska trevlig sägs det. andreas@abergman.se.