HTS-Software®Unternehmensberatung
Eine Arbeitsnotiz zur Joomla Installaion. Die arbeit wurde nicht genauer überprüft. Vielleicht ist nicht alles so beschrieben wie es sein soll. Es ist geplant das in der näheren Zukunft zu überprüfen und weiter auszubauen.
 
#####
# Joomla installation unter Gentoo mit Apache und PostgreSql Datenbank.
#
# Hier fehlen noch die nötigen Gentoo-Pakete.
#
#####

#####
# Parameter die veränderlich sind.
  Domain-Name: <domain>.de
  IP-Adresse : <ip-addresse>
#
#####

#####
# Verzeichnisse vorbereiten
# Ich installiere die Daten für eine Domain immmer unter /home/<domain>.de/

# Joomla
  cd /home
  mkdir <,domain>.de
  chown <user>:apache <domain>.de
  chmod u+rwx,g-w,o-rwx <domain>.de

  mkdir httpd_doc
  mkdir httpd_log
  chown u0001:apache httpd_doc httpd_log
  chmod u+rwx,g-w,o-rwx httpd_doc httpd_log

# Letsencrypt
  cd /home/<domain>.de
  mkdir .well-known
  chown u0001:apache .well-known
  chmod o-rwx .well-known

  cd .well-known
  mkdir acme-challenge
  chown u0001:apache acme-challenge
  chmod o-rwx acme-challenge
#
#####

#####
# Letsencrypt SSL Zertifikate anfordern.

# Mit der Option --dry-run kann man das Testen über die Letsencrypt
# Test-Server. Das sollte man auch tun weil man sonst von Letsencrypt für eine
# Woche gesperrt wird. Wenn alles Fehlerfrei läuft kann man die Option
# --dry-run entfernen und bekommt dann das Produktiv Nutzbare Zertifikat.

# Nach Aufruf des Kommandos muss man im Webroot zu dieser Domain eine Datei
# anlegen an der Letsencrypt erkennt das man Zugriff auf diese Domain hat.
# Das Verzeichniss ".well-known" mit Unterverzeichnis wurde bereits oben
# angelegt. Es fehlt noch die Datei mit dem Zertifikat. Beides wird nach start
# des Kommandos angezeigt und muss noch angelegt werden.
# Das Kommando gibt genaue Anweisungen dazu aus.
  certbot certonly --dry-run --manual --webroot-path=/home/<domain>.de/httpd_doc -d <domain>.de -d www.<domain>.de

# War alles Ok dann kann man die Option "--dry-run" entfernen. Man erhält dann
# ein neues Zertifikat. Diese laufen nach drei Monaten ab und können dann mit
# dem Kommando unten ernert werden.
  certbot certonly --manual --webroot-path=/home/<domain>.de/httpd_doc -d <domain>.de -d www.<domain>.de

# Ein vorhandenes Zertifikat erneuern
  certbot certonly --renew-by-default -a webroot -n --expand --webroot-path=/home/<domain>.de/httpd_doc -d <domain>.de -d www.<domain>.de
#
#####

#####
# Konfiguration für apache anlegen.
# Domain: <domain>.de und www.<domain>.d (dazu muss der DNS entssprechend konfiguriert sein).
# Mit automatischer Weiterleitung von http zu https.
# Für https werden die oben angeforderten Letsencrypt Zertifikate verwendet.

# Weiterleitung von http auf https
  Datei im Verzeichniss: /etc/apache2/vhosts.d/<domain>.de.conf

  Inhalt:
  # Domain <domain>.de
  <VirtualHost <ip-adresse>>
    ServerAdmin hostmaster@<domain>.de
    DocumentRoot /home/<domain>.de/httpd_doc/
    ServerName www.<domain>.de
    ServerAlias <domain>.de

## Dokument Root
## Wird benötigt wenn man zum ersten mal ein Letsencrypt Zertifikat anfordert.
## Um ein Zertifikat zu erhalten muss der apache eine Datei ausliefern können.
#  <Directory /home/hts-software.de/httpd_doc/>
#    Require all granted
#    Options -ExecCGI -Includes -Indexes
#  </Directory>

  # http auf https umleiten.
    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %{HTTPS} off
      RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    </IfModule>

    ErrorLog /home/<domain>.de/httpd_log/ErrorLog
    CustomLog /home/<domain>.de/httpd_log/AccessLog common
    CustomLog /home/<domain>.de/httpd_log/RefererLog referer
    CustomLog /home/<domain>.de/httpd_log/AgentLog agent
  </VirtualHost>

