Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Pekkam - 24.11.12 - klo:18.56

Otsikko: Nginx palvelimen ja php-fpm:n asennus
Kirjoitti: Pekkam - 24.11.12 - klo:18.56
Mielenkiinnosta ryhdyin asentamaan tähän koneelleni nginx-palvelinta. Sain sen ihan kohtalaisen nätisti asennettua, pääosiltaan.
Yksi asia jota jäin ihmettelemään. Aluksi se näytti kotisivut oletus-hakemistosta /usr/share/nginx/www.
Mutta kun lisäsin tiedoston nginx.conf yläosaan rivin inclue fastcgi_params (tiedoston nimi on tuo), se muuttikin kotipolun siihen, mikä minulla oli tiedostossa /etc/apache2/sites-available/default. Testasin vasiten tuossa tiedostossa olevaa hakemistopolkua muuttamalla, niin se samalla muutti kotisivupolkua, eli se poimi sen sieltä. Onko tämä nginx-palvelimeen sisäänrakennettu ominaisuus vai vaikuttaako siihen jokin aikaisempi asetus joka minulla oli kun apache2 oli käytössä?
Otsikko: Vs: Nginx palvelimen ja php-fpm:n asennus
Kirjoitti: Pekkam - 24.11.12 - klo:22.44
Mutta kun lisäsin tiedoston nginx.conf yläosaan rivin inclue fastcgi_params (tiedoston nimi on tuo), se muuttikin kotipolun siihen, mikä minulla oli tiedostossa /etc/apache2/sites-available/default.

Tuon sain muutettua kopsaamalla tiedostossa fastcgi_params olevat muuttujat tiedostoon /etc/nginx/sites-available/default location -silmukkaan ( tai mikä aliohjelma se on ) wiki.nginx.org sivuston ohjeen mukaisesti. Nyt tulostaa tuon localhost-etusivun oikeasta osoitteesta ja ottaa myös muut asetukset, kuten php, nginx palvelimelta eikä apachen ympäristömuuttujista.
Mutta on tässä hiukan vielä opettelua, sen verta erilainen tämä on.
Otsikko: Vs: Nginx palvelimen ja php-fpm:n asennus
Kirjoitti: Pekkam - 25.11.12 - klo:15.04
Pitääpä tässä kysellä muutamaa asiaa, jos jollaki on kokemusta.

PHP toimii oletus-hakemistossa http://localhost. Olen saanut tähän laitettua userdir-asetuksen, mutta osoitteessa http://localhost/~user php ei enää toimi. Mistä mahtaa johtua?
Toinen ongelma on conf.d hakemiston hyödyntäminen. En saanut sitä toimimaan. Tein sinne seuraavan userdir.conf tiedoston:
Koodia: [Valitse]
server{
  location ~ ^/~(.+?)(/.*)?$ {
            alias /home/$1/public_html$2;
            index index.php index.html index.htm;
            autoindex on;
  }
}

Poistin toistaiseksi nginx.conf hakemistosta risuaidalla include-komennon jolla haetaan kaikki conf.d hakemistossa olevat .conf-tiedostot. Vaikuttaa hiukan siltä, että tuo include komento ei toimisi kunnolla. En ole huomannut sen käytöstä olevan hyötyä muissakaan tilanteissa.
Olen huomannut että jos ohjelman suorituksessa tulee pienikin virhe (jonka voi aiheuttaa myös tyhjä rivi location-metodien välissä), sen eteneminen loppuu ja se poimii Apachen ympäristömuuttujat ja poimii asetukset sieltä.

- - -

Ps klo 19.24: Tuolla saattaakiin olla ratkaisu tuohon userdir ongelmaan ja apuja ehkä vähän muuhunkin.

http://pastebin.com/y2Pr0BfM

Pitänee tuota testata. Vieläkö löytäisi konstin, millä saisi noita "paloja" toimimaan conf.d hakemistosta, helpottaisi kovasti koodin rakennetta...
Otsikko: Vs: Nginx palvelimen ja php-fpm:n asennus
Kirjoitti: Pekkam - 25.11.12 - klo:19.56
Niinhän siinä sitten kävi että alkoi toimimaan kun lisäsin nämä tiedostoon default:
Koodia: [Valitse]
       # Userdir - php
        location ~ ^/~([^/]+)/(.+\.php)$ {
            if (!-f /home/$1/public_html/$2) {
                rewrite ^ 404;
            }
            alias /home/$1/public_html/$2;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            include fastcgi_params;
        }
        # Userdir - static
        location ~ ^/~([^/]+)(/.*)?$ {
            alias /home/$1/public_html$2;
            autoindex on;
        }
Käytännössä tuo alempi minulla jo oli siellä.
Nyt tässä pitäisi vielä yrittää saamaan php hyväksymään hakemiston oikeuden 775, ettei niitä oikeuksia  tartte nostaa täysille.
Otsikko: Vs: Nginx palvelimen ja php-fpm:n asennus
Kirjoitti: kamara - 25.11.12 - klo:21.21
Toinen tapa olisi tehdä Wikisivun LAMP-ohjeen mukaisesti:

Lainaus
Nyt public_html hakemiston sisältö näkyy apachessa osoitteessa http://localhost/~user

Otetaan PHP käyttöön käyttäjäkansioissa editoimalla /etc/apache2/mods-available/php5.conf tiedostoa:

Koodia: [Valitse]
sudo gedit /etc/apache2/mods-available/php5.conf
Tiedosto tulisi näyttää tältä:

Koodia: [Valitse]
<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the following lines
    # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    #<IfModule mod_userdir.c>
    #   <Directory /home/*/public_html>
    #        php_admin_value engine Off
    #    </Directory>
    #</IfModule>
</IfModule>
Lopuksi vielä kerran uudelleenkäynistetään apache2 palvelin.

Koodia: [Valitse]
sudo /etc/init.d/apache2 restart
Otsikko: Vs: Nginx palvelimen ja php-fpm:n asennus
Kirjoitti: Pekkam - 25.11.12 - klo:21.34
Toinen tapa olisi tehdä Wikisivun LAMP-ohjeen mukaisesti:

Juu, tuo tapa on toki tiedossa. Kuten ylläolevasta ehkä huomaakin, pyrin tekemään tämän täysin Nginx-palvelimen konstein, ilman Apachea.
Otsikko: Vs: Nginx palvelimen ja php-fpm:n asennus
Kirjoitti: Pekkam - 26.11.12 - klo:15.22
Laitampa tähän tiedoksi jos joku tarttee  :)
Minulla oli vielä hommia että sain php:n toimimaan sekä juuripolussa että user-hakemistoissa. Näillä metodeilla tässä järjestyksessä homma onnistui:
Koodia: [Valitse]

        # Userdir - php
        location ~ ^/~([^/]+)/(.+\.php)$ {
            if (!-f /home/$1/public_html/$2) {
                rewrite ^ 404;
            }
            include /etc/nginx/fastcgi_params;
            alias /home/$1/public_html/$2;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $request_filename;  
        }
        # Userdir - static
        location ~ ^/~([^/]+)(/.*)?$ {
            alias /home/$1/public_html$2;
            index index.html index.htm index.php;
            autoindex on;
        }
        # Default - php
        location ~ (.+\.php)$ {
            include        /etc/nginx/fastcgi_params;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;          
        }

Kun tuossa ensin minulla oli tuo default-php ylinnä, niin userdir-hakemistossa php-tiedosto näytti tyhjää, valkoista sivua. Mutta nyt se pelaa  ;D