niedziela, 8 grudnia 2013

Własna chmura - OwnCloud 5 - Debian Wheezy cz.1

Mając stary komputer podpięty do sieci z odpowiednio dużą przestrzenią dyskową możemy mieć nieograniczony dostęp do naszych plików. Instalując oprogramowanie OpenSource:
1) ownCloud
2) LEMP - Linux + nginx  + MySQL + PHP
3) Skonfigurowana karta sieciowa naszego komputer (proces opisywałem kilka razy we wpisach związanych z Debianem)

Zaczynamy.

1) Instalacja LEMP:

apt-get install mysql-server mysql-client

New password for the MySQL "root" user: Hasło roota bazy

Repeat password for the MySQL "root" user: Ponowne wpisanie hasła

apt-get install nginx

/etc/init.d/nginx start

W przeglądarkę wpisujemy IP naszej karty, powinniśmy zobaczyć informację potwierdzającą poprawne działanie serwera www:





Domyślnie pliki ngix dostępne są w tej ścieżce: /usr/share/nginx/www.

Na koniec instalujemy PHP:

apt-get install php5-fpm








2) Konfiguracja ngix:



nano /etc/nginx/nginx.conf


Dodajmy 2 opcje do pliku nginx.conf:

# Liczba działających procesów, ograniczenie pozwala ochronić serwer przed atakami typu DDOS

worker_processes  4;

# Sprawdzenie połączenia między dwoma urządzeniami

keepalive_timeout   2;



Musimy skonfigurować jeszcze wirtualne hosty:


nano /etc/nginx/sites-available/default


Aktywujemy wpisy dotyczące nasłuchu na porcie 80, dla IPv4 jak i v6, wpisujemy rodzaje plików które ma "rozumieć" nasz serwer: php,html,htm oraz takie bez rozszerzenia. 

server {
        listen   80; ## listen for ipv4; this line is default and implied
        listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

        root /usr/share/nginx/www;
        index index.php index.html index.htm;

        # Make site accessible from http://localhost/
        server_name localhost;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ /index.html;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }

        location /doc/ {
                alias /usr/share/doc/;
                autoindex on;
                allow 127.0.0.1;
                allow ::1;
                deny all;
        }

        # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
        #location /RequestDenied {
        #       proxy_pass http://127.0.0.1:8080;
        #}

        #error_page 404 /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /usr/share/nginx/www;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

                # With php5-cgi alone:
                #fastcgi_pass 127.0.0.1:9000;
                # With php5-fpm:
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny all;
        }
}


Po konfiguracji zapisujemy ustawienia oraz restartujemy serwer:

/etc/init.d/nginx reload

Następnie musimy włączyć CGI, tak aby współpracowało z PHP:

nano /etc/php5/fpm/php.ini

; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0


Musimy przeładować ustawienia PHP:

/etc/init.d/php5-fpm reload

Sprawdzimy czy PHP działa poprawnie, w tym celu utworzyzmy prosty plik .php:

nano /usr/share/nginx/www/info.php

do niego wpisujemy:

 < ? php
 phpinfo(); 
?>

Ponownie uruchamiamy przeglądarkę wpisując adres IP naszej karty, powinniśmy zobaczyć poniższy widok:










3) Integracja MySQL z PHP:


Na początek musimy zainstalować kilka dodatkowych bibliotek dla PHP:

apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Warto dodać moduł optymalizujący działanie PHP:

apt-get install php-apc 

Na koniec przeładujemy konfiguracje PHP:

/etc/init.d/php5-fpm reload


Skonfigurujemy:

nano /etc/php5/fpm/pool.d/www.conf


;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000


Na koniec ponownie zaktualizujemy ustawienia PHP:

/etc/init.d/php5-fpm reload



Edutyjemy:



nano /etc/nginx/sites-available/default



Dodajemy:


location ~ \.php$ {
       try_files $uri =404;
       fastcgi_split_path_info ^(.+\.php)(/.+)$;
       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

                # With php5-cgi alone:
                fastcgi_pass 127.0.0.1:9000;
                # With php5-fpm:
                #fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;

        }



Aktualizujemy ustawienia nginx:

/etc/init.d/nginx reload








4) Opcjonalne dodanie CGI:


apt-get install fcgiwrap


Jeżeli po instalacji usługa nie wystartuje uruchomimy są ręcznie:

/etc/init.d/fcgiwrap

nano /etc/nginx/sites-enabled/www.example.com.vhost


Dodamy do pliku poniższą konfiguracje:

server {

   location /cgi-bin/ {
     # Disable gzip (it makes scripts feel slower since they have to complete
     # before getting gzipped)
     gzip off;
     # Set the root to /usr/lib (inside this location this means that we are
     # giving access to the files under /usr/lib/cgi-bin)
     root  /var/www/www.example.com;
     # Fastcgi socket
     fastcgi_pass  unix:/var/run/fcgiwrap.socket;
     # Fastcgi parameters, include the standard ones
     include /etc/nginx/fastcgi_params;
     # Adjust non standard parameters (SCRIPT_FILENAME)
     fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
   }

}


Robimy reload nginx:

/etc/init.d/nginx reload

Tworzymy katalog na pliki:

mkdir /var/www/www.example.com/cgi-bin


Sprawdzimy czy CGI działa:


nano /var/www/www.example.com/cgi-bin/hello_world.cgi


Dodajemy do niego:

#!/usr/bin/perl -w
     # Tell perl to send a html header.
     # So your browser gets the output
     # rather then (command line
     # on the server.)
print "Content-type: text/html\n\n";
     # print your basic html tags.
     # and the content of them.
print "Hello World!! \n";

print "

Hello world


\n";

Nadajemy odpowiednie prawa dla naszego pliku:

chmod 755 /var/www/www.example.com/cgi-bin/hello_world.cgi

Po uruchomieniu przeglądarki oraz wpisaniu adresu http://www.example.com/cgi-bin/hello_world.cgi:



W części drugiej zajmiemy się instalacją ownCloud 5.



Brak komentarzy:

Prześlij komentarz