如何使用Apache部署Go应用程序和MediaWiki?

时间:2013-05-28 19:03:19

标签: apache go mediawiki

假设我有以下简单的Go网络应用程序:

package main

import (
    "fmt"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello World")
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

我有一个由我的大学(www.univ.edu/me)托管的网站,目前我在www.univ.edu/me/wiki下设置了一个wiki,它运行正常。我的问题是我如何在那里部署上面的Go应用程序,以便可以通过www.univ.edu/me/mygoapp访问它?

我找到了一些解决方案,但它们似乎都需要root权限。在我的情况下,我没有root访问权限,我无法修改服务器的配置,这很可能是Apache。

更新:感谢您的回复。看来,在我的情况下,Apache服务器所在的机器与物理托管我的网站文件的机器不同。具有Apache的机器/ IP拒绝ssh连接,因此没有直接的方法来检查服务器的配置。

2 个答案:

答案 0 :(得分:2)

看看阿帕奇mod_proxy。当请求某些虚拟目录时,它提供代理另一个HTTP服务器:

<Location /goapp/>
    ProxyPass http://localhost:8080/
</Location>

您可能需要对Apache配置进行其他更改,以确保请求正确传递。

答案 1 :(得分:1)

如果您对MediaWiki安装中的.htaccess文件具有写入权限,则可以添加:

ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

这取决于全局Apache配置,因为mod_proxy通常在大学等场所禁用或限制,但值得一试。

有关详细信息,请参阅http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypasshttp://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypassreverse