2017-04-06 108 views
9

我不確定更改了什麼,但solr無法在我的機器上啓動。我得到以下錯誤...太陽黑子導軌無法在Mac OS X上加載

❯ bundle exec rake sunspot:solr:run 
2017-04-06 08:47:48.624:INFO:oejs.Server:jetty-8.1.8.v20121106 
2017-04-06 08:47:48.646:INFO:oejdp.ScanningAppProvider:Deployment monitor /Users/noahc/.rvm/gems/[email protected]/gems/sunspot_solr-2.2.0/solr/contexts at interval 0 
2017-04-06 08:47:48.654:INFO:oejd.DeploymentManager:Deployable added: /Users/noahc/.rvm/gems/[email protected]/gems/sunspot_solr-2.2.0/solr/contexts/solr.xml 
2017-04-06 08:47:48.723:INFO:oejw.WebInfConfiguration:Extract jar:file:/Users/noahc/.rvm/gems/[email protected]/gems/sunspot_solr-2.2.0/solr/webapps/solr.war!/ to /private/var/folders/cv/259q741957qc1v7qnf5v4kfm0000gn/T/jetty-0.0.0.0-443- 
solr.war-_solr-any-/webapp 
2017-04-06 08:47:49.653:INFO:oejw.StandardDescriptorProcessor:NO JSP Support for /solr, did not find org.apache.jasper.servlet.JspServlet 
Null identity service, trying login service: null 
Finding identity service: null 
2017-04-06 08:47:49.679:INFO:oejsh.ContextHandler:started o.e.j.w.WebAppContext{/solr,file:/private/var/folders/cv/259q741957qc1v7qnf5v4kfm0000gn/T/jetty-0.0.0.0-443-solr.war-_solr-any-/webapp/},/Users/noahc/.rvm/gems/[email protected]/ge 
ms/sunspot_solr-2.2.0/solr/webapps/solr.war 
2017-04-06 08:47:49.680:INFO:oejsh.ContextHandler:started o.e.j.w.WebAppContext{/solr,file:/private/var/folders/cv/259q741957qc1v7qnf5v4kfm0000gn/T/jetty-0.0.0.0-443-solr.war-_solr-any-/webapp/},/Users/noahc/.rvm/gems/[email protected]/ge 
ms/sunspot_solr-2.2.0/solr/webapps/solr.war 
2017-04-06 08:48:06.041:WARN:oejuc.AbstractLifeCycle:FAILED [email protected]:443: java.net.BindException: Permission denied (Bind failed) 
java.net.BindException: Permission denied (Bind failed) 
     at java.net.PlainSocketImpl.socketBind(Native Method) 
     at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387) 
     at java.net.ServerSocket.bind(ServerSocket.java:375) 
     at java.net.ServerSocket.<init>(ServerSocket.java:237) 
     at java.net.ServerSocket.<init>(ServerSocket.java:181) 
     at org.eclipse.jetty.server.bio.SocketConnector.newServerSocket(SocketConnector.java:96) 
     at org.eclipse.jetty.server.bio.SocketConnector.open(SocketConnector.java:85) 
     at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:316) 
     at org.eclipse.jetty.server.bio.SocketConnector.doStart(SocketConnector.java:156) 
     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
     at org.eclipse.jetty.server.Server.doStart(Server.java:288) 
     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
     at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1266) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1189) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.eclipse.jetty.start.Main.invokeMain(Main.java:472) 
     at org.eclipse.jetty.start.Main.start(Main.java:620) 
     at org.eclipse.jetty.start.Main.main(Main.java:95) 
2017-04-06 08:48:06.043:WARN:oejuc.AbstractLifeCycle:FAILED [email protected]: java.net.BindException: Permission denied (Bind failed) 
java.net.BindException: Permission denied (Bind failed) 
     at java.net.PlainSocketImpl.socketBind(Native Method) 
     at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387) 
     at java.net.ServerSocket.bind(ServerSocket.java:375) 
     at java.net.ServerSocket.<init>(ServerSocket.java:237) 
     at java.net.ServerSocket.<init>(ServerSocket.java:181) 
     at org.eclipse.jetty.server.bio.SocketConnector.newServerSocket(SocketConnector.java:96) 
     at org.eclipse.jetty.server.bio.SocketConnector.open(SocketConnector.java:85) 
     at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:316) 
     at org.eclipse.jetty.server.bio.SocketConnector.doStart(SocketConnector.java:156) 
     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
     at org.eclipse.jetty.server.Server.doStart(Server.java:288) 
     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
     at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1266) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1189) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.eclipse.jetty.start.Main.invokeMain(Main.java:472) 
     at org.eclipse.jetty.start.Main.start(Main.java:620) 
     at org.eclipse.jetty.start.Main.main(Main.java:95) 
