wordpress hosting - vpn - cloud - statistiekservice - email

Archief op juli 2012

Cyrus IMAP server

Cyrus IMAP server

verwijderen van een mailbox

In veel gevallen krijg je een permission denied error als je via cyradm als root of andere admingebruiker bent ingelogd. Probleem zit ‘m in de ACL op de mailbox die niet voldoende rechten heeft om de mailbox van een user te verwijderen.

In onderstaand voorbeeld zij we in ingelogd als root. De admins regel in /etc/imapd.conf ziet er dan zo uit:

  admins cyrus root

en willen de mailbox van de user piet verwijderen:

  cyradm --user root localhost
  sam user.piet root c
  dm user.piet

Noot: Na het aanpassen van /etc/imapd.conf moet met /etc/init.d/cyrus-imapd restart of service cyrus-imapd restart de Cyrus server worden herstart.

ssh tunnel

SSH tunnel als socks proxy

Het wil soms handig (of nodig) zijn om vanuit een al dan niet beveiligd netwerk naar internet te kunnen zonder restricties of monitoring van de data. Dat kan door een zgn. SSH tunnel te gebruiken. Zolang een SSH verbinding opgezet kan worden naar een server kan bijv. port 80 maar ook direct messaging worden getunneld over de SSH tunnel.

Een voordeel is dat bij monitoring er alleen versleuteld SSH verkeer te zien is, een veilig idee.

In onderstaand voorbeeld wordt via SSH een tunnel opgebouwd naar port 7070. Vervolgens kunnen web-applicaties zoals Safari, Firefox, Adium en andere programma’s geconfigureerd worden om via een zgn socks proxy op localhost op port 7070 naar internet te gaan.

ssh -D 7070 root@server.mydomain1.com

Er wordt om het wachtwoord van de betreffende user gevraagd, in dit voorbeeld dus ‘root’ en vervolgens kan de tunnel gebruikt worden om data over te sturen.

Indien OS-X gebruikt wordt kan dat worden geconfigureerd door via System Preferences → Network de in gebruik zijnde interface te kiezen en voor Advanced te kiezen. Kies vervolgens voor Proxy en kies de gewenste protocollen waarvoor je de tunnel wilt gebruiken. Bijvoorbeeld Web Proxy (HTTP) en vul bij Web Proxy Server 127.0.0.1 : 7070 in

svn

Alle files updaten van een SVN project: svn update

Overzicht van ingecheckte releases: svn log of makkelijker svn log|less of van een bepaalde file: svn log <filename> |less

Terug naar eerdere release: svn update -r<release> of alleen van een bepaalde file: svn update -r<release> <filename>

File toevoegen aan bestaand SVN project: svn add <filename> gevolgd door svn -m

LinuxPro servers klaar voor IPv6

Met ingang van juni 2012 zijn de servers van LinuxPro IPv6 ready en een aantal sites en diensten zijn inmiddels al via deze nieuwe manier van internetadressering bereikbaar. Dat zorgt ervoor dat nu en in de toekomst de beschikbaarheid is gegarandeerIPv6 readyd.

De huidige internetadressen die via IPv4 (nu nog het meest gebruikt) zijn in hoog tempo op aan het raken zijn. Ieder apparaat wat op een netwerk is aangesloten zoals pc’s, printers maar denk ook aan bijv. smartphones e.d. hebben een uniek netwerkadres nodig (ipadres). De nieuwe versie 6 van adressering kent zo veel mogelijke adressen dat deze voor de komende decennia voldoende capaciteit heeft om hier mee om te kunnen gaan.

configuratie

Virtual hosts

IPv6 en meerdere virtual hosts in nginx

Nginx is standaard al ipv6 ready maar bij het configuren van meerdere virtual hosts en ipv6 loop je soms tegen een foutmelding aan bij een (re)start van nginx: cannot bound.. enz. Dit is op te lossen door een virtual host als de default host te configureren en aan te geven op welke poort en ipadres geluisterd moet worden:

  server {
      listen 	     80;
      listen       [::]:80 default_server ipv6only=on;
      server_name  domain1.com www.domain1.com ;
      ....
      }

  server {
      listen 	     80;
      listen       [::]:80;
      server_name  domain2.com www.domain2.com ;
      ....
      }

