apache2 web-server (inleiding)
apache2 is een webserver
apache-webserver wordt ontwikkeld sinds 1995, voor het, toen nog, prille world wibe web. Dit onder het toen snel populair wordende besturingssysteem LINUX. De naam komt van - 'a patchy server' - een geheel van bij mekaar gegooide patches van NCSA webserver. Patsches om tot een stabiele daemon te komen. APACHE heeft ooit een marktaandeel gehad van 70% van alle webservers, maar moet de laatste jaren terrein prijsgeven aan NGINX, een eveneens onder linux draaiende webserver. (meer statistieken: https://news.netcraft.com)
apache webserver home page: https://httpd.apache.org/
apache wikipedia: https://en.wikipedia.org/wiki/Apache_HTTP_Server
apache wikipedia nederlands: apache wikipedia nederlands
- installatie van apache2 onder ubuntu-16.04
Werk op een ubuntu server versie 16.04 (of hoger) met een bridged netwerk, vast ip-adres en een unieke hostname. Zorg dat ssh werkt. Denk ook aan een snapshot. Doe eenapt-get update
/apt-get upgrade
user@ubu16-srv-01:~$
sudo apt-get install apache2
Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 ssl-cert Suggested packages: www-browser apache2-doc apache2-suexec-pristine | apache2-suexec-custom openssl-blacklist
wat wordt er geinstalleerd:
The following NEW packages will be installed: apache2 apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 ssl-cert 0 upgraded, 10 newly installed, 0 to remove and 0 not upgraded. Need to get 1.557 kB of archives. After this operation, 6.428 kB of additional disk space will be used.
installatie proces ...
Do you want to continue? [Y/n] y Get:1 http://be.archive.ubuntu.com/ubuntu xenial/main amd64 libapr1 amd64 1.5.2-3 [86,0 kB] Get:2 http://be.archive.ubuntu.com/ubuntu xenial/main amd64 libaprutil1 amd64 1.5.4-1build1 [77,1 kB] Get:3 http://be.archive.ubuntu.com/ubuntu xenial/main amd64 libaprutil1-dbd-sqlite3 amd64 1.5.4-1build1 [10,6 kB] Get:4 http://be.archive.ubuntu.com/ubuntu xenial/main amd64 libaprutil1-ldap amd64 1.5.4-1build1 [8.720 B] Get:5 http://be.archive.ubuntu.com/ubuntu xenial/main amd64 liblua5.1-0 amd64 5.1.5-8ubuntu1 [102 kB] Get:6 http://be.archive.ubuntu.com/ubuntu xenial-updates/main amd64 apache2-bin amd64 2.4.18-2ubuntu3.2 [926 kB] Get:7 http://be.archive.ubuntu.com/ubuntu xenial-updates/main amd64 apache2-utils amd64 2.4.18-2ubuntu3.2 [81,7 kB] Get:8 http://be.archive.ubuntu.com/ubuntu xenial-updates/main amd64 apache2-data all 2.4.18-2ubuntu3.2 [162 kB] Get:9 http://be.archive.ubuntu.com/ubuntu xenial-updates/main amd64 apache2 amd64 2.4.18-2ubuntu3.2 [86,7 kB] Get:10 http://be.archive.ubuntu.com/ubuntu xenial/main amd64 ssl-cert all 1.0.37 [16,9 kB] Fetched 1.557 kB in 0s (5.261 kB/s) Preconfiguring packages ... Selecting previously unselected package libapr1:amd64. (Reading database ... 91944 files and directories currently installed.) Preparing to unpack .../libapr1_1.5.2-3_amd64.deb ... Unpacking libapr1:amd64 (1.5.2-3) ... ... Processing triggers for libc-bin (2.23-0ubuntu7) ... ... Setting up libapr1:amd64 (1.5.2-3) ... Setting up libaprutil1:amd64 (1.5.4-1build1) ... Setting up libaprutil1-dbd-sqlite3:amd64 (1.5.4-1build1) ... Setting up libaprutil1-ldap:amd64 (1.5.4-1build1) ... Setting up liblua5.1-0:amd64 (5.1.5-8ubuntu1) ... Setting up apache2-bin (2.4.18-2ubuntu3.2) ... Setting up apache2-utils (2.4.18-2ubuntu3.2) ... Setting up apache2-data (2.4.18-2ubuntu3.2) ... Setting up apache2 (2.4.18-2ubuntu3.2) ...
standaard modules:
Enabling module mpm_event. Enabling module authz_core. Enabling module authz_host. Enabling module authn_core. Enabling module auth_basic. Enabling module access_compat. Enabling module authn_file. Enabling module authz_user. Enabling module alias. Enabling module dir. Enabling module autoindex. Enabling module env. Enabling module mime. Enabling module negotiation. Enabling module setenvif. Enabling module filter. Enabling module deflate. Enabling module status. Enabling conf charset. Enabling conf localized-error-pages. Enabling conf other-vhosts-access-log. Enabling conf security. Enabling conf serve-cgi-bin.
standaard website:
Enabling site 000-default.
eindafwikkeling:
Setting up ssl-cert (1.0.37) ... Processing triggers for libc-bin (2.23-0ubuntu7) ... Processing triggers for systemd (229-4ubuntu17) ... Processing triggers for ureadahead (0.100.0-19) ... Processing triggers for ufw (0.35-0ubuntu2) ...
- testen
- installeer
lynx
op je server en tik daarna
user@ubu16-srv-01:~$
lynx localhost
je ziet dan het volgende:Ubuntu Logo Apache2 Ubuntu Default Page It works! This is the default welcome page used to test the correct operation of the Apache2 server after installation on Ubuntu systems. It is based on the equivalent page on Debian, from which the Ubuntu Apache packaging is derived. If you can read this page, it means that the Apache HTTP server installed at this site is working properly. You should replace this file (located at /var/www/html/index.html) before continuing to operate your HTTP server. If you are a normal user of this web site and don't know what this page is about, this probably means that the site is currently unavailable due to maintenance. If the problem persists, please contact the site's administrator. Configuration Overview Ubuntu's Apache2 default configuration is different from the upstream default configuration, and split into several files optimized for interaction with Ubuntu tools. The configuration system is fully documented in /usr/share/doc/apache2/README.Debian.gz. Refer to this for the full documentation. Documentation for the web server itself can be found by accessing the manual if the apache2-doc package was installed on this server. The configuration layout for an Apache2 web server installation on Ubuntu systems is as follows: /etc/apache2/ -- press space for next page -- Arrow keys: Up and Down to move. Right to follow a link; Left to go back. H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list
- open een browser op je lap-/desktop en gebruik het statisch ip van je server als URL.
als dit niet werkt, kijk je netwerkinstellingen dan na ...
- installeer
- oefening
Zoek zelf a.d.h.v.dpkg
:- de index.html van de default website
- de configuratiefiles
- de versie van apache2
- de apache binaries
- daemon admin = service management (start/stop/reload ...)
- using 127.0.1.1 for ServerName
Tijdens de opstartroutine verschijnt de volgende melding op scherm (je ziet die ook als je de status van apache2 opvraagt metsystemctl
):
Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
Die warning verdwijnt als je in het bestand
/etc/apache2/sites-available/000-default.conf
de directive ServerName gebruikt, in het volgende voorbeeld op de tweede regel:<VirtualHost *:80> ServerName localhost ... ServerAdmin webmaster@localhost DocumentRoot /var/www/html ... </VirtualHost>
/etc/apache2/sites-available/000-default.conf
is de config-file van de default website.
- DocumentRoot
Wat we natuurlijk graag zouden weten is waar de website te vinden is in het linux filesystem. Dat kun je instellen met de directive DocumentRoot. In het voorbeeld van punt 4, hierboven, zien we dat die default ingesteld staat op/var/www/html
. Dat is niet voor alle linux distributies hetzelfde.
- configuratie
Volgens de default webpage is de organisatie als volgt:# The Apache 2 web server configuration in Debian is quite different to # upstream's suggested way to configure the web server. This is because Debian's # default Apache2 installation attempts to make adding and removing modules, # virtual hosts, and extra configuration directives as flexible as possible, in # order to make automating the changes and administering the server as easy as # possible. ... # It is split into several files forming the configuration hierarchy outlined # below, all located in the /etc/apache2/ directory: # # /etc/apache2/ # |-- apache2.conf # | `-- ports.conf # |-- mods-enabled # | |-- *.load # | `-- *.conf # |-- conf-enabled # | `-- *.conf # `-- sites-enabled # `-- *.conf
Op de default website van apache2 onder ubuntu 16, vinden we een beknopte uitleg van hoe de configuratie in mekaar zit. In debian-based distro's (zoals ubuntu) werken we met een verspreide configuratie.
- er is een config-directory:
/etc/apache2
- daarin zit de hoofd-configuratie-file:
/etc/apache2/apache2.conf
- vanuit
apache2.conf
worden include bestanden ingelezen:
- modules
# Include module configuration: IncludeOptional mods-enabled/*.load IncludeOptional mods-enabled/*.conf
Modules moeten zo nodig geladen worden, en hebben een configuratie.
In principe komen alle geïnstalleerde modules met hun load-/conf-files terecht in
/etc/apache2/mods-available
Maar, niet alle geïnstalleerde modules worden geladen, alleen de 'enabled' modules.
Die vinden we terug in
/etc/apache2/mods-enabled
Inmods-enabled
vinden we symbolic links naar geselecteerde modules van mods-available.
- ports
# Include list of ports to listen on Include ports.conf
De configuratie file van de TCP-poorten waarop http actief is
- conf
# Include generic snippets of statements IncludeOptional conf-enabled/*.conf
Een directory waarin je 'stukken' configuratie kwijt kan
- virtual hosts
# Include the virtual host configurations: IncludeOptional sites-enabled/*.conf
Apache2 werkt standaard met virtual hosts : een manier om verschillende websites met telkens een andere FQDN te draaien op dezelfde machine, met slechts één IP-adres.
De directorysites-enabled
bevat symbolic links naar de driectorysites-available
. Insites-available
vinden we files met telkens één configuratie van één virtual host. Er is er altijd minstens één:000-default.conf
Indien een beheerder een site tijdelijk uit de lucht wil halen, hoeft hij niet de configuratie te parkeren op een tijdelijke directory, maar kan hij gewoon de link naar die site verwijderen. Bij een heractivering moet alleen de link terug worden aangemaakt.
- er is een config-directory:
- versie
user@ubu16-srv-01:~$
dpkg -l | grep apache2
ii apache2 2.4.18-2ubuntu3.2 Apache HTTP Server ii apache2-bin 2.4.18-2ubuntu3.2 Apache HTTP Server (modules and other binary files) ii apache2-data 2.4.18-2ubuntu3.2 Apache HTTP Server (common files) ii apache2-utils 2.4.18-2ubuntu3.2 Apache HTTP Server (utility programs for web srvrs)
user@ubu16-srv-01:~$
sudo /usr/sbin/apache2 -v
Server version: Apache/2.4.18 (Ubuntu) Server built: 2017-05-05T16:32:00
- apache2 daemon admin (service mgmt)
a)systemctl
net zoals bijsshd
kun jeapache2
controlleren en beheren metsystemctl
.
user@ubu16-srv-01:~$
sudo systemctl status apache2
● apache2.service - LSB: Apache2 web server Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since di 2017-06-06 18:57:25 CEST; 3min 59s ago Docs: man:systemd-sysv-generator(8) Process: 1072 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCES Tasks: 55 Memory: 4.5M CPU: 148ms CGroup: /system.slice/apache2.service ├─1165 /usr/sbin/apache2 -k start ├─1168 /usr/sbin/apache2 -k start └─1169 /usr/sbin/apache2 -k start jun 06 18:57:23 ubu16-srv-01 systemd[1]: Starting LSB: Apache2 web server... jun 06 18:57:23 ubu16-srv-01 apache2[1072]: * Starting Apache httpd web server a jun 06 18:57:24 ubu16-srv-01 apache2[1072]: AH00558: apache2: Could not reliably jun 06 18:57:25 ubu16-srv-01 apache2[1072]: * jun 06 18:57:25 ubu16-srv-01 systemd[1]: Started LSB: Apache2 web server.
user@ubu16-srv-01:~$
sudo systemctl stop apache2
user@ubu16-srv-01:~$
sudo systemctl status apache2
● apache2.service - LSB: Apache2 web server Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: inactive (dead) since di 2017-06-06 19:02:47 CEST; 1s ago Docs: man:systemd-sysv-generator(8) Process: 1311 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS) Process: 1072 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCES jun 06 19:02:46 ubu16-srv-01 systemd[1]: Stopping LSB: Apache2 web server... jun 06 19:02:46 ubu16-srv-01 apache2[1311]: * Stopping Apache httpd web server a jun 06 19:02:47 ubu16-srv-01 apache2[1311]: * jun 06 19:02:47 ubu16-srv-01 systemd[1]: Stopped LSB: Apache2 web server.
Alle
systemctl
operaties (status, start, stop, restart, reload, enable, disable) werken op de gekende manier.
b) sys-V
Als we daarnetsystemctl
gebruikten, merkten we misschien het volgende op:
ExecStop=/etc/init.d/apache2 stop
Dit betekent dat het commando
systemctl stop
vertaald wordt naar
/etc/init.d/apache2 stop
Als we/etc/init.d/apache2
bekijken, blijkt dit een script te zijn:#!/bin/sh ### BEGIN INIT INFO # Provides: apache2 # Required-Start: $local_fs $remote_fs $network $syslog $named # Required-Stop: $local_fs $remote_fs $network $syslog $named # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # X-Interactive: true # Short-Description: Apache2 web server # Description: Start the web server # This script will start the apache2 web server. ### END INIT INFO DESC="Apache httpd web server" NAME=apache2 DAEMON=/usr/sbin/$NAME SCRIPTNAME="${0##*/}" SCRIPTNAME="${SCRIPTNAME##[KS][0-9][0-9]}" if [ -n "$APACHE_CONFDIR" ] ; then ... (afgeknipt) ...
Dit script kan worden uitgevoerd als
sudo
met de volgende opties:
$ sudo /etc/init.d/apache2
Usage: apache2 {start|stop|graceful-stop|restart|reload|force-reload}
meer informatie oversys-v init
op https://en.wikipedia.org/wiki/Init
c)apache2ctl
apache2 wordt altijd geinstalleerd met zijn eigen daemon adminscript:/usr/sbin/apache2ctl
apache2ctl
is een script vergelijkbaar met/etc/init.d/apache2
maar bevat meer mogelijkheden:
$ /usr/sbin/apache2ctl
Usage: /usr/sbin/apache2ctl start|stop|restart|graceful|graceful-stop|configtest|status|fullstatus|help
/usr/sbin/apache2ctl <apache2 args>
/usr/sbin/apache2ctl -h (for help on <apache2 args>)
meer informatie: https://httpd.apache.org/docs/current/programs/apachectl.html