Hulpartikel overzicht

Hulpartikel

Een Apache webserver installeren in CentOS 7

In dit artikel leggen wij de installatie en initiële configuratie van een Apache web server (met httpd-tools, mod_ssl en PHP-FPM) in CentOS 7 uit. 

Apache vormt samen met MariaDB en PHP de zogeheten LAMP-Stack (Linux Apache MySQL PHP) en wordt gebruikt voor het hosten van dynamische websites. Host je een dynamische website op je VPS (e.g. WordPress), dan heb je ook MariaDB nodig (of een vergelijkbaar alternatief).

In dit artikel behandelen wij de volgende onderdelen:

  • Apache installeren
  • Apache poorten openen in je firewall
  • PHP installeren
  • Vhosts gebruiken

Daarnaast raden wij ook aan om een SFTP-server op te zetten, en de websites die je host te beveiligen met SSL.

  • Voer de stappen in dit artikel uit als root user, of gebruik sudo.
     
  • Wil je je Apache server meteen kunnen testen? Wijs dan voor je begint de DNS van een domein naar je VPS (i.e. via het root A- en AAAA-record).

Apache installeren

 

Stap 1

Verbind met je VPS via SSH of gebruik de VPS-console en update eerst je server:

yum -y update

 

Stap 2

Installeer Apache (en de benodigde extra packages) met het commando:

yum -y install httpd httpd-tools mod_ssl php-fpm

Hiermee installeer je:

  • httpd: De Apache-software zelf.
  • httpd-tools: Administratieve- en beveiligingsscripts.
  • mod_ssl: SSLv3 en TLS v1.x ondersteuning voor Apache.
  • php-fpm: PHP-FastCGI Process Manager die ten opzichte van reguliere FastCGI o.a. betere performance biedt bij beter bezochte websites.

 

Stap 3

Apache komt met een configuratie die niet van extra opties zoals PHP-FPM uit gaat. Er is dan ook een kleine aanpassing in de Apache-configuratie nodig om PHP-FPM te gebruiken.

Open het PHP-FPM configuratiebestand:

nano /etc/httpd/conf.d/php.conf

 

Stap 4

Scroll naar onderen naar de regel die begint met 'SetHandler' en pas die aan van:

SetHandler application/x-httpd-php

naar:

SetHandler "proxy:fcgi://127.0.0.1:9000"

Sla je wijzigingen op en sluit nano met ctrl + x > y > enter.


 

Stap 5

Apache en PHP-FPM staat na de installatie uitgeschakeld en start ook niet automatisch na een herstart van CentOS. Je schakelt beide in en laat ze automatisch starten met de commando's:

systemctl enable httpd
systemctl enable php-fpm
systemctl start httpd
systemctl start php-fpm

Apache toestaan in je firewall

 

CentOS 7 komt standaard met Firewalld als firewall en out-of-the-box staan alle poorten daarin dicht. Je zet de http-(80) en https-(443) poorten open met de commando's:

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload

Het laatste commando hierboven voert de wijziging live door. CentOS komt standaard met Selinux als aanvullende beveiliging. De http- en https-poorten staan hier standaard al in open en hoef je verder niets voor aan te passen.


 

Testen

Je kunt nu direct de werking van je web server testen door in een browser naar http://voorbeeld.nl te gaan, waarbij je voorbeeld.nl vervangt door je hostname (te controleren met het commando 'hostname'), of het IP-adres van je VPS. Je ziet dan de standaard test-pagina:

 


PHP installeren en updaten

 

Stap 1

Apache komt na de installatie zonder PHP. Wil je een dynamische PHP-website hosten (e.g. WordPress), installeer dan eerst PHP met:

yum -y install php php-mysql

 

Stap 2

De installatie komt met PHP 5.4, maar wij gaan er van uit dat je liever een nieuwere en veiligere versie gebruikt. Om te kunnen upgraden naar PHP 7.2 heb je de EPEL- en REMI-repositories nodig:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://rpms.remirepo.net/enterprise/remi-release-7.rpm


 

Stap 3

Open de Remi PHP 7.3 repository configuratie:

nano /etc/yum.repos.d/remi.repo

 

Stap 4

Schakel de repository in door enabled=0 te veranderen naar enabled=1 in het [remo-php73] deel, oftewel:

[remi-php73]
name=Remi's PHP 7.3 RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/php73/$basearch/
#mirrorlist=https://rpms.remirepo.net/enterprise/7/php73/httpsmirror
mirrorlist=http://cdn.remirepo.net/enterprise/7/php73/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

Sla tot slot je wijzigingen op en sluit nano (ctrl + x > y > enter)


 

Stap 5

Update je PHP-versie met:

yum -y upgrade php

Je PHP-versie is nu geüpgraded naar 7.3.5 (of nieuwer). Je controleert de preciese versie met:

php -v

 

Stap 6

