LEMP Installatie - CentOS

  • Published on
    10-Mar-2016

  • View
    213

  • Download
    1

Embed Size (px)

DESCRIPTION

Installatie van NGINX + Mysql + PHP + PHPMyAdmin in CentOS 6.

Transcript

<ul><li><p>LEMP installatie - CentOS</p><p>Frederik Vos</p><p>Inhoudsopgave</p><p>1 Inleiding 1</p><p>2 Benodigdheden 1</p><p>3 Network configuratie 2</p><p>4 Dnsmasq 3</p><p>5 MySQL Database server 3</p><p>6 PHP 4</p><p>7 NGINX 5</p><p>8 phpMyAdmin 5</p><p>9 Auteur 6</p><p>1. Inleiding</p><p>De term LAMP1 (Linux + Apache + Mysql + PHP) is inmiddels erg ingeburgerdgeraakt, de term LEMP is veel minder bekend. De Apache webserver is vervan-gen door NGINX2 (uit te spreken als Engine-Ex), die zeer sterk in populariteitstijgt vanwege de uitstekende performance.</p><p>Het doel van dit document is niet om alle in en outs van deze webserver tebespreken maar om een goede setup te bouwen die zeer bruikbaar is als test-omgeving en als uitgangspunt kan dienen voor geavanceerdere configuraties.</p><p>2. Benodigdheden</p><p>Als basis gebruiken we de installatie zoals beschreven is in het document:CentOS als VMware JeOS Appliance3.</p><p>1http://nl.wikipedia.org/wiki/LAMP2http://nginx.org3http://issuu.com/inktvis75/docs/jeos-centos</p></li><li><p>3 NETWORK CONFIGURATIE</p><p>We maken gebruik van de officiele NGINX repository voor CentOS. Ga hiervoormet een browser naarhttp://nginx.org/packages/centos/6/noarch/RPMSen download daar de nginx-release package. Installeer deze met:</p><p>yum localinstall nginx-release-centos-6-0.el6.ngx.noarch.rpm</p><p>Verder is de unzip utility nog benodigd:</p><p>yum install unzip</p><p>3. Network configuratie</p><p>Servers via DHCP een ip adres laten krijgen is, uitzonderingen daar gelaten,geen goed idee. Configureer een static ip adres, door het bewerken van hetbestand:/etc/sysconfig/network-scripts/ifcfg-eth0</p><p>DEVICE=eth0TYPE=ethernetBOOTPROTO=staticONBOOT=yesNM_CONTROLLED=noIPADDR=192.168.0.70NETMASK=255.255.0.0GATEWAY=192.168.0.254DNS1=127.0.0.1</p><p>Opmerking: uiteraard moeten de ip adressen in bovenstaand voorbeeld wordenaangepast.</p><p>Maak deze instellingen actief:</p><p>ifdown eth0 &amp;&amp; ifup eth0</p><p>Pas de hostname aan in het bestand:/etc/sysconfig/network</p><p>HOSTNAME=centos-lamp.localdomain</p><p>Opmerking: Uiteraard hier ook de hostname aanpassen naar eigen wens, maarlaat localdomain staan.</p><p>Pas vervolgens ook het bestand aan:/etc/hosts</p><p>127.0.0.1 localhost localhost.localdomain127.0.0.2 centos-lamp.localdomain centos-lamp</p><p>Opmerking: Wanneer je bijvoorbeeld een website wil aanbieden met als host-name www.example.com dan voeg je later een entry toe aan het hosts be-stand, waarbij je het ip adres gebruikt waarop je de website wilt gaan be-naderen. Uiteraard moet je dit ip adres dan wel op een netwerk-interfaceconfigureren, maak dan een bestand aan: ifcfg-eth0.0 aan in de directory/etc/sysconfig/network-scripts, vergeet daarbij niet ook de DEVICE para-meter aan te passen. Uiteraard: het volgende ip adres krijgt eth0.1 etc.</p><p>2</p></li><li><p>5 MYSQL DATABASE SERVER</p><p>Als laatste stap de firewall configureren:</p><p>lokkit --default=serverlokkit --service=httplokkit --service=dnslokkit --update</p><p>Na deze configuratie wijzigingen is het verstandig CentOS te rebooten. Contro-leer na de reboot of het bestand /etc/resolv.conf er als volgt uit ziet:</p><p>nameserver 127.0.0.1</p><p>Wanneer dit niet het geval is, pas dit dan alsnog handmatig aan.</p><p>4. Dnsmasq</p><p>Het is een goed idee om Dnsmasq te gebruiken, deze lichte dns-server imple-mentatie stelt je in staat om virtual hosting goed te kunnen testen. Het enigewat je dan namelijk moet doen is de nameserver van de client te veranderen inhet ip adres van deze LEMP machine.</p><p>Installatie van de software:</p><p>yum install dnsmasq</p><p>Vervolgens eerst een backup maken van de meegeleverde configuratie:</p><p>mv /etc/dnsmasq.conf /etc/dnsmasq.org</p><p>Maak een nieuw bestand /etc/dnsmasq.conf aan met de volgende inhoud:</p><p>resolv-file=/etc/resolv.dnsmasqdomain=localdomainselfmx</p><p>Maak een nieuw bestand aan /etc/resolv.dnsmasq met de volgende inhoud:</p><p>nameserver 8.8.8.8</p><p>Opmerking: uiteraard mag je ook andere DNS servers gebruiken!</p><p>Start Dnsmasq en zorg ervoor dat deze gestart wordt tijdens het boot-proces:</p><p>service dnsmasq startchkconfig dnsmasq on</p><p>5. MySQL Database server</p><p>We installeren van de database server MySQL zowel de server als de client soft-ware. Weliswaar is de client software niet strict noodzakelijk, maar het maaktbeheer, testen en troubleshooten wel gemakkelijker.</p><p>yum groupinstall "MySQL Database client"yum groupinstall "MySQL Database server"</p><p>Start Mysql en zorg ervoor dat deze gestart wordt tijdens het boot-proces:</p><p>3</p></li><li><p>6 PHP</p><p>service mysqld startchkconfig mysqld on</p><p>Standaard wordt MySQL nogal onveilig afgeleverd, gelukkig is er een script diedit probleem oplost:</p><p>mysql_secure_installation</p><p>Gebruik daarbij de volgende instellingen:</p><p> 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</p><p>6. PHP</p><p>Installatie van de PHP software gaat net zoals bij MySQl eenvoudig door hetgebruik van de groupinstall functie van YUM:</p><p>yum groupinstall "PHP Support"</p><p>Daarnaast is PHP-FPM4 nodig. NGINX kent niet zoals Apache een mod_phpmodule. In de plaats daarvan wordt er PHP-FPM als een service gestart die meteen veel betere performance dan mod_php alle php requests afhandelt.</p><p>yum install php-fpm php-mbstring php-mysql</p><p>De configuratie van PHP-FPM moet nog wel aangepast worden, open hiervoorhet bestand /etc/php-fpm.d/www.conf en pas de volgende regels aan:</p><p>listen = /var/run/php-fpm/php5-fpm.socklisten.owner = nginxlisten.group = nginxlisten.mode = 0666</p><p>user = nginxgroup= nginx</p><p>Start de service en voeg deze ook toe aan de services die tijdens het booten vanLinux gestart worden:</p><p>service php-fpm startchkconfig php-fpm on</p><p>Als laatste de rechten voor php-session files corrigeren:</p><p>chown -R nginx:nginx /var/lib/php/session</p><p>4http://php-fpm.org</p><p>4</p></li><li><p>8 PHPMYADMIN</p><p>7. NGINX</p><p>Installeer NGINX met:</p><p>yum install nginx</p><p>Om gebruik te kunnen maken van PHP-FPM moet deze geconfigureerd wordenin het bestand /etc/nginx/conf.d/default.conf</p><p>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;</p><p>}</p><p>Start de service en voeg deze ook toe aan de services die tijdens het booten vanLinux gestart worden:</p><p>service nginx startchkconfig nginx on</p><p>Om te controleren of PHP werkt maken we een bestand aan phpinfo.php aanin de directory /usr/share/nginx/html.</p><p>8. phpMyAdmin</p><p>Om de databases eenvoudig te beheren installeren we ook het handige en zeerpopulaire phpMyAdmin5.</p><p>Download de meest recente versie van de phpMyAdmin website en unzip dezein de /tmp directory:</p><p>unzip phpMyAdmin*.zip -d /tmp</p><p>Maak een directory aan voor de phpMyAdmin website, en kopieer de bestandendaar naar toe:</p><p>mkdir -p /usr/share/webapps/phpMyAdmincp -r phpMyAdmin*/* /usr/share/webapps/phpMyAdminchown -R nginx:nginx /usr/share/webapps</p><p>Maak nu in de directory /etc/nginx/conf.d een bestand aan: phpmyadmin.confmet de volgende inhoud:</p><p>5http://http://www.phpmyadmin.net</p><p>5</p></li><li><p>9 AUTEUR</p><p>server {server_name phpmyadmin.localdomain;index index.php;root /usr/share/webapps/phpMyAdmin;</p><p>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;</p><p>}}</p><p>Uiteraard staat het je vrij om een andere hostname te kiezen.</p><p>Open vervolgens het bestand /etc/httpd/conf.d/phpMyAdmin.conf en verwij-der regel 11 (</p><p>) t/m regel 26 (</p><p>).</p><p>Dit zorgt ervoor dat we phpMyAdmin remote kunnen gebruiken. Maar danmoet de authenticatie wel veiliger: in plaats van cookie-based http-based au-thenticatie. Kopieer het voorbeeld configuratie bestand naar het werkzameconfiguratie bestand:</p><p>cp /usr/share/phpMyAdmin/config.sample.inc.php \/usr/share/phpMyAdmin/config.inc.php</p><p>en pas regel 29 aan:$cfg[Servers][$i][auth_type] = cookie;moet worden:$cfg[Servers][$i][auth_type] = http;</p><p>Maak nu een entry aan in /etc/hosts:</p><p>192.168.0.70 phpmyadmin.localdomain phpmyadmin</p><p>Pas ip-adres en domein naar wens aan, zolang het ip adres maar geconfigureerdis op een netwerk-interface.</p><p>Herstart hierna dnsmasq en de webserver:</p><p>service dnsmasq restartservice httpd restart</p><p>en PHPMyAdmin is benaderbaar op http://ip_adres/phpMyAdmin</p><p>9. Auteur</p><p>Dit document is geschreven door Frederik Vos, werkzaam als Senior TechnicalTrainer bij XTG.</p><p>6</p><p>InleidingBenodigdhedenNetwork configuratieDnsmasqMySQL Database serverPHPNGINXphpMyAdminAuteur</p></li></ul>