Apache2 - Anleitungen: Unterschied zwischen den Versionen

Aus xinux.net
Zur Navigation springen Zur Suche springen
(Die Seite wurde geleert.)
 
Zeile 1: Zeile 1:
=ERLÄUTERUNG=
 
  
Für die einzelnen Erläuterungen wurde eine extra Wiki-Seite eingerichtet:
 
* [[apache2 - Erläuterung]]
 
 
==Installieren von apache2==
 
apt-get install apache2
 
 
===Konfigurieren von apache2===
 
Hauptkonfig-Datei
 
/etc/apache2/apache2.conf
 
Dateien die in apache2.conf included sind
 
/etc/apache2/ports.conf
 
Beschränkungen, Konfiguration:
 
/etc/apache2/sites-available/default
 
/etc/apache2/sites-available/default-ssl
 
 
===Apache2 steuern===
 
 
 
*start: startet den Webserver
 
*stop : stoppt den Server
 
*restart: startet den Server neu, bestehende Verbindungen auf den Server werden gekappt
 
*reload: lädt die Konfigurationsdateien neu, ohne dass Verbindungen getrennt werden
 
*force-reload: Lädt die Konfigurationsdateien neu, auch wenn dabei Verbindungen getrennt werden müssen
 
*sudo update-rc.d -f apache2 remove: Apache2 aus der Autostartliste entfernen
 
*sudo update-rc.d apache2 defaults: Apache2 wieder der Autostartliste hinzufügen
 
 
 
===Zugriffsbeschränkung===
 
 
Zuständige Konfig-Datei
 
'''/etc/apache2/sites-available/default'''
 
 
 
Mit <VirtualHost> bestimmt man zunächst, auf welche IP-Adresse und welchen TCP-Port die Website hören soll
 
 
 
  ServerAdmin blabla@xinux.de      #  Die Emailadresse des serveradmins
 
  ServerAlias www.XXXXXXXX.com    #  Alias für die Domain
 
  DocumentRoot /var/www/          #  Rootverzeichznis von Apache2
 
 
  Order deny,allow    - alle Deny-Anweisungen werden abgearbeitet
 
  Order allow,deny    - alle Allow-Anweisungen werden abgearbeitet
 
  Deny from all      - generelles Verbot
 
  Allow from all      - erlaubter Zugriff
 
  Options            - mit "+" erlaubt, mit "-" nicht erlaubt!
 
        FollowSymLinks - Beachtung symbloischer Links
 
        Multiviews    - Auslieferung alternativer Dokumente
 
        Indexes        - Wenn die URL ein Verzeichnis ist, wird es Ausgegeben
 
        AllowOverride  - legt fest, dass .htaccess-Dateien in den Verzeichnissen ignoriert werden
 
 
'''BEISPIEL:'''
 
 
<VirtualHost *:80>
 
        '''ServerAdmin XXXXX@xinux.de'''
 
        '''ServerAlias www.XXXXXXYX.com'''
 
        '''DocumentRoot /var/www/VERZEICHNIS'''
 
        <Directory />
 
                Order deny,allow 
 
                Deny from all
 
                Options FollowSymLinks
 
                AllowOverride None
 
        </Directory>
 
        <Directory /var/www/>
 
                '''Options -Indexes FollowSymLinks MultiViews'''
 
                AllowOverride None
 
                Order allow,deny
 
                allow from all
 
 
 
====Allgemein Beschränkung====
 
 
Beschränkung auf einen Client durch IP-Adresse
 
<Directory /var/www/>
 
      Options Indexes FollowSymLinks MultiViews
 
      AllowOverride None
 
      Order deny,allow
 
      allow from '''192.168.242.1'''
 
</Directory>
 
 
 
 
====Spezifische Beschränkung durch .htaccess====
 
<Directory /var/www/>
 
      Options Indexes FollowSymLinks MultiViews
 
      AllowOverride '''All'''
 
      Order deny,allow
 
      allow from all
 
</Directory>
 
 
 
====Namen basiert====
 
Um Virtuelle Hosts einzurichten muss man folgendes beachten:
 
 
In apache Version: 2.2.17 unter Ubuntu ist die Direktive '''NameVirtualHosts''' die unabdingbar ist in der '''/etc/apache2/ports.conf''' konfiguriert.
 
 
Man sollte wie folgt eine spezifische IP-Adresse und Port an die Virtual Hosts binden:
 