Apache komt met een minimale configuratie waar niet automatisch er van uit wordt gegaan dat je een PHP website wil hosten. Het gevolg hiervan is dat bij bezoek van een website die PHP gebruikt (i.e. via index.php) de Apache placeholder getoond wordt in plaats van je website.

Het is dus belangrijk om hiervoor een kleine aanpassing in Apache te maken zodat Apache daadwerkelijk je website toont. Open hiervoor httpd.conf:

nano /etc/httpd/conf/httpd.conf

 

Stap 7

Zoek naar het stukje dat er uit ziet zoals hier onder:

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

Pas het aan naar:

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

Sla de wijzigingen op en sluit Nano (ctrl + x > y > enter). Het maakt nu niet meer uit of een website index.html of index.php gebruikt.


 

Stap 8

Herstart tot slot Apache:

systemctl restart httpd

Je Apache-server is nu helemaal klaar voor PHP. Vergeet niet MariaDB te installeren als er ook een database aan je website gekoppeld is en je VHost te configureren als je meerdere sites host.


Een VHost gebruiken

Wil je meer dan één domein hosten? Dan gebruik je een VHost-systeem (ook bekend als VirtualHost). Een VHost-file bevat o.a. de gegevens waar op je VPS specifieke domeinen gehost worden. Hierdoor worden bezoekers van domeinen die je op je VPS host automatisch naar de juiste mappen op je VPS gestuurd waar de websites zich bevinden (zonder dat die bezoekers daar iets van merken).

 

Stap 1

Maak de vhost file aan met het commando:

nano /etc/httpd/conf.d/vhost.conf

 

Stap 2

Neem de inhoud hieronder over, waarbij je example.com vervangt door de naam van het domein dat je wil hosten op je VPS.

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/html/example.com/
    ErrorLog /var/log/httpd/example.com/error.log
    CustomLog /var/log/httpd/example.com/access.log combined
</VirtualHost>

Voor ieder domein dat je extra wil toevoegen (ongeacht het aantal), voeg je het stukje vanaf <VirtualHost *:80> t/m </VirtualHost> opnieuw toe, waarbij je de domeinnaam vervangt door het daadwerkelijke andere domein. Voor example.com en voorbeeld.nl zou dit er als volgt uitzien:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/html/example.com/
    ErrorLog /var/log/httpd/example.com/error.log
    CustomLog /var/log/httpd/example.com/access.log combined
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin admin@voorbeeld.nl
    ServerName voorbeeld.nl
    ServerAlias www.voorbeeld.nl
    DocumentRoot /var/www/html/voorbeeld.nl/
    ErrorLog /var/log/httpd/voorbeeld.nl/error.log
    CustomLog /var/log/httpd/voorbeeld.nl/access.log combined
</VirtualHost>

 

Stap 3

De directories die in de vorige stap staan bestaan nog niet en maak je samen met de log files eerst aan. Vervang hier example.com door de naam van het domein dat je toevoegt:

mkdir -p /var/www/html/example.com
mkdir -p /var/log/httpd/example.com
touch /var/log/httpd/example.com/error.log
touch /var/log/httpd/example.com/access.log

De toevoeging -p (-parent) maakt indien nodig alle mapstructuren aan die voor /example.com staan. In principe zouden deze allemaal al moeten bestaan.


 

Stap 4

Je kunt nu direct aan de slag met je website, door deze via SFTP of FTPS te uploaden, of door met een teksteditor vanuit command-line een html-website te maken (voor PHP, zie PHP installeren). Je kunt bijvoorbeeld als volgt een info.php pagina maken:

  • Open php.info:
    nano /var/www/html/example.com/info.php
  • Voeg de volgende inhoud toe:
    <?php
    phpinfo();
    ?>
    

 

Je Apache-server is nu klaar! Gebruikt je website een database? Neem dan ook een kijkje in onze MariaDB-handleiding. Voor het beveiligen van je website kun je onze Apache SSL-handleiding gebruiken.

Mocht je aan de hand van dit artikel nog vragen hebben, aarzel dan niet om onze supportafdeling te benaderen. Je kunt hen bereiken via de knop 'Neem contact op' onderaan deze pagina.

Wil je dit artikel met andere gebruikers bespreken, laat dan vooral een bericht achter onder 'Reacties'.

Heb je ook een goed idee?

Stuur jouw idee in! Met genoeg stemmen komt jouw idee op onze wishlist!

Heeft dit artikel je geholpen?

Maak een account aan of log in om een beoordeling achter te laten.

Reacties

Maak een account aan of log in om een reactie te plaatsen.

0
florecom 12 augustus 2019 (#3400)

De repo's voor de php versies zijn op dit moment opgesplitst en te vinden in de map /etc/yum.repos.d/. Let hier even op in stap 3 en 4 van "PHP installeren en updaten".

Kom je er niet uit?

Ontvang persoonlijke hulp van onze supporters

Neem contact op