单个 droplet 上的多个 Wordpress 网站 / 虚拟主机 / 一个网站正常运行,第二个网站出现死机白屏。为什么? - Digital Ocean

单个 droplet 上的多个 Wordpress 网站 / 虚拟主机 / 一个网站正常运行,第二个网站出现死机白屏。为什么? - Digital Ocean

這不是重複的贴子!

系统信息:在 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 时,出现了死机白屏。 此外:当我放入一个基本的 index.html 文件时,它会正确显示。但它仍然显示 index.html 文件/var/www/html

让我们为两个域都安装加密。

以下是相关文件的内容:

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

    UseCanonicalName On

<VirtualHost *:80>
        ServerAdmin [email protected]

        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 [email protected]

        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>

有一个-le-ssl.conf用于域 2 的文件(来自 let's encrypt)。奇怪的是,域 1 没有这种文件。我复制并重命名了域 1 并对其进行了配置,但仍然没有成功。

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

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAdmin [email protected]

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

编辑:另外,当我谷歌http://my.ip.地址它会重定向到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 相同。这样可以吗?

期待您的答复!

答案1

错误表明 PHP 无法读取,/var/www/html/index.php因为文件权限不允许。

您需要确保文件所有权和权限允许 PHP 读取该文件。

相关内容