Nextcloud in einen Apache-VirtualHost-Block verschieben, um es als Subdomain zu verwenden?

Nextcloud in einen Apache-VirtualHost-Block verschieben, um es als Subdomain zu verwenden?
  • Nextcloud wird derzeit unter bereitgestellt my-domain.dev/nextcloud.
  • Ich möchte, dass es um serviert wird cloud.my-domain.dev.
  • Ich habe bereits einen A-Eintrag eingerichtet, der cloud.my-domain.devauf die IP-Adresse meiner Server verweist.
  • Neben meinem /var/www/nextcloudhabe ich auch einen /var/www/my-domain.dev, meine Hauptseite, die ich für die Verwendung von HTTPS mit Let’s-Encrypt eingerichtet habe.
  • Ich verwende die Serverversion: Apache/2.4.41 (Ubuntu).

Jetzt muss ich die virtuellen Hosts so einrichten, dass sie zusammen funktionieren. Ich gehe davon aus, dass ich die Datei nextcloud.conf so konvertieren muss, dass sie auf einem virtuellen Host sitzt, vielleicht unter einem anderen Port? Wie gehe ich vor?

nextcloud.conf alsempfohlen von nextcloud.

Alias /nextcloud "/var/www/nextcloud/"

<Directory /var/www/nextcloud/>
  Require all granted
  AllowOverride All
  Options FollowSymLinks MultiViews

  <IfModule mod_dav.c>
    Dav off
  </IfModule>    

  SetEnv HOME /var/www/nextcloud
  SetEnv HTTP_HOME /var/www/nextcloud

</Directory>

meine-domain.dev.conf

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName my-domain.dev
    ServerAlias www.my-domain.dev
    DocumentRoot /var/www/my-domain.dev
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

WAS BEI MIR FUNKTIONIERT HAT:

Die Antwort von Andrew Schulman hätte für mich fast funktioniert, ich musste nur ein paar kleine Änderungen vornehmen:

  • Entfernen Sie „Alle Gewährten erforderlich“.
  • Verschieben Sie „AllowOverride All“ und „Options FollowSymLinks MultiViews“ in ein Verzeichnis-Tag.

Kann jemand erklären, warum diese Schritte notwendig waren?

Danke, Andrew!

nextcloud.conf:
  1 <VirtualHost *:80>
  2         ServerAdmin [email protected]
  3         ServerName cloud.b-t.dev
  4         DocumentRoot /var/www/nextcloud
  5
  6         #ErrorLog ${APACHE_LOG_DIR}/error.log
  7         #CustomLog ${APACHE_LOG_DIR}/access.log combined
  8
  9         <Directory "/var/www/nextcloud">
 10                 AllowOverride All
 11                 Options FollowSymLinks MultiViews
 12         </Directory>
 13
 14         #Satisfy Any
 15
 16         <IfModule mod_dav.c>
 17                 Dav off
 18         </IfModule>
 19
 20         SetEnv HOME /var/www/nextcloud
 21         SetEnv HTTP_HOME /var/www/nextcloud
 22 </VirtualHost>

Antwort1

Sie müssen lediglich anstelle der Alias- und Directory-Direktiven eine neue VirtualHost-Definition hinzufügen:

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  ServerName cloud.my-domain.dev
  DocumentRoot /var/www/nextcloud

  Require all granted
  AllowOverride All
  Options FollowSymLinks MultiViews

  <IfModule mod_dav.c>
    Dav off
  </IfModule>    

  SetEnv HOME /var/www/nextcloud
  SetEnv HTTP_HOME /var/www/nextcloud
</VirtualHost>

Beide virtuellen Hosts können auf Port 80 laufen. So funktioniert namensbasiertes virtuelles Hosting – Sie können mehrere Hosts auf derselben IP-Adresse und demselben Port laufen lassen. Apache gleicht den Wert des Host-Headers, den der Client sendet, mit den Anweisungen ServerName und ServerAlias ​​ab, um zu bestimmen, welcher virtuelle Host sie bedienen soll.

Lesen Sie dieApache Virtual Host-Dokumentation, insbesondere der Teil über namenbasierte virtuelle Hosts.

verwandte Informationen