Newznab … un bon exercice de service : Préparation du LAMP

OHhh la on s’attaque à du dur …

Petit récapitulatif sur les newsgroups : Usenet est un système en réseau de forums, inventé en 1979. En gros, ça date d’avant les inter-tubes. 😉

Normalement, ça sert donc à faire un forum. Mais Usenet semble connaitre un regain d’intérêt : avec l’HADOPI2, les systèmes d’échanges P2P étant surveillés, de nouvelles méthodes de téléchargement sont recherchées, et le réseau Usenet (principalement binaire) est de plus en plus fréquenté pour sa haute vitesse de téléchargement, la richesse des contenus et le respect de la neutralité du réseau4. (Wikipedia).

Donc il faut un fournisseur de newsgroup. Vous pouvez oublier votre FAI. « Hadopi c’est fini, c’était la ville de notre dernieeeeer amour ».
Par exemple, Giganews. Il est cher certes mais il offre plusieurs années de rétention, des VPN qui sortent sur la terre entière (qui a dit Netflix ? qu’il se dénonce !) et puis de la vitesse surtout avec un serveur Européen.

Après il faut trouver des fichiers à télécharger. C’est là que Newznab entre en jeu. C’est un peu le google des newsgroup. Un moteur de recherche qui va regarder des groups et en tirer les « releases ».

C’est bien expliqué ici chez Korben.

 

On commence avec Turnkey LAMP que l’on bidouille comme vu sur ce billet : Les Turnkeys de mon Labo

 

On va juste ajouter PHP en fast CGI sur Apache :

apt-get install apache2-mpm-worker libapache2-mod-fastcgi php5-fpm php-apc

Il faut valider MPM worker pour Apache.

a2enmod actions alias fastcgi rewrite

On edite /etc/apache2/conf.d/php5-fpm

# Configure all that stuff needed for using PHP-FPM as FastCGI
<FilesMatch ".+\.ph(p[345]?|t|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>
# application/x-httpd-php-source                 phps
<FilesMatch ".+\.phps$">
    SetHandler application/x-httpd-php-source
    # Deny access to raw php sources by default
    # To re-enable it's recommended to enable access to the files
    # only in specific virtual host or directory
    Order Deny,Allow
    Deny from all
</FilesMatch>
 # Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(p[345]?|t|tml|ps)$">
    Order Deny,Allow
    Deny from all
</FilesMatch>
 # Define Action and Alias needed for FastCGI external server.
Action application/x-httpd-php /fcgi-bin/php5-fpm virtual
Alias /fcgi-bin/php5-fpm /fcgi-bin-php5-fpm
<Location /fcgi-bin/php5-fpm>
  # here we prevent direct access to this Location url,
  # env=REDIRECT_STATUS will let us use this fcgi-bin url
  # only after an internal redirect (by Action upper)
  Order Deny,Allow
  Deny from All
  Allow from env=REDIRECT_STATUS
</Location>
FastCgiExternalServer /fcgi-bin-php5-fpm -socket /var/run/php5-fpm.sock -idle-timeout 250 -pass-header Authorization

 

On édite /etc/php5/fpm/php-fpm.conf


emergency_restart_threshold = 10
emergency_restart_interval = 1m
process_control_timeout = 10s

 

On édite /etc/php5/fpm/pool.d/www.con

 

pm = dynamic
pm.max_children = 100
pm.start_servers = 25
pm.min_spare_servers = 25
pm.max_spare_servers = 50
pm.max_requests = 500

 

Et on relance PHP-FPM :

/etc/init.d/php5-fpm reload

 

Petite bidouille d’Apache dans  /etc/apache2/conf.d/security :

 

ServerTokens Prod
ServerSignature Off
TraceEnable Off

 

Un petit reload d’Apache:

/etc/init.d/apache2 reload


Et perso je reboot:

Sudo reboot

 

Théoriquement au reboot si vous avez un phpinfo.php dans var/www, vous devez voir fast-cgi comme handler.

On est bon donc : Apache en port 8080, NGINX en port 80 et du fast-cgi avec APC.
Sauf que Nginx a besoin d’etre un peu modifier pour supporter Newznab.

Dans /etc/nginx/sites-available on va créer un fichier newznab :

 server {
    listen 80;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    root /var/www/newznab/www/;
    index index.html index.htm index.php;
    server_name mondomaine.com;
         location ~* \.(?:ico|css|js|gif|inc|txt|gz|xml|png|jpe?g) {
            expires max;
            add_header Pragma public;
            add_header Cache-Control "public, must-revalidate, proxy-revalidate";    }
         location /admin { }
        location /install { }
         location ~ \.php$ {   
         proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8080;
         }
         location / { try_files $uri $uri/ @rewrites; }
        location @rewrites {
            rewrite ^/([^/\.]+)/([^/]+)/([^/]+)/? /index.php?page=$1&id=$2&subpage=$3 last;
            rewrite ^/([^/\.]+)/([^/]+)/?$ /index.php?page=$1&id=$2 last;
            rewrite ^/([^/\.]+)/?$ /index.php?page=$1 last;
    }
          location ~ /\.ht {
                deny all;
        }
}

 

Et aussi une petite modif dans /etc/nginx/nginx.conf

user www-data;
worker_processes  1;
 error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
 events {
    worker_connections  1024;
}
 http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
     access_log  /var/log/nginx/access.log  main;
     sendfile        on;
    #tcp_nopush     on;
     keepalive_timeout  65;
     #gzip  on;
     include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

 

 

(A SUIVRE)