NameVirtualHost 192.168.81.21:80
 
Hier ist ein Beispiel für einen Virtual Host:
 
<VirtualHost '''192.168.81.21''':80>
 
        ServerAdmin webmaster@vulkan.int
 
        '''ServerName www.vulkan.int'''
 
        '''DocumentRoot /var/www/vulkan'''
 
        '''<Directory /var/www/vulkan>'''
 
                Options Indexes FollowSymLinks Multiviews
 
                AllowOverride AuthConfig
 
                Order allow,deny
 
                allow from all
 
        </Directory>
 
</VirtualHost>
 
Wie man sieht sollte der Virtual Host die selbe IP-Adresse haben. Dazu gibt man bei '''ServerName''' die Domain ein mit der er angesprochen wird. Die Domain muss im '''DNS-Server''' auf unseren Rechner eingetragen sein. '''DocumentRoot''' und '''<Directory ... >''' geben den Pfad an aus dem die Website geladen wird.
 
 
 
====IP basiert====
 
Um einen IP-Adress basierten Virtuellen Host zu erstellen reicht es wie unten folgt die IP-Adresse in die einer eigens angelegten Virtuellen Netzwerk-Schnittstelle zu ändern:
 
<VirtualHost '''192.168.81.41''':80>
 
        ServerAdmin webmaster@voyager.int
 
        ServerName www.voyager.int
 
        DocumentRoot /var/www/voyager
 
 
 
====.htaccess Datei====
 
Die '''.htaccess''' Datei muss in dem Ordner erstellt werden den sie schützen soll, folgende Konfiguration erlaubt Zugriff nur angelegten Nutzern mit Passwort
 
AuthType Basic
 
AuthName "Name des gesperrten Bereichs"
 
AuthUserFile /etc/apache2/httppasswd
 
Require valid-user
 
Das Passwort wird hier in /etc/apache2/httppasswd als Hashwert abgelegt, diesen bekommt man aus der /etc/shadow
 
 
cat /etc/shadow
 
...
 
'''benutzer:$6$NGljmME5$gOvoYpg2j.garO7ZsNaTh0EO.E3Ov6aBU1A5nNl1Ao9BRZDbaFmTpi/jws2GcE4fIkbTABu5Ekxc9fkCKgGKI2''':15226:0:99999:7:::
 
...
 
 
cat /etc/apache2/httppasswd
 
'''benutzer:$6$NGljmME5$gOvoYpg2j.garO7ZsNaTh0EO.E3Ov6aBU1A5nNl1Ao9BRZDbaFmTpi/jws2GcE4fIkbTABu5Ekxc9fkCKgGKI2'''
 
 
 
===SSL===
 
<!----------------------------
 
 
apt-get install ssl-cert
 
 
mkdir /etc/apache2/ssl
 
 
Zertifikat erstellen:
 
make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
 
 
ssl-Modul aktivieren und apache Konfiguration neu einlesen:
 
a2enmod ssl
 
bzw.
 
/etc/apache2/mods-enabled# ln -s ../mods-available/ssl.conf  .
 
/etc/apache2/mods-enabled# ln -s ../mods-available/ssl.load  .
 
 
/etc/init.d/apache2 restart
 
 
Modul in Seite einfügen
 
cp /etc/apache2/sites-available/voyager /etc/apache2/sites-available/voyager-ssl
 
 
cat /etc/apache2/sites-available/voyager-ssl
 
'''<IfModule mod_ssl.c>'''
 
