LEMP

From ICO wiki
Jump to navigationJump to search

Linux, nginx (Engine x), MySQL, PHP (LEMP) komplekti paigaldamine Ubuntu 12.04 serverisse

Autor

Priit Lilleleht


Sissejuhatus

Nginx on tasuta ja avatud lähtekoodiga suurejõutlusega HTTP server ja revers proxy, samuti ka IMAP/POP3 proxy server.

Igor Sysoev hakkas nginx arendama 2002.aastal ja esimene versioon tuli välja 2004.aastal.

Nginx on tuntud oma suure jõudluse, lihtsa seadistamise, madal ressursside tarbimisega ja stabiilsus.

Nginx on kirjutatud haldama C10K probleemi(10000 klienti haldamine ühekorraga). Nginx kasutab skaleeritavaid asünkroonnseid arhitektuure. Selline arhitektuur kasutab vähe mälu koormuse all.



VM masinad

näites kasutasin klientmasinat Ubuntu Desktop 12.04 (64bit) ja serverit Ubuntu-12.04-server-amd64.

näites kasutatud server:

RAM 512MB

HDD dynamically allocated 8GB

2 Võrgukaarti

NIC1 - NAT (eth0 - Ubuntus)
NIC2 - HostOnly (eth1 – Ubuntus) [192.168.56.210]

OS Ubuntu-12.04-server-amd64

paigaltatud SSH



Esimene samm

Selleks, et saada juurkasutajaks kasuta käsklust:

sudo -i

Uuendame kohalikud tarkvara repositooriumid:

apt-get update


Paigalda MySQL

MySQLi tarkvara paigaldamiseks kasuta Ubuntu serveri käsklust:

apt-get install mysql-server php5-mysql

MySQL root kasutaja parooli määramine. Antud näites:"password"


MySQLi aktiveerimine:

mysql_install_db

lõpetuseks käivita skript:

/usr/bin/mysql_secure_installation

Küsitakse root kasutaja parooli, sisestage see.

Küsitakse, kas soovite vahetada root kasutaja parooli, vastake "N".

Järgmistele küsimustele vastake "Y". Pärast seda MySQL taaskäivitub ja rakendab muudatused.

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y                                            
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
... Success!

By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...


Nginx paigaldamine

Paigaldan nginx:

apt-get install nginx


Nginx käivitamine, nginx ei käivitu automaatselt.

service nginx start

Kontrollimaks, et nginx töötab, suuna oma brauser serveri IP-aadressile (192.168.56.210).


PHP paigaldamine

php5-fpm paigaldamine

apt-get install php5-fpm


PHP seadistamine

Muudame failis:

nano /etc/php5/fpm/php.ini
rida
cgi.fix_pathinfo=1
muuta reaks
cgi.fix_pathinfo=0

Kui cgi.fix_pathinfo=1 siis üritab php leida lähimat faili mis sobib päringuga.

See aga on turva risk mita on lihtne eemaltata kui muuda cgi.fix_pathinfo=0,

siis annab php ainult täpseid vasteid päringutele.


Veel üks muudatus failis:

nano /etc/php5/fpm/pool.d/www.conf
rida
listen = 127.0.0.1:9000
muuta reaks
listen = /var/run/php5-fpm.sock


nginx seadistamine

Avame vaikimisi virtual host faili

nano /etc/nginx/sites-available/default

faile muutetud kuju peab olema järgne.

Uuemad ubuntu versioonid võivad "www" asemel kasutada "html" kausta.

#[...]

server {
        listen   80;
     

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

        server_name 192.168.56.210;

        location / {
                try_files $uri $uri/ /index.html;
        }

        error_page 404 /404.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 the php-fpm socket
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
                
        }

}

#[...]
Muudatused:
lisa index.php index rida.
muuda "server_name" asendades "local host" kas domeeni nimega või IP-aadresiga (nt. 192.168.56.210).
muuda vastavad read (location ~ \.php$ {) lõigus.


Loo PHP infoleht

Esmalt loo uus dokument

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

lisa read:

<?php
phpinfo();
?>

salvesta ja välju.


Taaskäivita nginx:

service nginx restart


Aadressilt "http://192.168.56.210/info.php" näed oma nginx ja php seadeid.(192.168.56.210 on serveri ip).

LEMP komplekt on nüüd paigaltatud sinu serverisse.


Kokkuvõte

Nginx paigaltamine tundub lihtsam ja kiirem kui seda oli abache.

Samuti on nginx kõrgemajõutlusega ning kasutab vähem mälu.

Koos php ja MySQL on server juba valmis enamuste veebi lehtete jaoks.



Kasutatud allikad

  1. https://www.digitalocean.com/community/articles/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-12-04
  2. http://wiki.nginx.org/