LEMP Installatie - CentOS

Page 1

LEMP installatie - CentOS Frederik Vos

Inhoudsopgave 1 Inleiding

1

2 Benodigdheden

1

3 Network configuratie

2

4 Dnsmasq

3

5 MySQL Database server

3

6 PHP

4

7 NGINX

5

8 phpMyAdmin

5

9 Auteur

6

1. Inleiding De term LAMP1 (Linux + Apache + Mysql + PHP) is inmiddels erg ingeburgerd geraakt, de term LEMP is veel minder bekend. De Apache webserver is vervangen door NGINX2 (uit te spreken als Engine-Ex), die zeer sterk in populariteit stijgt vanwege de uitstekende performance. Het doel van dit document is niet om alle in en outs van deze webserver te bespreken maar om een goede setup te bouwen die zeer bruikbaar is als testomgeving en als uitgangspunt kan dienen voor geavanceerdere configuraties.

2. Benodigdheden Als basis gebruiken we de installatie zoals beschreven is in het document: “CentOS als VMware JeOS Appliance�3 . 1 http://nl.wikipedia.org/wiki/LAMP 2 http://nginx.org 3 http://issuu.com/inktvis75/docs/jeos-centos


3

NETWORK CONFIGURATIE

We maken gebruik van de officiele NGINX repository voor CentOS. Ga hiervoor met een browser naar http://nginx.org/packages/centos/6/noarch/RPMS en download daar de nginx-release package. Installeer deze met: yum localinstall nginx-release-centos-6-0.el6.ngx.noarch.rpm Verder is de unzip utility nog benodigd: yum install unzip

3. Network configuratie Servers via DHCP een ip adres laten krijgen is, uitzonderingen daar gelaten, geen goed idee. Configureer een static ip adres, door het bewerken van het bestand: /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=ethernet BOOTPROTO=static ONBOOT=yes NM_CONTROLLED=no IPADDR=192.168.0.70 NETMASK=255.255.0.0 GATEWAY=192.168.0.254 DNS1=127.0.0.1

Opmerking: uiteraard moeten de ip adressen in bovenstaand voorbeeld worden aangepast. Maak deze instellingen actief: ifdown eth0 && ifup eth0 Pas de hostname aan in het bestand: /etc/sysconfig/network HOSTNAME=centos-lamp.localdomain

Opmerking: Uiteraard hier ook de hostname aanpassen naar eigen wens, maar laat localdomain staan. Pas vervolgens ook het bestand aan: /etc/hosts 127.0.0.1 127.0.0.2

localhost localhost.localdomain centos-lamp.localdomain centos-lamp

Opmerking: Wanneer je bijvoorbeeld een website wil aanbieden met als hostname www.example.com dan voeg je later een entry toe aan het hosts bestand, waarbij je het ip adres gebruikt waarop je de website wilt gaan benaderen. Uiteraard moet je dit ip adres dan wel op een netwerk-interface configureren, maak dan een bestand aan: ifcfg-eth0.0 aan in de directory /etc/sysconfig/network-scripts, vergeet daarbij niet ook de DEVICE parameter aan te passen. Uiteraard: het volgende ip adres krijgt eth0.1 etc. 2


5

MYSQL DATABASE SERVER

Als laatste stap de firewall configureren: lokkit lokkit lokkit lokkit

--default=server --service=http --service=dns --update

Na deze configuratie wijzigingen is het verstandig CentOS te rebooten. Controleer na de reboot of het bestand /etc/resolv.conf er als volgt uit ziet: nameserver 127.0.0.1

Wanneer dit niet het geval is, pas dit dan alsnog handmatig aan.

4. Dnsmasq Het is een goed idee om Dnsmasq te gebruiken, deze lichte dns-server implementatie stelt je in staat om virtual hosting goed te kunnen testen. Het enige wat je dan namelijk moet doen is de nameserver van de client te veranderen in het ip adres van deze LEMP machine. Installatie van de software: yum install dnsmasq Vervolgens eerst een backup maken van de meegeleverde configuratie: mv /etc/dnsmasq.conf /etc/dnsmasq.org Maak een nieuw bestand /etc/dnsmasq.conf aan met de volgende inhoud: resolv-file=/etc/resolv.dnsmasq domain=localdomain selfmx

Maak een nieuw bestand aan /etc/resolv.dnsmasq met de volgende inhoud: nameserver 8.8.8.8

Opmerking: uiteraard mag je ook andere DNS servers gebruiken! Start Dnsmasq en zorg ervoor dat deze gestart wordt tijdens het boot-proces: service dnsmasq start chkconfig dnsmasq on

5. MySQL Database server We installeren van de database server MySQL zowel de server als de client software. Weliswaar is de client software niet strict noodzakelijk, maar het maakt beheer, testen en troubleshooten wel gemakkelijker. yum groupinstall "MySQL Database client" yum groupinstall "MySQL Database server" Start Mysql en zorg ervoor dat deze gestart wordt tijdens het boot-proces: 3