<VirtualHost 192.168.81.41:'''443'''>
 
        ServerAdmin webmaster@voyager.int
 
        ServerName www.voyager.int
 
        DocumentRoot /var/www/voyager
 
        ErrorLog ${APACHE_LOG_DIR}/voyager.log
 
        <Location /admin >
 
                order deny,allow
 
                deny from all
 
        </Location>
 
        <Directory /var/www/voyager>
 
                AllowOverride AuthConfig
 
                Order deny,allow
 
                deny from all
 
                allow from 192.168.242.1
 
        </Directory>
 
        '''SSLEngine on'''
 
        '''SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem'''
 
        '''SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key'''
 
        '''<FilesMatch "\.(cgi|shtml|phtml|php)$">'''
 
              ''' SSLOptions +StdEnvVars'''
 
        '''</FilesMatch>'''
 
        '''<Directory /usr/lib/cgi-bin>'''
 
              ''' SSLOptions +StdEnvVars'''
 
      ''' </Directory>'''
 
        '''BrowserMatch "MSIE [2-6]" \'''
 
                '''nokeepalive ssl-unclean-shutdown \'''
 
                '''downgrade-1.0 force-response-1.0'''
 
      ''' BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown'''
 
</VirtualHost>
 
'''</IfModule>'''
 
Neue Site aktivieren
 
cd /etc/apache2/sites-enabled
 
ln -s /etc/apache2/sites-available/voyager-ssl
 
---------------->
 
 
====CA erstellen====
 
root@cardassia:/var/ssl# make-pki.sh ca
 
Arbeitsverzeichnis: /var/ssl/ca/
 
 
Wie ist der Name ihrer Oragnisation[xinux]?:
 
Generating RSA private key, 2048 bit long modulus
 
.........................................................................+++
 
..+++
 
e is 65537 (0x10001)
 
Signature ok
 
subject=/C=de/ST=pfalz/L=zw/OU=edv/CN=xinux-ca/emailAddress=technik@xinux.de
 
Getting Private key
 
Updating index.txt...done.
 
 
CA wurde erstellt!
 
 
====CERT und KEY erstellen====
 
root@cardassia:/var/ssl# make-pki.sh cert
 
Arbeitsverzeichnis: /var/ssl/ca/
 
 
Common Name eingeben: webserver
 
Generating RSA private key, 2048 bit long modulus
 
..........................................................................+++
 
.....................+++
 
e is 65537 (0x10001)
 
Signature ok
 
subject=/C=de/ST=pfalz/L=zw/OU=edv/CN=webserver/emailAddress=technik@xinux.de
 
Getting CA Private Key
 
Updating index.txt...done.
 
 
Zertifikat wurde erstellt!
 
 
 
====SSL Verzeichnis für Apache erstellen====
 
mkdir /etc/apache2/ssl
 
 
====CA in das Apache Verzeichnis kopieren====
 
cp -v /var/ssl/ca/ca.crt /etc/apache2/ssl/
 
„/var/ssl/ca/ca.crt“ -> „/etc/apache2/ssl/ca.crt“
 
 
 
====Webserverkey in das Apache Verzeichnis kopieren====
 
cp -v /var/ssl/ca/webserver.key /etc/apache2/ssl/
 
„/var/ssl/ca/webserver.key“ -> „/etc/apache2/ssl/webserver.key“
 
 
 
====Webservercert in das Apache Verzeichnis kopieren====
 
cp -v /var/ssl/ca/webserver.crt /etc/apache2/ssl/
 
„/var/ssl/ca/webserver.crt“ -> „/etc/apache2/ssl/webserver.crt“
 
 
 
====SSL Module aktivieren====
 
cd /etc/apache2/mods-enabled
 
ln -fs ../mods-available/ssl.* .
 
 
====Keys und Zertifikate in der Konfiguration bekannt machen====
 
Folgende Einträge sind in der Datei '''/etc/apache2/sites-available/default-ssl''' zu machen.
 
  SSLCertificateFile    /etc/apache2/ssl/webserver.crt
 
  SSLCertificateKeyFile /etc/apache2/ssl/webserver.key
 
  SSLCACertificateFile /etc/apache2/ssl/ca.crt
 
 
====Default SSL Datei aktivieren====
 
cd /etc/apache2/sites-enabled
 
/etc/apache2/sites-enabled# ln -sf ../sites-available/default-ssl .
 
 
 
====Nun muss natürlich die default-ssl bearbeitet werden (ähnlich wie die default)====
 
vi /etc/apache/sites-available/default-ssl
 
 
<VirtualHost _default_:443>
 
        ServerAdmin DEINE@EMAIL.ADRESSE
 
        ServerAlias https://www.DEINE-DOMAIN.de
 
        DocumentRoot /var/www/VERZEICHNIS/
 
        <Directory />
 
                Options FollowSymLinks
 
                AllowOverride None
 
        </Directory>
 
        <Directory /var/www/VERZEICHNIS/>
 
                Options -Indexes FollowSymLinks MultiViews
 
                AllowOverride None
 
                Order allow,deny
 
                allow from all
 
        </Directory>
 
        SSLEngine on
 
        SSLCertificateFile    /etc/apache2/ssl/webserver.crt
 
        SSLCertificateKeyFile /etc/apache2/ssl/webserver.key
 
 
 
====Apache neustarten====
 
/etc/init.d/apache2 restart
 
 
 
====Kontrollieren====
 
netstat -lntp | grep 443
 
tcp        0      0 0.0.0.0:443            0.0.0.0:*  LISTEN      18344/apache2
 
 
 
====kostenlose SSL Zert.-Stelle====
 
 
: https://www.startssl.com/
 
 
Ersetze die Zertifikate mit denen von startssl. Über das Konfigmenü kannst du dir key und crt downloaden und hier das ca-pem:
 
 
: https://www.startssl.com/?app=21
 
 
die '''/etc/apache2/sites-available/default-ssl''' mpsste so aussehen:
 
 
        SSLEngine on
 
        SSLCertificateFile    /etc/apache2/ssl/webserver.crt
 
        SSLCertificateKeyFile /etc/apache2/ssl/webserver.key
 
        SSLCACertificateFile /etc/apache2/ssl/ca.pem
 
        SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem
 
 
====Redirect von http auf https====
 
 
* Port 443 muss in der firewall geöffnet werden
 
* Man muss das in die sites-available/default eintragen:
 
Redirect permanent /VERZEICHNIS https://www.DEINE-DOMAIN.com/
 
 
===Logging===
 
ErrorLog /var/log/apache2/error.log
 
oder
 
ErrorLog ${APACHE_LOG_DIR}/error.log
 
 
 
===Beispiel HowTo===
 
 
: Nehmen wir einmal an wir wollen eine Webseite betreiben...
 
: Dazu benutzen wir eine Firewall, ein paar benötigte Module und natürlich apache2 (webserver).
 
 
: Wir starten das ganze indem wir den apache2 installieren.
 
 
apt-get install apache2
 
 
: Nachdem dieser installiert wurde + die benötigten Module für die Homepage '''(evtl. php5-mysql, mysql-server, php5, libapache2-mod-php5, vsftpd)''',
 
laden wir die Daten in ein erstelltes Verzeichnis hoch.
 
 
mkdir /var/www/deinname
 
 
: Hochladen kann man ganz bequem über sftp (ssh-port), was das benutzen eines ftpservers überflüssig macht.
 
: Filezille unterstützt auch sftp, '''Datei -> Server/Sites -> SFTP auswählen und die SSH-Login Daten angeben'''
 
 
 
: Nun geht es an die Konfiguration des Servers.
 
: Dazu bearbeiten wir folgende Datei:
 
 
vi /etc/apache2/sites-available/default
 
 
<VirtualHost *:80>
 
        '''ServerAdmin DEINE@EMAIL.ADRESSE'''
 
        '''ServerAlias DEINE-DOMAIN.DE #Beispiel: www.deine-domain.de'''
 
        '''DocumentRoot /var/www/DEINVERZEICHNIS/'''
 
        <Directory />
 
                Options FollowSymLinks
 
                AllowOverride None
 
                Order deny,allow
 
                Deny from all
 
        </Directory>
 
        '''<Directory /var/www/DEINVERZEICHNIS/>'''
 
        '''        Options -Indexes FollowSymLinks MultiViews #-Indexes verbietet, die Verzeichnisse über eine Pfadangabe zu downloaden'''
 
                AllowOverride None
 
                Order allow,deny
 
                allow from all
 
        </Directory>
 
 
