2015-06-28 95 views
2

我有一個Ubuntu機器上我想運行一個PHP休息服務器。這裏是我的默認配置文件:與apache2服務php RESTful服務器(Ubuntu的)

ServerName localhost 
<VirtualHost *:80> 
    DocumentRoot /var/www/html/otherSite 
    ServerName www.vlio20_paka.com 
    Alias /otherSite /var/www/html/otherSite 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot /var/www/lbserver/public 
    ServerName www.vlio20_lb.com 
    Alias /lbServer /var/www/lbserver/public 
    <Directory /var/www/lbserver/public> 
    AllowOverride all 
    DirectoryIndex index.php 
    Require all granted 
    </Directory> 

</VirtualHost> 

在我的公開目錄我有.htaccess文件:

<IfModule mod_rewrite.c> 
    <IfModule mod_negotiation.c> 
     Options -MultiViews 
    </IfModule> 

    RewriteEngine On 

    # Redirect Trailing Slashes... 
    RewriteRule ^(.*)/$ /$1 [L,R=301] 

    # Handle Front Controller... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 
</IfModule> 

當我嘗試訪問我越來越未找到錯誤的服務器http://MACHINE_IP/lbServer

我該如何讓它工作 (我在配置文件中每次更改後都要重啓apache)?

更新:

生產apache2 -t

[Sun Jun 28 12:00:00.789522 2015] [core:warn] [pid 22089] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined 
[Sun Jun 28 12:00:00.789835 2015] [core:warn] [pid 22089] AH00111: Config variable ${APACHE_PID_FILE} is not defined 
[Sun Jun 28 12:00:00.789970 2015] [core:warn] [pid 22089] AH00111: Config variable ${APACHE_RUN_USER} is not defined 
[Sun Jun 28 12:00:00.790088 2015] [core:warn] [pid 22089] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined 
[Sun Jun 28 12:00:00.790240 2015] [core:warn] [pid 22089] AH00111: Config variable ${APACHE_LOG_DIR} is not defined 
[Sun Jun 28 12:00:00.794721 2015] [core:warn] [pid 22089:tid 140102153521024] AH00111: Config variable ${APACHE_LOG_DIR} is not defined 
[Sun Jun 28 12:00:00.795136 2015] [core:warn] [pid 22089:tid 140102153521024] AH00111: Config variable ${APACHE_LOG_DIR} is not defined 
[Sun Jun 28 12:00:00.795200 2015] [core:warn] [pid 22089:tid 140102153521024] AH00111: Config variable ${APACHE_LOG_DIR} is not defined 
AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf: 
Invalid Mutex directory in argument file:${APACHE_LOCK_DIR} 

注:第一個網站加載不錯,但第二給出了一個404錯誤。

+0

重啓你的apache服務器的命令是'sudo service apache2 restart'。只需重新加載你的配置('重新加載'而不是'重新啓動')也可能工作,並且稍微快一點。 – tarleb

+0

我做了兩個,sudo服務apache2重新加載&sudo服務apache2重新啓動 – vlio20

+0

這意味着除非這些命令處理了錯誤消息,否則您的配置是有效的。請注意,Ubuntu系統中沒有'httpd'二進制文件,它被稱爲'apache2',通常不應直接調用。 – tarleb

回答

0

先把這個當成almos與REST問題無關。這是一個簡單的配置錯誤。

其次,對於apache2 -t,您應該先運行. /etc/apache2/envvars,因爲您需要加載一些envs變量。

然後出現配置問題。

您正在定義2個基於命名的虛擬主機,1個名稱爲www.vlio20_paka.com,另一個名稱爲www.vlio20_lb.com。第一個是首先定義的,所以如果你使用一個未知的名字,默認情況下它將被使用。

當您查詢是這樣的:

http://MACHINE_IP/lbServer 

在您的HTTP查詢中使用的主機頭MACHINE_IP,所以它不是www.vlio20_paka.com而不是www.vlio20_lb.com。如果你沒有其他默認的虛擬主機(你會發現使用apache2 -S),第一個將被使用。

讓我們看一下第一種:

<VirtualHost *:80> 
    DocumentRoot /var/www/html/otherSite 
    ServerName www.vlio20_paka.com 
    Alias /otherSite /var/www/html/otherSite 
</VirtualHost> 

如果我們在這裏落下路徑搜索你的硬盤上會DocumentRoot + url,所以/var/www/html/otherSite/lbServer。你有一個,機會是這條道路不存在。

請注意,您在這裏Alias說明只是告訴Apache以http://www.vlio20_paka.com/的請求,並http://www.vlio20_paka.com/otherSite請求將都指向/var/www/html/otherSite/目錄,你想做的事,也許不是。

Alias只是一種在url-to-filesystem地圖上定義某種URL符號鏈接的方法。

現在讓我們看看第二個虛擬主機,如果你在HTTP請求中使用正確的名稱,你也只能達到,未請求http://MACHINE_IP/lbServerhttp://www.vlio20_lb.com/lbServer(對,你可以在你的/ etc中的條目/ hosts文件,上運行http查詢的機器)。

<VirtualHost *:80> 
    DocumentRoot /var/www/lbserver/public 
    ServerName www.vlio20_lb.com 
    Alias /lbServer /var/www/lbserver/public 
    <Directory /var/www/lbserver/public> 
    AllowOverride all 
    DirectoryIndex index.php 
    Require all granted 
    </Directory> 

</VirtualHost> 

所以在這裏你/var/www/lbserver/public設置的DocumentRoot而且,通過Alias,你告訴Apache,爲http://www.vlio20_lb.com/lbServer/點請求相同的條目http://www.vlio20_lb.com/

您的最佳解決方案是在/etc/hosts中添加一個條目,請求您的測試網站具有實名,以便您可以使用基於名稱的VirtualHosting。或者只使用一個VirtualHost並嘗試使用別名,但通常遠離生產設置。

0

我覺得唯一沒有看到更多配置的東西。

變化:

<Directory /lbserver> 
    DirectoryIndex index.php 
</Directory> 

要:

<Directory /lbserver> 
    DirectoryIndex index.php 
    Require all granted 
</Directory> 
+0

它沒有幫助。我可以做的任何其他事情或細節我可以添加嗎? – vlio20

+0

當你進入'http:// 127.0.0.1 /'(或'MACHINE_IP')時會發生什麼。改變之後你是否重新啓動apache? '/ path/to/httpd -t'也是這樣說的嗎? – Tigger

+0

我在這臺機器上有其他網站,所以'http:// 127.0.0.1 /'(MACHINE_IP),所以我的默認站點被看到(一個靜態的)。看到問題輸出httpd -t – vlio20

0

在Ubuntu沒有二進制的httpd,Apache2的代替:

[email protected]:~$ httpd -t 
No se ha encontrado la orden «httpd», quizás quiso decir: 
La orden «xttpd» del paquete «xtide» (universe) 
La orden «https» del paquete «httpie» (universe) 
La orden «http» del paquete «httpie» (universe) 
httpd: no se encontró la orden 
[email protected]:~$ apache2 -t 

現在,粘貼命令的輸出;-)

+0

我已更新問題 – vlio20