Está pensado para usar el directorio de trabajo sobre un disco externo USB.
Esto hay que probarlo. Supuestamente esto fue lo necesario para que funcione. El mayor problema es que las unidades externas se montan automáticamente con permisos de solo owner, por lo que no tiene efecto chownear o chmodear el directorio /media/pi/discoexterno. Lo que funciona es cambiar el usuario del worker, de www-data a pi, por ejemplo. La otra opción sería cambiar los permisos en el automontado de las unidades externas y ver en ese caso si www-data puede hacer cd al directorio donde tiene el contenido para parsear / escribir / modificar.
Primero instalar nginx y php5-fpm.
$ sudo apt-get update $ sudo apt-get install nginx php5-fpm
Una vez que se instaló, debería funcionar si uno va a http://localhost o entra desde afuera por puerto 80.
Nginx trabaja sobre /var/www/html por defecto, donde viene el index de bienvenido a nginx. Hay que hacer un symlink al directorio de trabajo definitivo, el del disco externo.
Supongo que el directorio donde yo quiero trabajar se llama /media/pi/discoexterno/web. Para crear symlinks, hacerlo de la siguiente manera:
$ sudo ln -s /media/pi/discoexterno/web /var/www/html/usb
Entonces aparece una carpeta “usb” en /var/www/html
Probablemente www-data no pueda hacer cd a esa carpeta, porque siguen rigiendo los permisos del disco. Se puede probar así:
$ sudo -u www-data stat /var/www/html/usb
Hasta /var/www/html podría leer, en principio. Bueno, para que el worker pueda leer, le cambio el usuario con el que trabaja. Yo me imagino que es inseguro, por eso hay que buscar otra opción más sana. El user se cambia tanto para nginx como para php5-fpm.
$ sudo nano /etc/nginx/nginx.conf
Cambiar
user www-data;
por
user pi;
Lo mismo en PHP5-FPM…
$ sudo nano /etc/php5/fpm/pool.d/www.conf
sobre la línea 23 aproximadamente, modificar
user = www-data group = www-data
por
user = pi group = www-data
Más abajo hay otra instancia, en la línea 49, hay que hacer lo mismo, cambiar el user.
Reload nginx y php5-fpm
$ sudo service nginx reload $ sudo service php5-fpm reload
Ya deberían estar con permisos para leer cualquier carpeta… queda modificar los sites-available solamente.
$ sudo nano /etc/nginx/sites-available/default
y modificar la sección root por defecto
root /var/www/html
por el symlink que estaba creado de antes
root /var/www/html/usb
Agregar index.php a la línea donde compara para usar de index.
Descomentar en la siguiente sección para que pueda usar php
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
y para que pueda usar la dokuwiki, pegar lo siguiente al final del archivo, después de los ejemplos de virtualhost:
# Dokuwiki
server {
listen [::]:80;
listen 80;
server_name wiki.pi;
# Maximum file upload size is 4MB - change accordingly if needed
client_max_body_size 4M;
client_body_buffer_size 128k;
root /var/www/html/usb/dokuwiki;
index doku.php;
#Remember to comment the below out when you're installing, and uncomment it when done.
# location ~ /(data/|conf/|bin/|inc/|install.php) { deny all; }
# Uncomment this prevents images being displayed !
# location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
# expires 31536000s;
# add_header Pragma "public";
# add_header Cache-Control "max-age=31536000, public, must-revalidate, proxy-revalidate";
# log_not_found off;
# }
location / { try_files $uri $uri/ @dokuwiki; }
location @dokuwiki {
rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
rewrite ^/(.*) /doku.php?id=$1&$args last;
}
location ~ \.php$ {
try_files $uri $uri/ /doku.php;
include fastcgi_params;
include fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param REDIRECT_STATUS 200;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
Descomentar donde dice que hay que descomentar al terminar la instalación para proteger las otras carpetas.
El archivo sites-available quedó de la siguiente manera:
##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# Generally, you will want to move this file somewhere, and start with a clean
# file but keep this around for reference. Or just disable in sites-enabled.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##
# Default server configuration
#
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html/usb;
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;
server_name RaspNginX;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
#server {
# listen 80;
# listen [::]:80;
#
# server_name example.com;
#
# root /var/www/example.com;
# index index.html;
#
# location / {
# try_files $uri $uri/ =404;
# }
#}
# Dokuwiki
server {
listen [::]:80;
listen 80;
server_name wiki.pi;
# Maximum file upload size is 4MB - change accordingly if needed
client_max_body_size 4M;
client_body_buffer_size 128k;
root /var/www/html/usb/dokuwiki;
index doku.php;
#Remember to comment the below out when you're installing, and uncomment it when done.
# location ~ /(data/|conf/|bin/|inc/|install.php) { deny all; }
# Uncomment this prevents images being displayed !
# location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
# expires 31536000s;
# add_header Pragma "public";
# add_header Cache-Control "max-age=31536000, public, must-revalidate, proxy-revalidate";
# log_not_found off;
# }
location / { try_files $uri $uri/ @dokuwiki; }
location @dokuwiki {
rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
rewrite ^/(.*) /doku.php?id=$1&$args last;
}
location ~ \.php$ {
try_files $uri $uri/ /doku.php;
include fastcgi_params;
include fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param REDIRECT_STATUS 200;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
Crear una carpeta dokuwiki dentro del directorio de trabajo de nginx, por ejemplovar/www/html/usb/dokuwiki. Descargar dokuwiki desde el sitio de descarga http://download.dokuwiki.org/ y descomprimirlo en esa carpeta que fue creada.
Proseguir con la instalación de Dokuwiki usando http://localhost/dokuwiki/install.php
Los errores de nginx se pueden ver con detalle en el log, /var/log/nginx.