Virtualhost

單個液滴/虛擬主機上的多個 Wordpress 站點/一個站點正在執行,第二個站點出現白屏當機。為什麼?- 數字海洋

  • July 27, 2020

這不是重複的文章!

系統資訊:安裝在 Ubuntu 18.04 上的 LAMP

我在 Digital Ocean droplet 上有兩個 WordPress 網站,比如說 domain1 和 domain2。我設置了2個虛擬主機。我位於的 domain2/var/www/domain2工作正常,但

domain1 正在重定向到/var/www/html而不是/var/www/domain1. 除此之外,當我將domain1的所有文件複製/var/www/html到domain1並打到domain1時,它會出現白屏當機。 另外:當我放置一個基本的 index.html 文件時,它會正確顯示。但它仍然顯示 index.html 文件/var/www/html

讓我們加密已經為兩個域安裝。

這裡是相關文件的內容:

/etc/apache2/sites-available/domain1.conf :

   UseCanonicalName On

<VirtualHost *:80>
       ServerAdmin domain1@gmail.com

       ServerName domain1.com
       ServerAlias www.domain1.com

       DocumentRoot /var/www/domain1

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

       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =domain1.com [OR]
RewriteCond %{SERVER_NAME} =www.domain1.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

</VirtualHost>

/etc/apache2/sites-available/domain2.conf :

   UseCanonicalName On

<VirtualHost *:80>
       ServerAdmin domain2@gmail.com

       ServerName domain2.com
       ServerAlias www.domain2.com

       DocumentRoot /var/www/domain2

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

       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =domain2.com [OR]
RewriteCond %{SERVER_NAME} =www.domain2.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

domain2有一個-le-ssl.conf文件(來自 let’s encrypt)。奇怪的是 domain1 沒有這種文件。我為 domain1 複製並重命名和配置,但仍然沒有運氣。

/etc/apache2/sites-available/domain2-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
       ServerAdmin domain2@gmail.com

       ServerName domain2.com
       ServerAlias www.domain2.com

       DocumentRoot /var/www/domain2

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

       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/domain2/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain2/privkey.pem
</VirtualHost>
</IfModule>

最後,.htaccess兩個網站的文件相同:

.htaccess

   # BEGIN WordPress
# The directives (lines) between `BEGIN WordPress` and `END WordPress` are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

如果你問我做了這些:

  • 配置後重啟apache
  • 使用 a2ensite 啟用 .conf 文件
  • 使用 a2dissite 禁用 000-default.conf 文件

編輯:另外,當我用Google搜尋http://my.ip.address時,它會重定向到帶有白屏的https://domain1.com 。


更新

這裡的apache2 error日誌可能是相關的:

[mpm_prefork:notice] [pid 31941] AH00171: Graceful restart requested, doing restart AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 10.18.0.5. Set the 'ServerName' directive globally to suppress this message

[php7:warn] [pid 12694] [client ] PHP Warning:  Unknown: failed to open stream: Permission denied in Unknown on line 0  [php7:error] [pid 12694] [client] PHP Fatal error:  Unknown: Failed opening required '/var/www/html/index.php' (include_path='.:/usr/share/php') in Unknown on line 0

請注意:我將文件權限更改為755,仍然是一樣的。

可能是ServerName問題嗎?:https ://askubuntu.com/questions/256013/apache-error-could-not-reliably-determine-the-servers-fully-qualified-domain-n 這裡是 vhosts 文件:

127.0.1.1 myhostname myhostname
127.0.0.1 localhost

奇怪的是我的主機名和主機名 fqdn 是一樣的。可以嗎?

期待你的答案!

該錯誤表明PHP無法讀取/var/www/html/index.php,因為文件權限不允許。

您需要確保文件所有權和權限允許 PHP 讀取文件。

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