我想创建一个服务器,充当特定子域上请求机器的环回。
如何引用请求 IP 以将少数端口上的流量路由回请求 IP?
或者,在我自己的子域上运行的 xip.io 的克隆也可以工作,因此路由如下:
10.199.1.1.my.domain.com -> 将所有流量路由到 10.199.1.1
我想创建一个服务器,充当特定子域上请求机器的环回。
如何引用请求 IP 以将少数端口上的流量路由回请求 IP?
或者,在我自己的子域上运行的 xip.io 的克隆也可以工作,因此路由如下:
10.199.1.1.my.domain.com -> 将所有流量路由到 10.199.1.1
我正在尝试设置一个 tomcat6 服务器,并且正在尝试匹配其他人建立的另一个设置。但是,我的部署(默认 Ubuntu 安装)使用policy.d/
目录结构,而建立的服务器只使用一个catalina.policy
文件。我尝试将 policy.d 中的每个条目设置为与给定的 catalina.policy 匹配,但我仍然在启动时获得以下堆栈跟踪(来自 localhost 日志)。
那我有两个问题。首先,我如何让 tomcat 使用单个 poilcy 文件,而不是提供的目录结构policy.d/
?其次,为什么当我指定所有文件使用相同的策略时,我仍然会得到下面的堆栈跟踪?
堆栈跟踪:
SEVERE: Servlet /myapp threw load() exception
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.org.apache.jasper)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:342)
at java.security.AccessController.checkPermission(AccessController.java:553)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkPackageAccess(SecurityManager.java:1529)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:291)
at java.lang.ClassLoader.loadClass(ClassLoader.java:264)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1314)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1245)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)
at org.apache.jasper.servlet.JspServlet.init(JspServlet.java:100)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:537)
at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:115)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1166)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4367)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:123)
at org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.java:145)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:769)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:978)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:941)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:499)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1201)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:318)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.commons.daemon.support.DaemonLoader.start(DaemonLoader.java:177)
政策.d
grant codeBase "file:${java.home}/lib/-" {
permission java.security.AllPermission;
};
// These permissions apply to all shared system extensions
grant codeBase "file:${java.home}/jre/lib/ext/-" {
permission java.security.AllPermission;
};
// These permissions apply to javac when ${java.home] points at $JAVA_HOME/jre
grant codeBase "file:${java.home}/../lib/-" {
permission java.security.AllPermission;
};
// These permissions apply to all shared system extensions when
// ${java.home} points at $JAVA_HOME/jre
grant codeBase "file:${java.home}/lib/ext/-" {
permission java.security.AllPermission;
};
// ========== CATALINA CODE PERMISSIONS =======================================
// These permissions apply to the daemon code
grant codeBase "file:${catalina.home}/bin/commons-daemon.jar" {
permission java.security.AllPermission;
};
// These permissions apply to the logging API
grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {
permission java.util.PropertyPermission "java.util.logging.config.class", "read";
permission java.util.PropertyPermission "java.util.logging.config.file", "read";
permission java.io.FilePermission "${java.home}${file.separator}lib${file.separator}logging.properties", "read";
permission java.lang.RuntimePermission "shutdownHooks";
permission java.io.FilePermission "${catalina.base}${file.separator}conf${file.separator}logging.properties", "read";
permission java.util.PropertyPermission "catalina.base", "read";
permission java.util.logging.LoggingPermission "control";
permission java.io.FilePermission "${catalina.base}${file.separator}logs", "read, write";
permission java.io.FilePermission "${catalina.base}${file.separator}logs${file.separator}*", "read, write";
permission java.lang.RuntimePermission "getClassLoader";
// To enable per context logging configuration, permit read access to the appropriate file.
// Be sure that the logging configuration is secure before enabling such access
// eg for the examples web application:
// permission java.io.FilePermission "${catalina.base}${file.separator}webapps${file.separator}examples${file.separator}WEB-INF${file.separator}classes${file.separator}logging.properties", "read";
};
// These permissions apply to the server startup code
grant codeBase "file:${catalina.home}/bin/bootstrap.jar" {
permission java.security.AllPermission;
};
// These permissions apply to the servlet API classes
// and those that are shared across all class loaders
// located in the "lib" directory
grant codeBase "file:${catalina.home}/lib/-" {
permission java.security.AllPermission;
};
// ========== WEB APPLICATION PERMISSIONS =====================================
// These permissions are granted by default to all web applications
// In addition, a web application will be given a read FilePermission
// and JndiPermission for all files and directories in its document root.
grant {
// Required for JNDI lookup of named JDBC DataSource's and
// javamail named MimePart DataSource used to send mail
permission java.util.PropertyPermission "java.home", "read";
permission java.util.PropertyPermission "java.naming.*", "read";
permission java.util.PropertyPermission "javax.sql.*", "read";
// OS Specific properties to allow read access
permission java.util.PropertyPermission "os.name", "read";
permission java.util.PropertyPermission "os.version", "read";
permission java.util.PropertyPermission "os.arch", "read";
permission java.util.PropertyPermission "file.separator", "read";
permission java.util.PropertyPermission "path.separator", "read";
permission java.util.PropertyPermission "line.separator", "read";
// JVM properties to allow read access
permission java.util.PropertyPermission "java.version", "read";
permission java.util.PropertyPermission "java.vendor", "read";
permission java.util.PropertyPermission "java.vendor.url", "read";
permission java.util.PropertyPermission "java.class.version", "read";
permission java.util.PropertyPermission "java.specification.version", "read";
permission java.util.PropertyPermission "java.specification.vendor", "read";
permission java.util.PropertyPermission "java.specification.name", "read";
permission java.util.PropertyPermission "java.vm.specification.version", "read";
permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
permission java.util.PropertyPermission "java.vm.specification.name", "read";
permission java.util.PropertyPermission "java.vm.version", "read";
permission java.util.PropertyPermission "java.vm.vendor", "read";
permission java.util.PropertyPermission "java.vm.name", "read";
// Required for OpenJMX
permission java.lang.RuntimePermission "getAttribute";
// Allow read of JAXP compliant XML parser debug
permission java.util.PropertyPermission "jaxp.debug", "read";
// Precompiled JSPs need access to this package.
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime";
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime.*";
// Precompiled JSPs need access to this system property.
permission java.util.PropertyPermission "org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER", "read";
};
在过去的几天里,我对我的 Web 应用程序运行了负载,我注意到通过 JMX 监控查看的“当前加载的类”不断增加。它会上升然后下降,但加载的类的平均数量随时间线性增加。在加载之初,“当前加载的类”只有几千个。然而,现在,“当前加载的类”已达到 130,000+。
这是正常的吗?我知道类会填满 PermGen 内存,但 PermGen 内存是否泄漏尚不确定。
Used:
65,124 kbytes
Committed:
65,536 kbytes
Max:
65,536 kbytes
使用的数字在 62k 和 65k 之间移动,但我还没有注意到服务器上出现任何灾难性故障。那么,我的问题是双重的。
首先,这正常吗?如果不是,这最终会导致 Tomcat 崩溃吗?
tomcat6默认将日志放在哪里?catalina.out 似乎在 /var/lib/tomcat6/logs 中包含启动/关闭信息,但标准输出要么被吞没,要么被重定向到其他地方。我正在构建一个 scala tomcat Web 服务,这是我对手动 tomcat 配置(至少是:P)和 scala 的尝试。
现在,我需要获取抛出异常的堆栈跟踪,我真的很想在 tomcat 日志中看到标准输出。我知道在某些时候我想使用一个合适的记录器,但是就像我说的,这是我的“hello world”网络服务,我宁愿在担心正确的日志记录之前让它工作。
帮助?
我正在运行 tomcat6(来自 repos)和 Ubuntu 8.10。
我一直在尝试桥接一段时间,但我不确定出了什么问题。
在 /etc/network/interfaces 中,我添加了以下内容:
auto br0
iface br0 inet dhcp
bridge_ports all
然后,当我尝试 /etc/init.d/networking restart 时,我无法再通过 eth0 ping 任何东西。这是怎么回事?我对linux网络配置不太了解。
我正在尝试在 tomcat 下运行 scala 应用程序,每当我使用标准的 java 东西时,我似乎还可以。但是,当我执行诸如字符串连接或序列生成之类的操作时,我会收到 NoClassDefFound 的奇怪错误...
我的第一个想法是我没有将所需的 scala-library jar 放在正确的目录中,或者我需要做一些额外的配置来让我的 servlet 知道外部依赖。我尝试将 scala-library.jar 放在 tomcat6“lib”目录和 ROOT/WEB-INF/lib 下,但似乎都不允许我的 servlet 使用 jar 中的类。这是怎么回事?
我知道/etc/group
并且/etc/passwd
被修改了,并且/home/user/*
被创建了,但是还有其他的吗?
谢谢。
我想将我的系统邮件重定向到我的 gmail 帐户,并且我已经在 ubuntu 服务器上设置了 postfix 来尝试这样做。但是,当我 telnet 到 25 并发送电子邮件时,电子邮件似乎只是排队,当我在用户的主目录中创建 .forward 条目时,永远不会收到转发的电子邮件。现在,如果我删除 .forward,我确实收到了电子邮件,这让我认为有些事情出了问题。
可能出了什么问题?我是后缀的新手。
删除错误的虚拟名称后,
Aug 29 02:02:41 li64-245 postfix/qmgr[20838]: 8F63460458: from=<[email protected]>, size=1977, nrcpt=1 (queue active)
Aug 29 02:02:41 li64-245 postfix/local[20869]: 82C3460323: to=<[email protected]>, relay=local, delay=0.13, delays=0.08/0/0/0.05, dsn=2.0.0, status=sent (forwarded as 8F63460458)
Aug 29 02:02:41 li64-245 postfix/qmgr[20838]: 82C3460323: removed
Aug 29 02:02:42 li64-245 postfix/smtp[20870]: 8F63460458: to=<[email protected]>, orig_to=<[email protected]>, relay=gmail-smtp-in.l.google.com[209.85.212.44]:25, delay=1.4, delays=0.05/0.01/0.11/1.2, dsn=2.0.0, status=sent (250 2.0.0 OK 1251511363 10si2655905vws.3)
Aug 29 02:02:42 li64-245 postfix/qmgr[20838]: 8F63460458: removed
Aug 29 02:03:11 li64-245 postfix/smtpd[20865]: disconnect from mail-gx0-f216.google.com[209.85.217.216]
然而,我没有收到个人电子邮件。是什么赋予了?我为用户测试设置了手动 .forward 条目。
编辑:Gmail 将不允许响应者自动转发回发件人。切换电子邮件帐户,我正要收到转发的邮件。
按照各种教程,我通过 svnserve 的 xinetd.d 配置运行了 svn。我正在尝试在本地结帐以测试 svn 设置,但是当我尝试将任何文件提交到 svn 存储库时,我收到 Permission denied 错误。我创建了一个 svn 组并将我的用户帐户添加到其中,然后我创建了 svn 组拥有的 svn 目录并将文件权限设置为 774,但仍然出现此错误。
可能出了什么问题?我似乎能够结帐就好了。
如何防止tomcat缓存?我有通过 ajax 加载和使用的 css 和基本 html 文件,除非我重新启动 tomcat,否则这些更改似乎没有反映出来。不同的机器,不同的浏览器,我没有收到更新的文件。
想法?
我尝试使用 NamedVirtualHosts 设置单个服务器来处理两个网站。这是我第一次尝试这样做,而且我的行为非常不寻常。具体来说,对 www.example2.com 的请求指向 /home/stefan/example2,但http://example.com指向 /home/stefan/example1。
有谁知道这里发生了什么?
/etc/apache2/apache2.conf
...
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /home/stefan/example1
ServerName www.example1.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /home/stefan/example2
ServerName www.example2.com
</VirtualHost>