Standaard catch-all virtual host

Om requests naar nginx af te vangen voor niet geconfigureerde domeinen kan een de onderstaande configuratie gebruikt worden. Zo kan een soort landingspagina gebruikt worden om dit soort requests op te vangen of automatisch worden doorverwezen naar een default host:

  http {
   index index.html;

  server {
     listen 80 default;
     server_name _;
     access_log logs/default.access.log main;
     server_name_in_redirect off;
     root  /var/www/html/htdocs/catchall;
    }
  }

Directory beveiligen met basic authentication

Nginx werkt niet zoals Apache met .htaccess files maar kan op een gelijksoortige manier die Apache ook kan middels de configuratie van een (virtual) host een directory met een password (basic authentication) beveiligen. Met de htpasswd util kan op dezelfde manier als voor apache file worden aangemaakt met een user en password. In dit voorbeeld wordt het bestand mypassword.txt aangemaakt in de directory /etc/nginx:

  htpasswd -c /etc/nginx/mypassword.txt piet

Als dit bestand er staat en we de directory /downloads willen beveiligen zodat alleen de user piet erbij kan:

  location /downloads {
      index  index.php index.html;
      root   /var/www/html/mydomain;
      auth_basic            Downloads voor piet;
      auth_basic_user_file  /etc/nginx/mypassword.txt;
  }

Automatisch indexeren van een directory

Voorbeeld om de inhoud van een (download) directory automatisch door nginx te indexeren:

  location /downloads {
  root   /var/www/domain1;
  autoindex on;
  }

In dit geval wordt voor de directory /var/www/domain1/downloads automatisch een index aangemaakt op een soort gelijke wijze als de mod_index module voor Apache doet. Uiteraard dient nginx gecompileerd te zijn met de autoindex module, of dat het geval is kan worden opgevraagd met nginx -V

Problemen met uploaden van bestanden

Indien er problemen zijn met het uploaden van bestanden via een form dan moet voor de desbetreffende (virtual) host de client_max_body_size parameter een waarde krijgen van de maximale grootte. Als bijvoorbeeld uploads tot 50MB mogelijk moeten zijn wordt de volgende regel opgenomen:

  client_max_body_size 50m;

PHP

Installeer spawn-fcgi of download de source met wget http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.bz2 Na de installatie (of de compilatie en installatie van de source) kan deze gestart worden zoals in onderstaand voorbeeld:

  /usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 53000 -P /var/run/fastcgi-php.pid -- /usr/bin/php-cgi

In de configuratie van nginx worden de volgende regels opgenomen:

  location ~ \.php$ {
  fastcgi_pass 127.0.0.1:53000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
  include        fastcgi_params

En vervolgens is uiteraard een restart van nginx nodig om de configuratiewijzigingen actief te maken.

NGINX service script voor systemd

Diverse linux distributies gebruiken systemctl om services te stoppen en te starten. Voordeel is dat er in het startup script afhankelijkheden kunnen worden opgegeven. Het opstartscript staat dan niet meer in /etc/init.d maar in /lib/systemd

Volg onderstaande stappen om NGINX te kunnen stoppen/starten via het service commando:

Maak in /lib/systemd/system een tekstbestand aan met als naam nginx.service en met de volgende inhoud:

 [Unit]
 Description=Nginx - a high performance http(s) server
 After=syslog.target network.target

 [Service]
 Type=forking
 ExecStart=/usr/sbin/nginx
 ExecReload=/usr/sbin/nginx -s reload

 [Install]
 WantedBy=multi-user.target

Maak in /etc/systemd/system/multi-user.target.want een static link naar dit bestand met: ln -s /lib/systemd/system/nginx.service nginx.service Geef het commando systemctl