Installieren Sie den Apache-Webserver
Vor einiger Zeit habe ich mein Ubuntu auf 13.10 aktualisiert und dann wurde die Apache-PHP-Installation durcheinander gebracht. Also musste ich es schnell neu installieren, um weiter an meinen PHP-Projekten zu arbeiten.
Apache ist in den Ubuntu-Repositorys vorhanden und kann daher ohne großen Aufwand installiert werden. Hier ist der Schnellbefehl, den Sie brauchen, um auf das Terminal zu feuern.
$ sudo apt-get install apache2
Apache konfiguriert sich standardmäßig schnell selbst, sodass Sie es vom Browser aus mit der Localhost-URL öffnen können
http://localhost/
Apache starten/stoppen
Verwenden Sie die folgenden Befehle, um den Apache-Webserver von der Befehlszeile aus zu starten oder zu stoppen.
# Start web server $ sudo service apache2 start # Stop the web server $ sudo service apache2 stop # Restart the web server $ sudo service apache2 restart # Reload configuration without restarting $ sudo service apache2 reload
Das standardmäßige Web-Root-Verzeichnis ist /var/www. Alle Dateien, die in diesem Verzeichnis abgelegt werden, sind also über die localhost-URL zugänglich. Später werden wir prüfen, wie das standardmäßige Web-Root-Verzeichnis geändert wird
Um zu überprüfen, welche Version von Apache installiert ist, verwenden Sie den Befehl apache2 mit der Option v/
$ apache2 -v Server version: Apache/2.4.6 (Ubuntu) Server built: Aug 9 2013 14:28:56
Konfigurationsdateien suchen
Um weitere Informationen darüber zu erhalten, wie genau Apache auf Ihrem System konfiguriert ist, verwenden Sie den Befehl apache2ctl.
$ apache2ctl -V AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Server version: Apache/2.4.6 (Ubuntu) Server built: Aug 9 2013 14:28:56 Server's Module Magic Number: 20120211:23 Server loaded: APR 1.4.8, APR-UTIL 1.5.2 Compiled using: APR 1.4.8, APR-UTIL 1.5.2 Architecture: 64-bit Server MPM: prefork threaded: no forked: yes (variable process count) Server compiled with.... -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) -D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=256 -D HTTPD_ROOT="/etc/apache2" -D SUEXEC_BIN="/usr/lib/apache2/suexec" -D DEFAULT_PIDLOG="/var/run/apache2.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="mime.types" -D SERVER_CONFIG_FILE="apache2.conf" .....
Es gibt den Namen der Konfigurationsdatei, den verwendeten Server mpm und viele andere Details an. Diese sind nützlich, wenn Sie Apache weiter konfigurieren.
Die Hauptkonfigurationsdatei befindet sich unter /etc/apache2/apache2.conf
Stellen Sie dem HTTPD_ROOT einfach SERVER_CONFIG_FILE voran, um den tatsächlichen Speicherort der Konfigurationsdatei zu erhalten.
Oder es gibt eine andere Option S, die auch verschiedene Konfigurationsdetails über Apache meldet
$ apache2ctl -S AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message VirtualHost configuration: *:80 is a NameVirtualHost default server localhost (/etc/apache2/sites-enabled/000-default.conf:1) port 80 namevhost localhost (/etc/apache2/sites-enabled/000-default.conf:1) port 80 namevhost localhost (/etc/apache2/sites-enabled/000-default.conf:1) ServerRoot: "/etc/apache2" Main DocumentRoot: "/var/www" Main ErrorLog: "/var/log/apache2/error.log" Mutex default: dir="/var/lock/apache2" mechanism=fcntl Mutex mpm-accept: using_defaults Mutex watchdog-callback: using_defaults Mutex rewrite-map: using_defaults PidFile: "/var/run/apache2/apache2.pid" Define: DUMP_VHOSTS Define: DUMP_RUN_CFG User: name="www-data" id=33 not_used Group: name="www-data" id=33 not_used User: name="www-data" id=33 not_used Group: name="www-data" id=33 not_used
All diese Informationen sind beim Einrichten von Apache sehr nützlich. Spart Zeit, die sonst mit Raten verbracht würde.
Es gibt viele Konfigurationsdateien, die mit Apache verbunden sind. Die Hauptkonfigurationsdatei ist, wie oben erwähnt, "apache2.conf". Diese Konfigurationsdatei enthält Anweisungen zum Laden weiterer Konfigurationsdateien. Hier ist die Zeile, die es tut.
# Include generic snippets of statements IncludeOptional conf-enabled/*.conf # Include the virtual host configurations: IncludeOptional sites-enabled/*.conf
Fehlermeldung beheben
Apache gibt standardmäßig die folgende Fehlermeldung aus
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Um dies zu beheben, setzen Sie die Variable ServerName in der Apache-Konfigurationsdatei
auf Ihren Hostnamen oder vollständig qualifizierten Domänennamen$ sudo nano /etc/apache2/apache2.conf
Fügen Sie die folgende Zeile am Ende hinzu
ServerName yourhostname
Apache-Konfiguration neu laden
$ sudo service apache2 reload
Web-Root-Verzeichnis ändern
Um das Web-Root-Verzeichnis zu ändern, müssen wir die Einstellung in den Konfigurationsdateien „sites-enabled“ ändern. Als Standardverfahren wird für jeden virtuellen Host eine separate Konfigurationsdatei im Verzeichnis „sites-enabled“ erstellt.
Ein virtueller Host ist eine Domäne. Sie können also mehrere Domänen von Apache bedienen lassen. In diesem Beispiel verwenden wir jedoch nur die Standardkonfigurationsdatei.
Es sollte eine Datei namens 000-default.conf im Verzeichnis /etc/apache2/sites-enabled geben. Wenn es nicht dort ist, kopieren Sie es aus /etc/apache2/sites-available. Die Datei sieht zunächst so aus.
<VirtualHost *:80> ... #ServerName www.example.com ServerAdmin [email protected] DocumentRoot /var/www # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined ... </VirtualHost>
Ändern Sie den DocumentRoot-Pfad in den neuen Webstamm, den Sie verwenden möchten. Speichern Sie die Datei und starten Sie Apache neu.
$ sudo service apache2 restart
Versuchen Sie nun, auf localhost zuzugreifen. Wenn es nicht funktioniert, überprüfen Sie das Fehlerprotokoll unter
$ cat /var/log/apache2/error.log
Ab Apache 2.4.3 gibt es eine Sicherheitsfunktion, die verhindert, dass Apache auf andere Verzeichnisse zugreift. Und dann würde die Localhost-URL die Fehlermeldung "Forbidden" anzeigen und das Fehlerprotokoll würde eine Nachricht wie diese enthalten
[Sun Nov 03 11:25:24.521491 2013] [authz_core:error] [pid 6950] [client 127.0.0.1:41078] AH01630: client denied by server configuration: /var/www/phpinfo.php
Der Fehler bedeutet, dass Apache aufgrund einer Konfiguration nicht auf das Web-Root-Verzeichnis zugreifen kann. Um dies zu beheben, fügen Sie Folgendes zur vhost-Konfiguration hinzu
<Directory "/var/www2"> Order allow,deny Allow from all # New directive needed in Apache 2.4.3: Require all granted </Directory>
The "Require" directive fixes the problem. Newer version of Apache (2.3+) require the "Require" directive to allow access.
Die endgültige 000-default.conf-Datei sollte so aussehen
<VirtualHost *:80> ... #ServerName www.example.com ServerAdmin [email protected] DocumentRoot /var/www2 # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined ... # New directive needed in Apache 2.4.3: <Directory "/var/www2"> Order allow,deny Allow from all # New directive needed in Apache 2.4.3: Require all granted </Directory> </VirtualHost>
Starten Sie jetzt den Apache erneut und das neue Web-Root-Verzeichnis sollte endlich funktionieren.
Weitere Vhosts oder Domains hinzufügen
Um weitere virtuelle Hosts hinzuzufügen, erstellen Sie einfach weitere Konfigurationsdateien wie 000-default.conf und nennen Sie sie anders als mit einer conf-Erweiterung. Legen Sie in jeder Datei einen eindeutigen ServerNamen fest und geben Sie jedem Host ein separates Web-Root-Verzeichnis.
Erstellen Sie alternativ eine Konfigurationsdatei im Verzeichnis „sites-available“ und verwenden Sie den Befehl „a2ensite“, um die Site zu aktivieren. Es erstellt die erforderlichen symbolischen Links im Verzeichnis "sites-enabled".
Erstellen Sie also zuerst eine Konfigurationsdatei, indem Sie die Standardkonfigurationsdatei kopieren.
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/mysite.conf
Bearbeiten Sie die Konfigurationsdatei nach Bedarf. Das Wichtigste, was geändert werden muss, ist der Dokumentenstamm für die neue Site.
Aktivieren Sie ihn dann mit dem Befehl a2ensite
$ sudo a2ensite mysite
Apache neu starten. Und die neue Seite sollte gut funktionieren.
Htaccess-Datei aktivieren
Die htaccess-Datei ermöglicht es, verschiedene Apache-Konfigurationsparameter pro Verzeichnis zur Laufzeit zu ändern. Standardmäßig ist Apache nicht für die Verwendung der htaccess-Datei konfiguriert. Fügen Sie dazu einfach die folgende Zeile in den oben gezeigten Verzeichnisabschnitt ein.
AllowOverride FileInfo
Das Obige weist Apache an, mit dem Lesen von htaccess-Dateien zu beginnen und die darin geschriebenen Konfigurationsanweisungen zu parsen.
Die endgültige Konfiguration könnte so aussehen -
<Directory "/var/www2"> Order allow,deny Allow from all AllowOverride FileInfo # New directive needed in Apache 2.4.3: Require all granted </Directory>
Nach der Installation von Apache möchten Sie möglicherweise andere Dinge wie php, mysql, phpmyadmin installieren, je nachdem, was Sie alles brauchen. Also los und viel Spaß!!