我需要clojure2.msms.com
使用 Ubuntu 上的 Nginx 网络服务器连接一个 war 实例 (war-demo.war)。
这就是我所做的。
1.设置nginx/tomcat
在 中/etc/nginx/sites-enabled
,我设置了 以便tomcat.msms.com
连接到 tomcat7。Tomcat7 的安装方式为apt-get
(https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-7-on-ubuntu-14-04-via-apt-get)。我还检查了/etc/init.d/tomcat7
是否正确安装。
# the IP(s) on which your node server is running. I chose port 3000.
upstream tomcat {
server 127.0.0.1:8008;
keepalive 8;
}
# the nginx server instance
server {
listen 0.0.0.0:80;
server_name tomcat.msms.com;
access_log /var/log/nginx/access_tomcat.log;
error_log /var/log/nginx/error_tomcat.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://tomcat/;
proxy_redirect off;
}
location /excluded {
return 403;
}
}
2. war 文件设置
我上传了 war 文件/var/lib/tomcat7/webapps
以便tomcat.msms.com/war-demo
显示正确的结果。
/var/lib/tomcat7/webapps> ls
ROOT war-demo.war
3. 连接clojure2.msms.com
到war-demo.war
。
我创建了一个 CNAMEclojure2.msms.com
并将此配置文件添加到了ubuntu
的目录中/etc/nginx/sites-enabled
。
server {
listen 80;
server_name clojure2.msms.com;
location / {
proxy_pass http://127.0.0.1:8008/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
然后我修改了/etc/tomcat7/server.xml
146 │ <Host name="clojure2.msms.com" appBase="webapps"
147 │ unpackWARS="true" autoDeploy="true">
148 │ <Context path="" docBase="war-demo" debug="0" privileged="true" />
149 │ <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
150 │ prefix="localhost_access_log." suffix=".txt"
151 │ pattern="%h %l %u %t "%r" %s %b" resolveHosts="false" />
152 │ </Host>
我使用 重新启动了 tomcat 服务器sudo service tomcat7 restart
,并且我似乎已经clojure2.msms.com
从管理器中很好地安装了。
但clojure2.msms.com
链接显示的是默认的 tomcat7 服务器,而不是war-demo.war
实例。我的配置有什么问题?
答案1
这可以是解决方案之一。
创建另一个服务
<Service name="Clojure">
<Connector port="8007" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8442" />
<Engine name="Catalina" defaultHost="clojure2">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="clojure2" appBase="webapps2"
unpackWARS="true" autoDeploy="true">
</Host>
</Engine>
</Service>
基本目录是 webapps2,它使用新端口 8007。
让 clojure2.conf 使用任何其他端口。
在 中/etc/nginx/sites-enabled
,创建一个新nginx
服务。
server {
listen 80;
server_name clojure2.msms.com;
location / {
proxy_pass http://127.0.0.1:8007/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
将 war 文件复制到 webapps2 目录中
将 war 文件复制到/var/lib/tomcat7/webapps2
目录中。不要忘记将 war 文件名更改为 ROOT.war。
重启 tomcat
tomcat7> sudo service tomcat7 restart
* Stopping Tomcat servlet engine tomcat7 [ OK ]
* Starting Tomcat servlet engine tomcat7 [ OK ]
可能有比这更好的解决方案,但这个解决方案正如我预期的那样有效。