Ubuntu

將 nextcloud 移動到 apache VirtualHost 塊中以用作子域?

  • December 8, 2020
  • Nextcloud 目前在my-domain.dev/nextcloud.
  • 我想把它送到cloud.my-domain.dev
  • 我已經設置了一個 A 記錄cloud.my-domain.dev來指向我的伺服器的 IP 地址。
  • 坐在我的旁邊/var/www/nextcloud,我還有一個/var/www/my-domain.dev我的主站點,我已經設置它使用 Let’s-Encrypt 使用 HTTPS。
  • 我正在使用伺服器版本:Apache/2.4.41 (Ubuntu)。

現在我需要設置虛擬主機一起玩。我假設我必須將 nextcloud.conf 轉換為位於虛擬主機中,也許在不同的埠下?我該如何進行?

nextcloud.conf由 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>

我的域.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>

什麼對我有用:

安德魯舒爾曼的回答幾乎對我有用,我只需要做一些小改動:

  • 刪除“要求所有授予”。
  • 將“AllowOverride All”和“Options FollowSymLinks MultiViews”移動到目錄標籤中。

有人可以解釋為什麼這些步驟是必要的嗎?

謝謝安德魯!

nextcloud.conf:
 1 <VirtualHost *:80>
 2         ServerAdmin webmaster@b-t.dev
 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>

您只需要添加一個新的 VirtualHost 定義來代替 Alias 和 Directory 指令:

<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>

兩個虛擬主機都可以在埠 80 上執行。這就是基於名稱的虛擬主機的工作方式——它允許您在相同的 IP 地址和埠上執行多個主機。Apache 將客戶端發送的 Host 標頭的值與 ServerName 和 ServerAlias 指令相匹配,以確定為它們提供服務的虛擬主機。

您應該閱讀Apache Virtual Host 文件,尤其是關於基於名稱的虛擬主機的部分。

引用自:https://serverfault.com/questions/1045353