6

PHP

service mysqld start chkconfig mysqld on Standaard wordt MySQL nogal onveilig afgeleverd, gelukkig is er een script die dit probleem oplost: mysql_secure_installation Gebruik daarbij de volgende instellingen: • Set root password? [Y/n] y • Remove anonymous users? [Y/n] y • Disallow root login remotely? [Y/n] y • Remove test database and access to it? [Y/n] y • Reload privilege tables now? [Y/n] y

6. PHP Installatie van de PHP software gaat net zoals bij MySQl eenvoudig door het gebruik van de groupinstall functie van YUM: yum groupinstall "PHP Support" Daarnaast is PHP-FPM4 nodig. NGINX kent niet zoals Apache een mod_php module. In de plaats daarvan wordt er PHP-FPM als een service gestart die met een veel betere performance dan mod_php alle php requests afhandelt. yum install php-fpm php-mbstring php-mysql De configuratie van PHP-FPM moet nog wel aangepast worden, open hiervoor het bestand /etc/php-fpm.d/www.conf en pas de volgende regels aan: listen = /var/run/php-fpm/php5-fpm.sock listen.owner = nginx listen.group = nginx listen.mode = 0666 user = nginx group= nginx

Start de service en voeg deze ook toe aan de services die tijdens het booten van Linux gestart worden: service php-fpm start chkconfig php-fpm on Als laatste de rechten voor php-session files corrigeren: chown -R nginx:nginx /var/lib/php/session 4 http://php-fpm.org

4


8

PHPMYADMIN

7. NGINX Installeer NGINX met: yum install nginx Om gebruik te kunnen maken van PHP-FPM moet deze geconfigureerd worden in het bestand /etc/nginx/conf.d/default.conf location ~ \.php$ { root /usr/share/nginx/html ; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php-fpm/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }

Start de service en voeg deze ook toe aan de services die tijdens het booten van Linux gestart worden: service nginx start chkconfig nginx on Om te controleren of PHP werkt maken we een bestand aan phpinfo.php aan in de directory /usr/share/nginx/html. <?php phpinfo(); ?>

8. phpMyAdmin Om de databases eenvoudig te beheren installeren we ook het handige en zeer populaire phpMyAdmin5 . Download de meest recente versie van de phpMyAdmin website en unzip deze in de /tmp directory: unzip phpMyAdmin*.zip -d /tmp Maak een directory aan voor de phpMyAdmin website, en kopieer de bestanden daar naar toe: mkdir -p /usr/share/webapps/phpMyAdmin cp -r phpMyAdmin*/* /usr/share/webapps/phpMyAdmin chown -R nginx:nginx /usr/share/webapps Maak nu in de directory /etc/nginx/conf.d een bestand aan: phpmyadmin.conf met de volgende inhoud: 5 http://http://www.phpmyadmin.net

5


9

server { server_name index root

AUTEUR

phpmyadmin.localdomain; index.php; /usr/share/webapps/phpMyAdmin;

location ~ \.php$ { try_files $uri =404; root /usr/share/webapps/phpMyAdmin; fastcgi_pass unix:/var/run/php-fpm/php5-fpm.sock; fastcgi_index index.php; fastcgi_param PHP_ADMIN_VALUE open_basedir="/usr/share/webapps/"; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }

Uiteraard staat het je vrij om een andere hostname te kiezen. Open vervolgens het bestand /etc/httpd/conf.d/phpMyAdmin.conf en verwijder regel 11 ( <Directory /usr/share/phpMyAdmin/> ) t/m regel 26 ( </Directory> ). Dit zorgt ervoor dat we phpMyAdmin remote kunnen gebruiken. Maar dan moet de authenticatie wel veiliger: in plaats van cookie-based http-based authenticatie. Kopieer het voorbeeld configuratie bestand naar het “werkzame” configuratie bestand: cp /usr/share/phpMyAdmin/config.sample.inc.php \ /usr/share/phpMyAdmin/config.inc.php en pas regel 29 aan: $cfg[’Servers’][$i][’auth_type’] = ’cookie’; moet worden: $cfg[’Servers’][$i][’auth_type’] = ’http’; Maak nu een entry aan in /etc/hosts: 192.168.0.70 phpmyadmin.localdomain phpmyadmin

Pas ip-adres en domein naar wens aan, zolang het ip adres maar geconfigureerd is op een netwerk-interface. Herstart hierna dnsmasq en de webserver: service dnsmasq restart service httpd restart en PHPMyAdmin is benaderbaar op http://ip_adres/phpMyAdmin 9. Auteur Dit document is geschreven door Frederik Vos, werkzaam als Senior Technical Trainer bij XTG. 6


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.