java.lang.reflect.InvocationTargetException 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.eclipse.jetty.start.Main.invokeMain(Main.java:472) 
     at org.eclipse.jetty.start.Main.start(Main.java:620) 
     at org.eclipse.jetty.start.Main.main(Main.java:95) 
Caused by: java.net.BindException: Permission denied (Bind failed) 
     at java.net.PlainSocketImpl.socketBind(Native Method) 
     at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387) 
     at java.net.ServerSocket.bind(ServerSocket.java:375) 
     at java.net.ServerSocket.<init>(ServerSocket.java:237) 
     at java.net.ServerSocket.<init>(ServerSocket.java:181) 
     at org.eclipse.jetty.server.bio.SocketConnector.newServerSocket(SocketConnector.java:96) 
     at org.eclipse.jetty.server.bio.SocketConnector.open(SocketConnector.java:85) 
     at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:316) 
     at org.eclipse.jetty.server.bio.SocketConnector.doStart(SocketConnector.java:156) 
     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
     at org.eclipse.jetty.server.Server.doStart(Server.java:288) 
     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
     at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1266) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1189) 
     ... 7 more 

Usage: java -jar start.jar [options] [properties] [configs] 
     java -jar start.jar --help # for more information 

我可以使用BREW和Solr的安裝,並讓它運行和訪問管理頁面像http://localhost:8981/solr/#/~logging,但我不能讓我的Rails應用程序和黃瓜特別是使用即brew install版本。我也不能讓bundle exec rake sunspot:solr:run指揮員工作,這對團隊中的其他人員都有效。

編輯:

sunspot.yml

development: 
    solr: 
    hostname: localhost 
    port: 8982 
    log_level: INFO 
    min_memory: 512M 
    max_memory: 1G 
    path: /solr/development 

test: 
    solr: 
    hostname: localhost 
    port: 8981 
    log_level: WARNING 
    path: /solr/test 

solr.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<solr persistent="false"> 
    <cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:}"> 
    <core name="default"  instanceDir="." dataDir="default/data"/> 
    <core name="development" instanceDir="." dataDir="development/data"/> 
    <core name="test"  instanceDir="." dataDir="test/data"/> 
    </cores> 
</solr> 
+1

你可以發佈你的'config/sunspot.yml'嗎? – rposborne

+0

@rposborne添加了它! –

+1

你可以從'solr'目錄發佈你的solr.xml嗎? 我們需要弄清楚端口443來自哪裏,您嘗試配置solr的其他步驟是什麼?任何ENV變量或其他配置? – rposborne

回答

5

嘗試仿照給權限/solr目錄

chown -R $USER /solr 

說明:

  • Permission denied (Bind failed),當應用程序沒有按」這引起了典型的錯誤沒有足夠的權限運行。

  • /solr目錄有權限只爲root用戶(在大多數情況下是肯定的)

  • 當前用戶是/Users/noahc這不是root用戶

因此,我瞭解到,目前用戶沒有足夠的權限來運行應用程序。

+1

你是怎麼知道這樣做的? –

+0

這很好...但我寧願看到更完整的答案。 – jakerella

+0

@NoahClark'Permission denied'是一個典型的Unix錯誤。所有新的Unix用戶都面臨着這樣的問題:) – itsnikolay

4
  1. 驗證正在運行預期通過設置絕對路徑Solr的文件夾你的路徑我的差異SOLR_HOME=/Users/rposborne/code/my-project/solr/conferent(這是我如何告訴我的brew安裝在我的項目中的源代碼控制的solr配置中運行)
  2. 驗證您沒有任何JETTY_ARGS如果這樣做可能會將端口設置爲443並導致權限錯誤。
  3. 更新您的solr.xml。發佈的XML配置顯示日期。確保你的solr版本使用solr配置。 https://github.com/sunspot/sunspot/blob/master/sunspot_solr/solr/solr/solr.xml

視角

它看起來像bundle exec rake sunspot:solr:run正試圖在端口443,這是一個受保護的端口上運行,因此拒絕「權限」。您應該驗證您的config/sunspot.yml中設置的端口設置爲您期望的端口,可能是8981

就我個人而言,我不使用太陽黑子提供的幫助器,因爲它增加了一個抽象層,我最終必須在生產中處理這個抽象層。

要指向其他安裝的太陽黑子,您可以通過幾種不同的方式對其進行配置。

  1. ENV變量:設置太陽黑子首先考慮的環境變量SOLR_URL。 SOLR_URL=http://localhost:8981/solr/your-collection-name/
  2. config/sunspot.yml這是後config/database.yml
+1

@noahclark增加了一些額外的步驟來解決。 – rposborne

+1

感謝您的延伸信息! – jakerella