# Konfiguration des Webroot, Serveradmin, usw.
  Datei im Verzeichniss: /etc/apache2/vhosts.d/<domain>.de-ssl.conf

  Inhalt:
  # Domain <domain>.de
  <VirtualHost <ip-addresse>:443>
    ServerAdmin hostmaster@<domain>.de
    DocumentRoot /home/<domain>.de/httpd_doc/Doc
    ServerName www.<domain>.de
    ServerAlias <domain>.de

  # Dokument Root
    <Directory /home/<domain>.de/httpd_doc/Doc/>
      Require all granted
      Options -ExecCGI -Includes -Indexes
      php_admin_value open_basedir /home/elatech.de/httpd_doc:/home/elatech.de/httpd_doc/tmp
      php_admin_value upload_tmp_dir /home/elatech.de/httpd_doc/tmp
      AddType application/x-httpd-php .php .htm .html
    </Directory>

    SSLCertificateFile /etc/letsencrypt/live/<domain>.de/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/<domain>.de/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf

    ErrorLog /home/<domain>.de/httpd_log/ErrorLog
    CustomLog /home/<domain>.de/httpd_log/AccessLog common
    CustomLog /home/<domain>.de/httpd_log/RefererLog referer
    CustomLog /home/<domain>.de/httpd_log/AgentLog agent
  </VirtualHost>
#
#####

#####
# PostgreSql Datenbank vorbereiten.
# Ich sehe das /home als Verzeichniss in dem Anweder Daten gesammelt werden.
# Datenbanken sind Anwender Daten. Das erleichtert ungemein die
# Datensicherung. Wenn alles aus /home gesichert ist hat man sicher das
# wichtigste.

# Datenbank Cluster anlegen.
  cd /home
  mkdir PostgreSql-13
  chown postgres:postgres PostgreSql-13

# Den Datenbank Cluster initialisieren.
  cd /home/PostgreSql-13
  su postgres
  initdb13 -D /home/PostgreSql-13/
  exit

# Das Verzeichnis wo der Datenbank Cluster zu finden ist muss man einstellen.
  Datei : /etc/conf.d/postgresql-13
  Inhalt: PGDATA="/etc/postgresql-13/"

# Die PostgreSql Konfiguration muss man aus dem Datenbank Cluster verschieben.
  mv /home/PostgreSql-13/*.conf /etc/postgresql-13/

# PostgreSql Server automatisch starten
  rc-config add postgresql-13 default

# PostgreSql Server manuell starten
  /etc/init.d/postgresql-13 start

# Admin Datenbank User anlegen.
# Die Frage nach dem Superuser mit ja beantworten.
  su postgres
  createuser --interactive -P u0001
  exit

# Joomla Datenbank User anlegen.
# Die Frage nach dem Superuser mit nein beantworten.
# Die Frage nach der Erzeugung von Datenbanken mit nein beantworten.
# Die Frage nach der Erzeugung anderer Rollen (User) mit nein beantworten.
  su postgres
  createuser --interactive -P u0002
  exit

# Joomla Datenbank anlegen
  su alex
  createdb13 joomla_elatech_de
  exit

# Mit dem SQL Tool mit der Joomla Datenbank verbinden
# u0002 ist der Username für die Joomla Datenbank. Der hat keine besonderen
# Rechte.
  psql joomla_elatech_de u0002
#
#####

#####
# PHP Installieren/Konfigurieren

# Bei Gentoo nötige Einstellungen vor der Installation

# Notwendige USE-Flag setzen.
  Datei : /etc/portage/package.use
  Ändern: ev-lang/php postgres zip intl curl

**** Diese EInstellungen noch suchen !!!!
  intl verfügbar                An

  Datei:  /etc/php/apache2-php8.0/php.ini
  Ändern: memory_limit = 400M
          upload_max_filesize = 100M
          post_max_size = 30M
          max_execution_time = 30
          disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open
          output_buffering=Off

  Bei Änderungen in der php.ini muss man den apache Neustarten: /etc/init.d/apache2 restart
#
#####

#####
# Joomla Herunterladen und auf dem Server installieren.

# Download von Joomla
# Der Link muss immer wieder auf die aktuelle Version geändert werden.
# Heruntergeladen wird in das Dokumentroot das bei der apache Konfiguration
# benutzt wurde.
  cd /home/elatech.de/httpd_doc/
  wget https://downloads.joomla.org/cms/joomla4/4-0-2/Joomla_4-0-2-Stable-Full_Package.zip

# Die Joomla Datei entpacken.
  unzip Joomla_4-0-2-Stable-Full_Package.zip

# Es müssen die Dateirechte eingestellt werden.
  chown -R u0001:apache *
  find . -type d -exec chmod 0770 {} ; # Allen Verzeichnissen die Rechte geben
  find . -type f -exec chmod 0660 {} ; # Allen Dateien die Rechte geben
  find . -type f -name ".htaccess" -exec chmod 0660 {} ; # Htaccess-Dateien nur Leserechte geben und Schreibrechte wegen Joomla-Update.
  find . -type f -name "*.css" -exec chmod 0660 {} ; # Allen CSS-Dateien Leserechte geben und Schreibrechte wegen Joomla-Update.

# Starten der Joomla Installation
  www.<domain>.de/index.php

# Folgende Einstellungen muss man machen
  Sprache auswählen
  Joomla Superuser festlegen
#
#####

#####
# Eine Photo Galerie Erweiterung installieren

# Installation von URL in Joomla benutzt
# Diese Erweiterung geht nicht mit PostgreSql wird vom Entwickler nicht
# unterstützt.
  URL: https://github.com/PhocaCz/PhocaGallery/releases/download/4.4.3/com_phocagallery_v4.4.3.zip
#
#####