Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:apache

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Both sides previous revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
software:apache [2012/05/27 14:16]
mhoffmann [Virtuelle Hosts und Direktiven]
software:apache [2013/01/15 12:37] (aktuell)
khopf [Konfiguration des Webservers]
Zeile 1: Zeile 1:
 ====== Apache Webserver ====== ====== Apache Webserver ======
 +//<- Zurück zum Artikel [[:​software]]//​
 +
 Apache ist ein weit verbreiteter Webserver. Apache ist ein weit verbreiteter Webserver.
  
 +===== Betriebsmodi =====
 +Apache kann mit zwei MPM (multi processing module) arbeiten, die eine unterschiedliche Programmarchitektur haben ((http://​itecsoftware.com/​apache-prefork-vs-worker-threads)).
 +
 +==== MPM Prefork ====
 +
 +Der Apache Prefork MPM nutzt keine Threads und ist ähnlich der Engine in Apache 1.x. Mit PHP-Anwendungen und statischen Seiten sowie CGI-Scripts,​ die nicht thread-basiert arbeiten können stellt dieser Betriebsmodus eine bessere Alternative dar. Auf Linux-Maschinen hat dieser Betriebsmodus eine ähnliche Performance wie der Worker, auf Solaris ist Worker besser.
 +
 +==== MPM Worker Threads ====
 +
 +Der Apache Worker ist eine neue Thread-basierte Implementierung,​ die weniger Speicher benötigt und auf ausgelasteten Servern für eine bessere Skalierbarkeit sorgt und auch bei starker Auslastung noch gute Ladezeiten garantiert.
 ===== Benutzer und Gruppen ===== ===== Benutzer und Gruppen =====
 Der Apache-Webserver läuft unter Ubuntu standardmäßig mit dem Nutzer www-data:​www-data. Die Benutzer der SSH / FTP-Accounts (zum Zugriff auf die virtuellen Hosts) müssen demnach in der Gruppe www-data sein, damit eine Zugriffssteuerung möglich ist. Dateien und Verzeichnisse,​ die der Apache ,,nur lesen“ darf, werden dann mit den Rechten 750 (d rwx r-x- —) belegt und solche, in die er auch schreiben darf mit 770 (d rwx rwx —). Andere Nutzer dürfen auf die Dateien zunächst nicht zugreifen. Falls das Der Apache-Webserver läuft unter Ubuntu standardmäßig mit dem Nutzer www-data:​www-data. Die Benutzer der SSH / FTP-Accounts (zum Zugriff auf die virtuellen Hosts) müssen demnach in der Gruppe www-data sein, damit eine Zugriffssteuerung möglich ist. Dateien und Verzeichnisse,​ die der Apache ,,nur lesen“ darf, werden dann mit den Rechten 750 (d rwx r-x- —) belegt und solche, in die er auch schreiben darf mit 770 (d rwx rwx —). Andere Nutzer dürfen auf die Dateien zunächst nicht zugreifen. Falls das
Zeile 12: Zeile 24:
 Die zentrale Konfigurationsdatei befindet sich unter /​etc/​apache2/​apache2.conf. Darin werden die Konfigurationsdaten für die Module (mods-enabled/​*) und die Konfigurationsdateien für die einzelnen Webseiten (sites-enabled/​*) geladen. Die zentrale Konfigurationsdatei wird demnach nur selten abgeändert. Die zentrale Konfigurationsdatei befindet sich unter /​etc/​apache2/​apache2.conf. Darin werden die Konfigurationsdaten für die Module (mods-enabled/​*) und die Konfigurationsdateien für die einzelnen Webseiten (sites-enabled/​*) geladen. Die zentrale Konfigurationsdatei wird demnach nur selten abgeändert.
  
-==== Virtuelle Hosts und Direktiven ==== +  * [[software:apache:Virtuelle Hosts]] 
-Um verschiedene Webseiten auf einem Server sauber voneinander zu trennen, hat Apache das Konzept der virtuellen Hosts. Je nach angefragtem Domainnamen oder IP-Adresse wird dann unterschiedliches von Apache auf die Anfrage ausgeliefert. Details zu den verschiedenen Arten können in der Apache-Dokumentation[http://httpd.apache.org/​docs/​2.2/​de/​vhosts/​abgerufen werden. +  ​[[software:apache:SSL]] 
- +  * [[software:apache:Authentifizierung]] 
-Werden VHosts verwendet, ist die Standardkonfiguration nicht mehr aktiv und muss auch in einen entsprechenden VHost ausgelagert werden. Kollidieren zwei VHosts mit ihrer Konfiguration wird beim Start des Apache eine Fehlermeldung ausgegeben. +  ​* ​[[software:apache:Subversion]] 
- +  ​* ​[[software:apache:CGI]] 
-Unter Ubuntu liegen die Apache-Konfigurationsdateien unter /​etc/​apache2/​. Im Verzeichnis sites-available/​ befinden sich alle verfügbarten VHost-Konfigurationen und im Verzeichnis sites-enabled/​ ggf. ein Softlink zu der Konfiguration.  +  ​[[software:apache:WebDAV]]
- +
-=== Aktivieren einer VHost-Konfiguration === +
-  # a2ensite [Domainname][.ssl] +
- +
-=== Deaktivieren einer VHost-Konfiguration === +
-  ​# a2dissite ​[Domainname][.ssl] +
- +
-=== Beispiel-Konfiguraionsdatei für einen VHost (ohne SSL) === +
-  <​VirtualHost *:80> +
-  # Minimal-Daten eines VHosts +
-  ServerName wiba10.de +
-  DocumentRoot "/​srv/​www/​vhosts/​wiba10.de/​httpdocs"​ +
-  ServerAdmin webmaster@wiba10.de +
-   +
-  # Auf welche Domains "​hört"​ dieser VHost auch noch? +
-  ServerAlias www2.wiba10.de www.wiba10.de +
-   +
-  # Logdateien für einen VHost von anderen Logs des Apache trennen +
-  ErrorLog /​srv/​www/​vhosts/​wiba10.de/​logs/​error.log +
-  LogLevel warn +
-  CustomLog /​srv/​www/​vhosts/​wiba10.de/​logs/​access.log "​combined"​ +
-   +
-  # Berechtigungen für den Dateizugriff setzen +
-   <​Directory "/​srv/​www/​vhosts/​wiba10.de/​httpdocs">​ +
-    allow from all +
-    Options +Indexes +
-   </​Directory>​ +
-  </ VirtualHost > +
-   +
-=== Permanente Weiterleitungen === +
-Soll ein Host permanent auf einen anderen weitergeleitet werden, so lässt sich das mittels "​redirect"​ lösen. +
-Dies ist beispielsweise hilfreich, wenn man einen :80 Host dauerhaft auf einen :443 SSL-Host weiterleiten will. +
-  ​<​VirtualHost>​ +
-  #Name des Hosts +
-  Servername webmail.wiba10.de +
-  # Dauerhafte Weiterleitung aller Anfragen für den Host ( / ) weiterleiten +
-  redirect permanent / https://​webmail.wiba10.de +
-  </ VirtualHost>​ +
-   +
- +
-===== Konfiguration der SSL-Verschlüsselung ===== +
-Apache Modul laden, wenn es nicht bereits geladen ist: +
- +
-  $ a2enmod ssl +
- +
-In /​etc/​apache2/​ports.conf muss der Port 443 mit dem Befehl Listen 443 im Bereich <​IfModule modssl.c>​ eingetragen werden. +
- +
-Es muss noch die Direktive (= Anweisung, Auftrag, Befehl, Richtlinie) NameVirtualHost ​*:443 in diesem Bereich eingetragen werden und in der +
-/​etc/​apache2/​sites-available/​default-ssl die VirtualHost-Direktive zu <​VirtualHost *:443> geändert +
-werden, damit virtuelle Hosts mit SSL genutzt werden können. +
- +
-  # /​etc/​init.d/​apache2 restart +
-   +
-==== Erstellen eines neuen Zertifikates ==== +
-Da der Nutzer des Verzeichnisses /​srv/​www/​vhosts/​[Domain]/ vom aktuell eingeloggten unterschiedlich ist, ist es zweckmäßig,​ +
-die Zertifikaterstellung zunächst im Home-Verzeichnis vorzunehmen und dann in das Vhost-Verzeichnis zu kopieren. +
- +
-Also: +
- +
-  # openssl req -new > [Zertifikat-Dateiname].csr +
- +
-Schlüssel erzeugen: +
- +
-  # openssl rsa -in privkey.pem -out [Zertifikat-Dateiname].key +
- +
-Öffentliches Zertifikat erstellen: +
- +
-  $ openssl x509 -in [Zertifikat-Dateiname].csr -out [Zertifikat-Dateiname].crt -req -signkey [Zertifikat-Dateiname].key +
- +
-Mit der Option --days ​[Tage] kann eine Gültigkeitsdauer in Tagen angegeben werden. +
- +
-Weitere Informationen:​ +
-[[http://httpd.apache.org/​docs/​2.0/​mod/​core.html#​%20namevirtualhost|Virtual Host Direktiven]] +
-[[http://​mrfoo.de/​archiv/​347-Howto-Apache2-SSL-Zertifikat-erstellen-und-aktivieren.html|TutoriumSSL-Zertifikat erstellen]] +
- +
- +
-==== Einbinden des Zertifikats in die Apache (VHost-)Konfiguration ==== +
-In der VHost-Konfiguration für den Port 443 (SSL-Port) folgende Zeilen hinzufügen:​ +
- +
-  ​# SSLEngine ​              On +
-  # SSLCertificateKeyFile ​  /​srv/​www/​vhosts/​[vhost-Ordner]/​[Dateiname].key +
-  # SSLCertificateFile ​     /​srv/​www/​vhosts/​[vhost-Ordner]/​[Dateiname].crt +
-  #       #Bei verifizierten Zertifikaten muss hier noch das SSLCACertificate der Zertifizierungsstelle eingebunden werden +
- +
- +
-====== Apache Module ====== +
-===== Einfache Authentifizierung (mod_auth) ===== +
-==== .htaccess-Datei ==== +
-Uber folgenden Befehl kann man einer .htpasswd-Datei neue Nutzer hinzufügen. Die Option -c legt eine +
-neue Datei an. +
- +
-  #  htpasswd ​ -b  [dateiname] ​ [nutzername] ​ [passwort] +
- +
-==== Passwort zu einem Benutzer hinzufügen ==== +
- +
-Hinzufügen eines Passworts zu einem Nutzer +
-  htpasswd -b [password-file] [username] [password] +
-===== MySQL-Authentifizierung (mod_auth_mysql) ===== +
-Man kann neben dem Zugriffsschutz,​ der über die .htaccess-Datei möglich ist, auch die Nutzer aus einer Datenbank mittels SQL auslesen. Das zugeh¨orige Modul holt man mit: +
-  # apt-get install libapache2-mod-auth-mysql +
- +
-Apache Modul aktivieren: +
-  # a2enmod auth mysql    +
-  # service apache2 restart +
- +
-MySQL-Tabellen anlegen +
-  mysql -uroot -p +
-   +
-  mysql> grant all on auth.* to auth_user@localhost identified by '<​password>';​ +
-   +
-  mysql> flush privileges;​ +
-   +
-  mysql> create database auth; +
-   +
-  CREATE TABLE `clients` ( +
-  `username` varchar(25) NOT NULL default '',​ +
-  `passwd` varchar(25) NOT NULL default '',​ +
-  `groups` varchar(25) NOT NULL default '',​ +
-  PRIMARY KEY (`username`),​ +
-  KEY `groups` (`groups`) +
-  ) ENGINE=MyISAM DEFAULT CHARSET=latin1;​ +
-   +
-  INSERT INTO `clients` VALUES ('<​username>',​ '<​password>',​ '<​group>'​);​ +
- +
-===== WebDav (mod_dav) ===== +
-Webdav ermöglicht einen Dateiupload und die Integration von entfernten Verzeichnissen in die Dateistruktur von Clients. +
-  $ a2enmod dav +
-  $ a2enmod dav fs +
-  # service apache2 restart +
- +
-===== Fast CGI (mod_fcgi / mod_fastcgi) ===== +
-Die Apache-Module ''​mod_fastcgi''​ (offenbar Fremdmodul) und ''​mod_fcgi''​ bieten eine schnellere Implementierung von CGI-Scripts. ''​mod_fcgi''​ ist wohl eine neuere Implementierung. +
- +
-Zur Installation:​ +
-  # apt-get install libapache2-mod-fcgi +
-  # service apache2 reload +
- +
- +
-===== Subversion (dav_svn) ===== +
-Mittels ''#​ apt-get subversion libapache2-svn apache2-mpm-prefork''​ kann man sich den Apache SVN-Server holen. Um über den Apache Webserver Zugriff auf das Repository zu erlangen, muss man noch das entsprechende Apache-Modul aktivieren: ''#​ a2enmod dav_ svn''​. Weitere Informationen unter[http://​wiki.ubuntuusers.de/​subversion]+
- +
-==== Anpassen der Webserverkonfiguraion ==== +
-Die Datei ''/​etc/​apache2/​mods-enabled/​dav_svn.conf''​ steuert die Konfiguration und muss bei mehreren Repositories wie folgt angepasst werden: +
- +
-  <​Location /svn> +
-    DAV svn #​ Aktiviert den Zugriff +
-    SVNPath /​var/​local/​svn #​ Pfad zu den Repos +
-    AuthType Basic #​ Authentifizierung +
-    AuthName "​Subversion repository"​ +
-    AuthUserFile /​etc/​apache2/​dav_svn.passwd +
-    <​LimitExcept GET PROPFIND OPTIONS REPORT>​ +
-       ​Require valid-user +
-    </​LimitExcept>​ +
-  </​Location>​ +
- +
-==== Anlegen eines Repositories ==== +
-In einem Verzeichnis,​ das nicht das Document Root-Verzeichnis des Webservers ist, kann dann angelegt werden (z.B. /​srv/​svn/​repo1). Mittels +
- +
-  /srv/svn/# svnadmin create nameDesRepositories +
- +
-Wird dann ein Repository erzeugt. Um das Verzeichnis auch aus dem Internet erreichbar zu machen, muss man den Dateibesitz zu ''​www-data:​www--data''​ ändern und dem Webserver ggf. Schreibrechte geben. +
-==== Benutzer hinzufügen und Berechtigung erteilen ==== +
-Informationen unter: http://​wiki.ubuntuusers.de/​Subversion#​Zentrale-Zugriffsbeschraenkung-mehrerer-Projekte +
- +
-Allg.: Für alle Repositories mit direktem Bezug zum Studium wurde der Übersicht wegen ein Meta-Repository "​wibaStud"​ erstellt. Diesem untergeordnet liegen alle SVN-Ordner, die als eigenständige Repositories betrachtet werden. +
-   +
-Für einen SVN-Zugang muss **kein** Benutzer auf der Ubuntu-Maschine angelegt werden, sondern nur in der Datei unter +
- +
-  # /​etc/​apache2/​dav_svn.authz +
- +
-Dort werden anfangs Gruppen definiert, die als Berechtigte einem Repository zugeordnet werden können. Es ist zudem möglich, einzelne Benutzern bestimmte Rechte zu geben. +
- +
-Schließlich muss das Password eines Nutzers angelegt/​geändert werden mit +
- +
-  # htpasswd -b dav_svn.passwd <​NUTZER>​ +
-   +
-Das Passwordfile für SVN liegt bei uns unter         +
-**/​etc/​apache2/​dav_svn.passwd** +
-==== Repositories Verwalten ==== +
-=== Repositories dumpen (incl. aller Revisionen) === +
-  svnadmin dump /​srv/​svn/​repo/​ > ~/​repo.dump +
- +
-=== Repository Dump einspielen === +
-  svnadmin load /​srv/​svn/​neuesRepo/​ < ~/repo.dump  +
- +
-Ein Dump kann auch in ein anderes Repository eingespielt werden: +
-  svnadmin load /​srv/​svn/​neuesRepo/​ --parent-dir /​unterverzeichnis/​ < ~/repo.dump  +
-   +
-Somit können Repositories auch zusammengefasst werden ((http://​www.anrichter.net/​2009/​01/​subversion-repositories-zusammenfassen/​))+
  
 +====== Performance-Verbesserungen des Webservers (und seiner Komponenten) ======
 +  * APC(alternative page cache) als PHP accelerator installeren((http://​curltable.the-yard.net/​blog/​install-apc))
  
  
 +{{tag>​apache webserver server}}

Bei Verwendung dieses Wikis erklären Sie sich mit dem Haftungsausschluss, Nutzungsbedingungen und der Datenschutzerklärung dieses Wikis einverstanden. Impressum.

software/apache.1338121000.txt.gz · Zuletzt geändert: 2012/10/11 10:23 (Externe Bearbeitung)