Kirjoittaja Aihe: Nginx palvelimen ja php-fpm:n asennus  (Luettu 2835 kertaa)

Pekkam

  • Käyttäjä
  • Viestejä: 282
    • Profiili
Nginx palvelimen ja php-fpm:n asennus
« : 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ä?
« Viimeksi muokattu: 24.11.12 - klo:19.07 kirjoittanut Pekkam »

Pekkam

  • Käyttäjä
  • Viestejä: 282
    • Profiili
Vs: Nginx palvelimen ja php-fpm:n asennus
« Vastaus #1 : 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.
« Viimeksi muokattu: 24.11.12 - klo:22.47 kirjoittanut Pekkam »

Pekkam

  • Käyttäjä
  • Viestejä: 282
    • Profiili
Vs: Nginx palvelimen ja php-fpm:n asennus
« Vastaus #2 : 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...
« Viimeksi muokattu: 25.11.12 - klo:19.25 kirjoittanut Pekkam »

Pekkam

  • Käyttäjä
  • Viestejä: 282
    • Profiili
Vs: Nginx palvelimen ja php-fpm:n asennus
« Vastaus #3 : 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.

kamara

  • Käyttäjä
  • Viestejä: 2944
    • Profiili
Vs: Nginx palvelimen ja php-fpm:n asennus
« Vastaus #4 : 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

Pekkam

  • Käyttäjä
  • Viestejä: 282
    • Profiili
Vs: Nginx palvelimen ja php-fpm:n asennus
« Vastaus #5 : 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.

Pekkam

  • Käyttäjä
  • Viestejä: 282
    • Profiili
Vs: Nginx palvelimen ja php-fpm:n asennus
« Vastaus #6 : 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