: Danach den webserver neustarten
 
 
/etc/init.d/apache2 restart
 
 
: Man muss evtl die Rechte einzelner Dateien/Verzeichnisse nachbearbeiten.
 
 
: Danach kann man die Verbindung via SSL verschlüsseln.
 
: Tutorial befindet sich weiter oben auf dieser Seite.
 
 
: Nachdem man SSL aktivierte und Zertifikate generiert/angefordert hat, kann man die Weiterleitung '''von http auf https''' aktivieren:
 
 
vi /etc/apache2/sites-available/default
 
 
: Diese Zeile unter "DocumentRoot" einfügen
 
Redirect permanent /VERZEICHNIS https://www.DEINE-DOMAIN.com/
 
 
/etc/init.d/apache2 restart
 
 
===.htpasswd ändern===
 
 
: man muss die .htpasswd file lokalisieren.
 
htpasswd /PFAD/PFAD/.htpasswd BENUTZER
 
 
: entweder kann man das passwort eines Benutzers ändern, oder einen neuen erstellen
 
 
===awstats===
 
====Installieren von awstats====
 
apt-get install awstats
 
 
====Konfigurieren von awstats====
 
Awstats Konfigurations dateien sind unter Ubuntu in /etc/awstats. Die Vorlage heißt "awstats.conf".
 
 
Eine Kopie für die gewollte Domain erstellen
 
