Benutzer-Werkzeuge

Webseiten-Werkzeuge


open:it:apache

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
open:it:apache [2024/07/13 19:05] – [FTP-Zugang] Kaiopen:it:apache [2025/01/06 10:54] (aktuell) – [Webseiten & virtueller Host] Kai
Zeile 1: Zeile 1:
 ====== Apache Web-Server ====== ====== Apache Web-Server ======
-OS: Debian 11 
  
 ===== Vorbereitung ===== ===== Vorbereitung =====
Zeile 6: Zeile 5:
   - [[open:it:net#firewall|Firewall einrichten & aktivieren]]   - [[open:it:net#firewall|Firewall einrichten & aktivieren]]
   - [[open:it:ssh|SSH-Zugang einrichten]]   - [[open:it:ssh|SSH-Zugang einrichten]]
 +  - [[open:it:mysql|MySQL-Datenbank]]
 +  - [[open:it:php|PHP einrichten]]
  
   * https://httpd.apache.org/docs/2.4/   * https://httpd.apache.org/docs/2.4/
   * https://wiki.ubuntuusers.de/Apache_2.4/   * https://wiki.ubuntuusers.de/Apache_2.4/
   * https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-20-04   * https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-20-04
 +
 ===== Installation ===== ===== Installation =====
   sudo apt install apache2   sudo apt install apache2
Zeile 15: Zeile 17:
   sudo systemctl status apache2   sudo systemctl status apache2
  
-[[open:it:net#firewall|Firewall einrichten]] \\ 
-Firewall-Freigabe für Webseiten 
-  sudo ufw allow 80/tcp 
-Firewall-Freigabe für Webseiten verschlüsselt 
-  sudo ufw allow 443/tcp 
 Verzeichnis für Webseiten anlegen.  Verzeichnis für Webseiten anlegen. 
   sudo mkdir /var/www/sites   sudo mkdir /var/www/sites
  
-Default-Einstellungen für die Webseiten-Verzeichnisse mit ACL. www-data wird als User & Gruppe vom Apache-Webbrowser genutzt. Wenn ein <FTPUSER> Daten auf den Server hochlädt, behält die Gruppe www-data und somit der Apache-Webbrowser alle erforderlichen Zugriff-Rechte um in diesem Bereich handeln zu können.+Default-Einstellungen für die Webseiten-Verzeichnisse mit ACL. www-data wird als User & Gruppe vom Apache-Webserver genutzt. Wenn ein <FTPUSER> Daten auf den Server hochlädt, behält die Gruppe www-data und somit der Apache-Webserver alle erforderlichen Zugriff-Rechte um in diesem Bereich handeln zu können.
   sudo setfacl -dm g:www-data:rwx /var/www/sites/   sudo setfacl -dm g:www-data:rwx /var/www/sites/
 Den Main-User in die Gruppe www-data aufnehmen, damit er Schreibrechte im Bereich der HTML-Seiten hat. Den Main-User in die Gruppe www-data aufnehmen, damit er Schreibrechte im Bereich der HTML-Seiten hat.
   sudo usermod -aG www-data <SUDO-USER>   sudo usermod -aG www-data <SUDO-USER>
 +
 +==== Firewall ====
 +[[open:it:net#firewall|Firewall einrichten]] \\
 +Freigabe für Webseiten
 +  sudo ufw allow 80/tcp
 +Firewall-Freigabe für verschlüsselte Webseiten
 +  sudo ufw allow 443/tcp
 +
 +
 ===== FTP-Zugang ===== ===== FTP-Zugang =====
   sudo apt install vsftpd   sudo apt install vsftpd
Zeile 44: Zeile 50:
   sudo usermod -aG www-data <FTPUSER>   sudo usermod -aG www-data <FTPUSER>
  
-Zugang für FTP-User einschränken auf den Bereich der Webseiten+Zugang für FTP-User einschränken auf den Bereich der Webseiten im Verzeichnis /var/www
   sudo nano /etc/ssh/sshd_config   sudo nano /etc/ssh/sshd_config
  
Zeile 59: Zeile 65:
 Für den FTP-Zugriff von <FTPUSER> mit o.a. Einschränkung (Match User ...) ist eine Besonderheit zu beachten, da sonst kein Zugang per FTP möglich ist. \\ Für den FTP-Zugriff von <FTPUSER> mit o.a. Einschränkung (Match User ...) ist eine Besonderheit zu beachten, da sonst kein Zugang per FTP möglich ist. \\
 Der Owner vom Verzeichnis /var/www, bzw. Pfad aus Parameter **ChrootDirectory**, muss root sein und Gruppe oder Sonstige dürfen keine Schreibrechte besitzen.  \\  Der Owner vom Verzeichnis /var/www, bzw. Pfad aus Parameter **ChrootDirectory**, muss root sein und Gruppe oder Sonstige dürfen keine Schreibrechte besitzen.  \\ 
-Falls das nicht gegeben ist:+Diese Vorgaben gelten nur für das Hauptverzeichnis, nicht für darin enthaltene Unterverzeichnisse, daher im folgenden die Option -R nicht angewandt.\\ 
 +Ggf. Einstellungen anpassen::
  
 Setze Besitzer. Setze Besitzer.
Zeile 71: Zeile 78:
  
 Anschließend hat der FTP-User Lese-Zugriff auf das Verzeichnis /var/www \\ Anschließend hat der FTP-User Lese-Zugriff auf das Verzeichnis /var/www \\
-Schreibrechte müssen dann in weiteren Unterverzeichnissen (var/www/html, /var/www/sites, etc.) für die Gruppe www-data erteilt werden bzw. müssten eigentlich bereits für den Apache-Webserver vorhanden sein.+Schreibrechte müssen dann in weiteren Unterverzeichnissen (var/www/html, /var/www/sites, etc.) für die Gruppe www-data erteilt werden bzw. müssten eigentlich bereits für den Apache-Webserver vorhanden sein - siehe auch oben unter [[#Installation|Installation]].
 ===== Webseiten & virtueller Host ===== ===== Webseiten & virtueller Host =====
 Verzeichnis für die HTML-Daten über die Shell anlegen Verzeichnis für die HTML-Daten über die Shell anlegen
-  sudo mkdir /var/www/sites/KSPI.DE+  sudo mkdir /var/www/sites/BLUEGNU.DE
  
-  sudo chmod -R 775 /var/www/sites/KSPI.DE+  sudo chmod -R 775 /var/www/sites/BLUEGNU.DE
    
 Die Programm-Dateien können dann mit einem FTP-Programm übertragen werden. Die Programm-Dateien können dann mit einem FTP-Programm übertragen werden.
Zeile 93: Zeile 100:
  
 Apache-Konfiguration virtueller Host der Domain Apache-Konfiguration virtueller Host der Domain
-  sudo nano /etc/apache2/sites-available/KSPI.DE.conf+  sudo nano /etc/apache2/sites-available/BLUEGNU.DE.conf
  
   <VirtualHost *:80>   <VirtualHost *:80>
-    ServerName KSPI.DE +    ServerName BLUEGNU.DE 
-    ServerAdmin mail@KSPI.DE +    ServerAdmin mail@BLUEGNU.DE 
-    DocumentRoot /var/www/sites/KSPI.DE+    DocumentRoot /var/www/sites/BLUEGNU.DE
     ErrorLog ${APACHE_LOG_DIR}/error.log     ErrorLog ${APACHE_LOG_DIR}/error.log
     CustomLog ${APACHE_LOG_DIR}/access.log combined     CustomLog ${APACHE_LOG_DIR}/access.log combined
-    <Directory /var/www/sites/KSPI.DE>+    <Directory /var/www/sites/BLUEGNU.DE>
       Options Indexes FollowSymLinks MultiViews       Options Indexes FollowSymLinks MultiViews
       AllowOverride All       AllowOverride All
Zeile 112: Zeile 119:
  
 Virtuellen Host im Apache-Web-Server registrieren Virtuellen Host im Apache-Web-Server registrieren
-  sudo a2ensite KSPI.DE.conf+  sudo a2ensite BLUEGNU.DE.conf
 Defaultseite deaktivieren. Dadurch wird erste Domain (nach Alphabet) zur Defaultseite, sollte z.B. nur die Server-IP-Adresse über einen Webbrowser aufgerufen werden, oder die per DNS hierhin umgeleitete Domain nicht zu finden sein. Defaultseite deaktivieren. Dadurch wird erste Domain (nach Alphabet) zur Defaultseite, sollte z.B. nur die Server-IP-Adresse über einen Webbrowser aufgerufen werden, oder die per DNS hierhin umgeleitete Domain nicht zu finden sein.
   sudo a2dissite 000-default.conf   sudo a2dissite 000-default.conf
Zeile 121: Zeile 128:
  
 Hostname und Fully-Qualified Host Name (FQHN) festlegen Hostname und Fully-Qualified Host Name (FQHN) festlegen
-  sudo hostnamectl set-hostname server.KSPI.DE+  sudo hostnamectl set-hostname server.BLUEGNU.DE
 Einstellungen für den Apacheserver testen Einstellungen für den Apacheserver testen
   sudo apache2ctl configtest   sudo apache2ctl configtest
Zeile 128: Zeile 135:
   sudo nano /etc/hosts   sudo nano /etc/hosts
  
-  127.0.1.1 server.KSPI.DE server+  127.0.1.1 server.BLUEGNU.DE server
   127.0.0.1 localhost   127.0.0.1 localhost
  
Zeile 142: Zeile 149:
  
 Simple HTML-Datei Simple HTML-Datei
-  sudo nano /var/www/sites/KSPI.DE/index.html+  sudo nano /var/www/sites/BLUEGNU.DE/index.html
  
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Zeile 157: Zeile 164:
   </html>   </html>
  
 +===== Proxy-Server =====
 +Erweiterungen installieren
 +  sudo a2enmod proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html ssl
 +
 +Konfiguration mit SSL, hier für eine Subdomain, siehe auch [[open:it:apache|Apache Web-Server]]:
 +  sudo nano  /etc/apache2/sites-available/<SUBDOMAIN>.conf
 +
 +  <IfModule mod_ssl.c>
 +  <VirtualHost *:443>
 +    ServerName calibre.<DOMAIN>.de
 +    ...
 +    ...
 +    ProxyPass        / http://localhost:8080/
 +    ProxyPassReverse / http://localhost:8080/
 +    ...
 +    ...
 +  </VirtualHost>
 +  </IfModule>
 +
 +<DOMAIN> ersetzen \\
 +DocumentRoot kann entfernt oder deaktiviert (#) werden
 +
 +  sudo apachectl configtest
 +
 +  sudo systemctl restart apache2
 +
 +Anschließend kann die Firewall für den Port 8080 (sofern verwendet) wieder deaktiviert werden, da der Aufruf nun über den Domainnamen bzw. Subdomain erfolgt. Siehe auch [[open:it:net#firewall|Firewall]].
 ===== SSL-Zertifikate ===== ===== SSL-Zertifikate =====
-https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-20-04-de \\+[[https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-20-04-de|Einrichtung: Ubuntu -> Apache]] \\ 
 +[[https://www.ssllabs.com/ssltest/|SSL-Zertifikat testen]] \\
 ==== DNS-Einstellungen ==== ==== DNS-Einstellungen ====
 Die DNS-Zeiger der Domain(s) müssen vorher beim Domainprovider eingestellt sein: Die DNS-Zeiger der Domain(s) müssen vorher beim Domainprovider eingestellt sein:
Zeile 171: Zeile 206:
 Zertifikat(e) erstellen Zertifikat(e) erstellen
   sudo certbot --apache   sudo certbot --apache
-Durch das Erstellen eines Zertifikats wird automatisch zusätzlich eine Datei für den virtuellen Host der SSL-Verbindung angelegt. Z.B. für die Hostdatei "KSPI.DE.conf", zusätzlich hinzu "/etc/apache2/sites-available/KSPI.DE-le-ssl.conf"((le für Let's-Encrypt)). \\+Durch das Erstellen eines Zertifikats wird automatisch zusätzlich eine Datei für den virtuellen Host der SSL-Verbindung angelegt. Z.B. für die Hostdatei "BLUEGNU.DE.conf", zusätzlich hinzu "/etc/apache2/sites-available/BLUEGNU.DE-le-ssl.conf"((le für Let's-Encrypt)). \\
 \\ \\
 Timer-Einstellungen für Autorenew Timer-Einstellungen für Autorenew
Zeile 183: Zeile 218:
  
 ===== Weitere Domains ===== ===== Weitere Domains =====
-Hier als Beispiel die Subdomain für das wiki > https://wiki.KSPI.DE \\+Hier als Beispiel die Subdomain für das wiki > https://wiki.BLUEGNU.DE \\
 Verzeichnis für die Daten anlegen Verzeichnis für die Daten anlegen
-  sudo mkdir /var/www/sites/wiki.KSPI.DE+  sudo mkdir /var/www/sites/wiki.BLUEGNU.DE
  
 Die Programm-Dateien können dann mit einem FTP-Programm übertragen werden. Die Programm-Dateien können dann mit einem FTP-Programm übertragen werden.
  
 Apache-Konfiguration virtueller Host der Domain Apache-Konfiguration virtueller Host der Domain
-  sudo nano /etc/apache2/sites-available/wiki.KSPI.DE.conf+  sudo nano /etc/apache2/sites-available/wiki.BLUEGNU.DE.conf
  
   <VirtualHost *:80>   <VirtualHost *:80>
-    ServerName wiki.KSPI.DE +    ServerName wiki.BLUEGNU.DE 
-    ServerAdmin mail@KSPI.DE +    ServerAdmin mail@BLUEGNU.DE 
-    DocumentRoot /var/www/sites/wiki.KSPI.DE+    DocumentRoot /var/www/sites/wiki.BLUEGNU.DE
     ErrorLog ${APACHE_LOG_DIR}/error.log     ErrorLog ${APACHE_LOG_DIR}/error.log
     CustomLog ${APACHE_LOG_DIR}/access.log combined     CustomLog ${APACHE_LOG_DIR}/access.log combined
-    <Directory /var/www/sites/wiki.KSPI.DE>+    <Directory /var/www/sites/wiki.BLUEGNU.DE>
       Options Indexes FollowSymLinks MultiViews       Options Indexes FollowSymLinks MultiViews
       AllowOverride All       AllowOverride All
Zeile 207: Zeile 242:
  
 Virtuellen Host im Apache-Web-Server registrieren Virtuellen Host im Apache-Web-Server registrieren
-  sudo a2ensite wiki.KSPI.DE.conf+  sudo a2ensite wiki.BLUEGNU.DE.conf
 Einstellungen für den Apacheserver testen Einstellungen für den Apacheserver testen
   sudo apache2ctl configtest   sudo apache2ctl configtest
Zeile 214: Zeile 249:
 SSL-Zertifikat registrieren SSL-Zertifikat registrieren
   sudo certbot --apache   sudo certbot --apache
- 
-===== PHP ===== 
- 
-==== Ubuntu ==== 
- 
-https://php.watch/articles/install-php82-ubuntu-debian 
- 
-==== Debian ==== 
- 
-Der Apache-Server kann parallel mit unterschiedlichen PHP-Versionen betrieben und eine Version davon einer Domain explizit zugewiesen werden. \\ 
-Quelle: https://www.codinghood.de/blog/2021/05/php-7-4-und-php-8-0-zeitgleich-auf-einem-debian-10-mit-apache-und-php-fpm-installieren/ 
- 
-Benötigte Pakete wie curl installieren 
-  sudo apt-get -y install apt-transport-https lsb-release ca-certificates curl 
-Mit dem sury PHP Repository kommunizieren > Schlüssel herunterladen und installieren 
-  sudo curl -sSL -o /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg 
-sury PHP Repository zur Source-List hinzufügen 
-  sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' 
- 
-Paketlisten neu einlesen und aktualisieren. 
-  sudo apt-get update 
- 
-PHP-Versionen installieren (je nach Bedarf) 
-  sudo apt install php7.4 php7.4-bcmath php7.4-cli php7.4-common php7.4-curl php7.4-dev php7.4-fpm php7.4-gd php7.4-imap php7.4-intl php7.4-json php7.4-mbstring php7.4-mysql php7.4-opcache php7.4-readline php7.4-soap php7.4-sqlite3 php7.4-tidy php7.4-xsl php7.4-zip 
- 
-  sudo apt install php8.0 php8.0-bcmath php8.0-cli php8.0-common php8.0-curl php8.0-dev php8.0-fpm php8.0-gd php8.0-imap php8.0-intl php8.0-mbstring php8.0-mysql php8.0-opcache php8.0-readline php8.0-soap php8.0-sqlite3 php8.0-tidy php8.0-xml php8.0-xsl php8.0-zip 
- 
-  sudo apt install php8.2 php8.2-bcmath php8.2-cli php8.2-common php8.2-curl php8.2-dev php8.2-fpm php8.2-gd php8.2-imap php8.2-intl php8.2-mbstring php8.2-mysql php8.2-opcache php8.2-readline php8.2-soap php8.2-sqlite3 php8.2-tidy php8.2-xml php8.2-xsl php8.2-zip 
- 
-Check Installiert - sollte bei allen Versionen klappen 
-  sudo systemctl status php7.4-fpm.service 
- 
-Apache-Module zum Umgang mit den PHP-FPM Installationen 
-  sudo apt-get install libapache2-mod-fcgid php-fpm 
- 
-  sudo a2enmod actions alias fcgid proxy_fcgi  
- 
-Version auswählen (Server intern) 
-  sudo update-alternatives --config php 
- 
-Auswahl Basisversion (Server intern) 
-  sudo update-alternatives --config php-fpm.sock 
- 
-Standartversion Apache festlegen -> hier nur eine Version, die anderen, sofern aktiviert, mit a2disconf abschalten 
-  sudo a2enconf php8.2-fpm.conf 
- 
-  sudo systemctl reload apache2 
-   
-Nur wenn eine Domain/Subdomain eine andere, als die PHP-Standard-Version, benötigt, die entsprechende Apache-Conf-Datei konfigurieren und Zeile einfügen. \\ 
-  sudo nano /etc/apache2/sites-available/xxx.conf 
-Zum Beispiel: 
-  Include /etc/apache2/conf-available/php8.0-fpm.conf 
- 
-  sudo systemctl reload apache2 
- 
-Check PHP-Version auf Webseite 
-  sudo nano /var/www/sites/.../phpinfo.php 
- 
-    <?php  
-      phpinfo(); 
-    ?> 
- 
-===== MySQL-Datenbank ===== 
- 
-  sudo apt-get install mariadb-server 
- 
-  sudo mysql_secure_installation 
- 
-"Altes" root-Passwort ist leer, alle Fragen mit Y beantworten und neues Passwort eintragen. 
- 
-Standardverzeichnis für Datenbanken  
- 
-  /var/lib/mysql 
-==== PHPMyAdmin ==== 
-Es ist möglich, die PHPMyAdmin von Debian zu verwenden > apt install phpmyadmin. \\ 
-Alternativ (hier angewandt) die aktuelle Variante von der Internetseite von phpmyadmin.net verwenden. 
-Aktuelle Installationsdateien downloaden in Unterverzeichnis des Apacheservers, oder holen mit "wget". Pfad und Dateiname siehe https://www.phpmyadmin.net/ 
- 
-  cd /var/www/sites/phpmyadmin/ 
-In diesem Beispiel wird eine bestehende Domain genutzt und darin das Unterverzeichnis phpmyadmin erstellt. Aufruf über den Browser mit <DOMAIN>/phpmyadmin. \\ 
-Alternative: Dateien in das Hauptverzeichnis einer Subdomain legen. Aufrug mit <SUB>.<DOMAIN> (ohne Erweiterung). 
- 
-Download der Installations-Dateien 
-  sudo wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.zip 
- 
-Sollte unzip nicht installiert sein: 
-  sudo apt-get install unzip 
- 
-  sudo unzip phpMyAdmin-5.2.1-all-languages.zip 
- 
-  sudo mv phpMyAdmin-5.2.1-all-languages/ phpmyadmin/ 
- 
-  sudo chown -R www-data:www-data /var/www/sites/phpmyadmin 
- 
-  sudo chmod -R 775 /var/www/sites/phpmyadmin 
- 
-  cd phpmyadmin/ 
- 
-  sudo cp config.sample.inc.php config.inc.php 
- 
-  sudo nano config.inc.php 
-ÄNDERN IN: 
-  $cfg['blowfish_secret'] = sodium_hex2bin('f16ce59f45714194371b48fe362072dc3b019da7861558cd4ad29e4d6fb13851'); 
- 
-Sicherheit: direkten root-Zugang über phpmyadmin sperren. \\ 
- 
-Möglich über phpmyadmin oder wie folgt: 
- 
-  sudo nano /var/www/sites/phpmyadmin/config.inc.php 
-Entscheidung über letzte Zeile (AllowRoot = false == gesperrt) ggf. Zeile einfügen: \\ 
-  /* Configure according to dbconfig-common if enabled */ 
-  if (!empty($dbname)) { 
-    /* Authentication type */ 
-    $cfg['Servers'][$i]['auth_type'] = 'cookie'; 
-    $cfg['Servers'][$i]['AllowRoot'] = false; 
-    ... 
- 
-Neuen User anlegen: 
-  sudo mysql 
- 
-  CREATE USER '<USERNAME>'@'localhost' IDENTIFIED BY '<PASSWORD>';  
- 
-User mit Rechten versehen (hier alle): 
-  GRANT ALL PRIVILEGES ON * . * TO '<USERNAME>'@'localhost' WITH GRANT OPTION; 
-Berechtigungen neu laden: 
-  FLUSH PRIVILEGES; 
-   
-~~DISCUSSION~~ 
  
open/it/apache.1720890314.txt.gz · Zuletzt geändert: 2024/07/13 19:05 von Kai