Apache-2.2

安裝 nginx 和 hhvm 後無法讓 apache 工作

  • June 29, 2015

我在本地 ubuntu 機器上執行了 Apache2,並按照本教程在本地安裝了 nginx 和 hhvm 以進行調試。

我現在想像以前一樣切換回 Apache2,以前我同時執行了 PHP5-FPM 的 Apache 和 NGINX,我可以通過執行在它們之間切換:

sudo service nginx stop
sudo service apache2 restart

現在,當我嘗試此操作時,當我嘗試訪問我的 Magento 應用程序時出現以下錯誤

/var/www/app/Mage.php was not found

但是,當我轉到http://localhost/時,我可以看到預設的 Ubuntu Apache 頁面

我試著跑步

~:$ sudo service nginx stop
~:$ sudo service hhvm stop
~:$ sudo service apache2 restart 
* Restarting web server apache2                                                               [ OK ] 
~:$ sudo service php5-fpm restart 
stop: Unknown instance: 
php5-fpm start/running, process 12258
~:$ sudo service php5-fpm restart 
php5-fpm stop/waiting
php5-fpm start/running, process 12281

現在,當我嘗試在瀏覽器中訪問我的 Magento 應用程序時,出現 503 服務不可用錯誤。我知道在 Magento 中這個錯誤可能是由 Magento 根目錄中的 maintenance.flag 文件引起的,但這裡不是這種情況。

我的 Apache 錯誤日誌說:

[Sat Jun 27 11:11:07.902430 2015] [proxy:error] [pid 12223] (111)Connection refused: AH00957: FCGI: attempt to connect to 127.0.0.1:9000 (*) failed
[Sat Jun 27 11:11:07.902490 2015] [proxy_fcgi:error] [pid 12223] [client 127.0.0.1:39494] AH01079: failed to make connection to backend: 127.0.0.1[Sat Jun 27 11:11:07.902430 2015] [proxy:error] [pid 12223] (111)Connection refused: AH00957: FCGI: attempt to connect to 127.0.0.1:9000 (*) failed
[Sat Jun 27 11:11:07.902490 2015] [proxy_fcgi:error] [pid 12223] [client 127.0.0.1:39494] AH01079: failed to make connection to backend: 127.0.0.1

當我安裝 HHVM 時,我執行它的 install_fastcgi.sh 腳本。這可能是導致問題的原因。

關於如何在 NGINX 和 Apache 之間切換而不在本地使用 HHVM 的任何想法。


更新

我在下面嘗試了@mboehn 解決方案,現在當我導航到我的 Magento 應用程序 URL 時,我在瀏覽器中收到了原始錯誤

在此處輸入圖像描述

這應該在/var/www/magento/app/尋找Mage.php。並且index.php/var/www/magento/. index.php 的開頭是:

/**
* Compilation includes configuration file
*/
define('MAGENTO_ROOT', getcwd());

$compilerConfig = MAGENTO_ROOT . '/includes/config.php';
if (file_exists($compilerConfig)) {
   include $compilerConfig;
}

$mageFilename = MAGENTO_ROOT . '/app/Mage.php';

但這是 Magento 應用程序正常執行的方式,我在這裡沒有做任何更改。剛剛安裝了 HHVM 並停止它以恢復到我以前的 Apache 配置。

裡面什麼都沒有/var/log/apache2/error.log

在我有:

<VirtualHost *:80>
DocumentRoot /var/www/magento
ServerName http://dev.magento.local
DirectoryIndex index.php
<Directory /var/www/magento>
AllowOverride All
Allow from All
SetEnv MAGE_IS_DEVELOPER_MODE true
</Directory>
</VirtualHost>

第二次更新

好的,所以/var/www/路徑中有一個 index.php 讓我失望,它只是我多年前一直在研究的東西的副本,以前沒有引起問題。

刪除它後,我在瀏覽器中收到以下消息。

文件未找到。

現在在我的 apache 錯誤日誌中它說 [Sat Jun 27 12:33:58.382270 2015] [proxy_fcgi:error] [pid 16003] [client 127.0.0.1:40412] AH01071: Got error 'Primary script unknown\n'

解決了:)

當我安裝 HHVM 時,我執行了以下設置 HHVM 並更改了一些配置的 shell 腳本。

sudo /usr/share/hhvm/install_fastcgi.sh

我不確定這到底是做什麼的,但我幾乎可以肯定這是導致問題的原因,因為當我執行下面的解除安裝腳本時,它也隨 HHVM 一起提供,它修復了所有問題,現在 Apache 也可以工作了。

$ sudo /usr/share/hhvm/uninstall_fastcgi.sh

您可能讓 php5-fpm 監聽 unix 套接字(例如/var/run/php5-fpm.sock,當 Apache 嘗試連接到 127.0.0.1:9000.

檢查listen您的 php5-fpm 配置中的 -directive(我猜/etc/php5/fpm/pool.d/www.conf)。然後將 Apache 配置為使用 unix 套接字或重新配置 php5-fpm 和 nginx 以使用網路套接字(一個埠)

  • 使 php5-fpm 使用埠 9000:

    • /etc/php5/fpm/pool.d/www.conf,替換listen = /var/run/php5-fpm.socklisten = 127.0.0.1
  • Apache 已經使用了 9000 埠

  • 讓 ngnix 使用埠 9000:

    • /etc/nginx/sites-available/default(這是預設文件,您可能正在使用同一目錄中的另一個文件),替換fastcgi_pass unix:/var/run/php5-fpm.sock;fastcgi_pass 127.0.0.1:9000;

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