cp /etc/awstats/awstats.conf /etc/awstats/awstats.yourdomain.ext.conf
 
 
Datei Editieren:
 
 
      vi /etc/awstats/awstats.yourdomain.ext.conf
 
 
Folgene Änderung vornehmen:
 
 
      LogFile="/var/log/apache2/access.log"
 
      SiteDomain="yourdomain.ext"
 
      HostAliases="localhost 127.0.0.1 yourdomain.ext"
 
 
Die ersten Statistiken generieren:
 
 
/usr/lib/cgi-bin/awstats.pl -config=yourdomain.ext -update
 
 
====Apache2 Konfiguration====
 
Um Awstats anzusprechen müssen wir Apache sagen wo es ist.
 
 
          cd /etc/apache2/sites-available/
 
Wenn man keine VirtualHosts hat, muss man folgendes in '/etc/apache2/sites-available/default' eintragen. Andernfals fügt man es im VirtualHost tag der Domain ein die man überwachen will:
 
 
          Alias /awstatsclasses "/usr/share/awstats/lib/"
 
          Alias /awstats-icon/ "/usr/share/awstats/icon/"
 
          Alias /awstatscss "/usr/share/doc/awstats/examples/css"
 
          ScriptAlias /awstats/ /usr/lib/cgi-bin/
 
          Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
 
 
Apache2 neu laden:
 
 
    /etc/init.d/apache2 reload
 
 
Statistiken für '''''yourdomain.ext''''' sollten jetz verfügbar sein unter:
 
 
http://yourdomain.ext/awstats/awstats.pl
 
 
and:
 
 
http://yourdomain.ext/awstats/awstats.pl?config=yourdomain.ext
 
 
for if you have multiple config files. Note that these statistics are public unless you secure them.
 
 
===Troubleshoot===
 
apache2: Could not reliably determine the server's fully qualified domain name, ...
 
Könnte falschen Eintrag in '''/etc/hosts''' bedeuten
 
----
 
;Virtual Host funktioniert nicht:
 
:Ein Virtual Host brauch zwingend eine IP Adresse auf der er läuft und einen Namen
 
z.B:
 
<VirtualHost '''192.168.81.21''':80>
 
ServerAdmin webmaster@vulkan.int
 
ServerName '''www.vulkan.int'''
 
 
--------------------------------------------------
 
 
firefox: keine vertrauenswürdige Verbindung  //  sec_error_unknown_issue
 
 
überprüfe alle Zertifikate + Pfadangaben!
 
Die '''ca.pem + chainfile''' darf nicht vergessen werden!
 
 
: https://www.startssl.com/?app=21 (nur bei startssl-zertifikaten)
 
 
downloaden und einbinden, danach
 
 
/etc/init.d/apache2 restart
 
 
--------------------------------------------------
 
 
Umlaute werden nicht richtig angezeigt...
 
 
Füge das in die /etc/apache2/apache2.conf ein:
 
AddDefaultCharset UTF-8
 
 
===Links:===
 
: http://www.zdnet.de/41556021/hosting-auf-dem-root-server-so-konfiguriert-man-apache/
 
: https://www.startssl.com/
 
: http://httpd.apache.org/docs/2.2/mod/index.html
 
: http://www.heise.de/security/artikel/SSL-fuer-lau-880221.html
 

Aktuelle Version vom 6. August 2014, 13:52 Uhr