gggggds 发表于 2018-12-2 07:20:20

Center OS Tomcat7 服务器配置总结

  tomcat7 目录结构
  --- webapps      应用存放目录,可以配置Host 来决定这个文件的目录,可以配置多个Host,多个webapps
  ---ROOT      项目根目录,Tomcat会特殊对待这个目录,配置Host时会影响到这个目录
  --- conf         配置文件存放目录 配置端口 Host Domain 等
  --- logs         日志存放目录
  --- work
  --- bin            可执行文件存放目录
  --- lib            第三方包存放目录
  --- temp         临时文件存放目录
  

  

  如何配置Tomcat的Host,Domain?
  ...
  
  
  
  Engine       在这个标签下可以配置访问域名,日志输出等。一个Tomcat只能配置一个Engine
  

  defaultHost配置默认访问域名,就是如果用IP,或者其他指向这个服务器的域名都会跳到
               这个Host所指的项目,在Engine标签下必须存在defaultHost属性所指的Host.
  

  Host         是用来配置访问域名的。
  

  Host-name    表示的域名。 可以填localhost,和指向这个服务器的域名。
  

  Host-appBase 当前Host的访问空间。 可以为一个绝对路径, 也可以填写一个相对于Tomcat Home的相对路径
  

  unpackWARs   如果值为true 将会在程序启动时自动解压Host-appBase下的所有War文件
  

  autoDeploy   如果值为true 将会自动部署Host-appBase目录下的所有项目
  

  reloadable   如果为true 将会自动监听Host-appBase目录War文件和项目的变化,如果存在变化,将自动重新加载。
  

  Host/Context 用来配置应用所在位置,访问ContentPath 等。
  

  Context-path 用来配置项目的访问ContentPath 一般我们配置为 "" 这样就可以访问为根目录,
     如果值为abc ,那么访问是要在Domain的后面加上abc然后在是访问路径和参数,如:http://domain:port/abc/...
  

  docBase      配置项目目录,可以指向一个绝对路径,或者一个相对于Host-appBase的路径. 如果指向的是文件夹,那么文件夹里面的内容就是项目内容。
     如果指向的为一个War文件,这个文件将会被解压到Host-appBase所指路径。 如果Host-appBase 不存在ROOT文件夹,而这个war文件为
     非ROOT.war文件,那么这个war文件将会解压和部署两次,一个是ROOT项目,另外一个是它本身。所以建议将这个文件命名为ROOT.war文件。
     这样就只会有一次解压和部署。
  

  

  

  

  

  如何配置Log4j的日志存放路径?
  在log4j.xml 或log4j.properties 文件中你会找到类似这样的配置
  
  log44j 的日志配置路径,如果配置为 ../logs/... 在windows系统下面会将日志文件写到Tomcat 或者其他服务器的Home下面。
  但是如果为Linux系统下,这样的配置将会把日志文件写的根目录下, 但是往往我们会在Linux下不会已Root用户启动Tomcat。
  所以Tomcat将会没有权限写日志文件。 日志就不会成功写出。
  那么解决方法就是,不要把配置写成 ../logs/... 这样的形式。 那么我们该这么写呢?配置到那个文件夹合适呢?
  1. tomcat目录, 如果把日志写到这个目录,我们就有权限。 这个文件夹下面,日志会一直存在和追加。 方面以后追踪错误。
  如果要配置到这个目录,我们可以使用这样的形式配置 ${catalina.home}/logs/...
  因为 Tomcat 会在项目启动的时候设置catalina.home这个系统变量指向我们的Tomcat Home
  
  2. 项目目录。 这个文件夹下面有两个好处。
        1,我们可以配置来通过项目的web访问日志,
        2,这个目录在我们项目重新部署时。可以方便删除日志文件,每次查看都是这次运行产生的日志
        如果要配置到这个目录,我们可以使用这样的配置,${webapp.root}/logs/...
        但是我们必须要在web.xml中存在Log4jConfigListener 监听器, 因为这个监听器会配置一个webapp.root
        的系统变量指向我们的项目根目录, 你也可以自己配置 一个webapp.root 名字可以自己随便给。
        也可以通过web.xml 配置这个名字(但是必须配合Log4jConfigListener) 。 配置代码如下:
  
  webAppRootKey
  wmfWebApp.root
  
  

  

  如何配置Tomcat的执行用户?
  

  在Linux系统下,特别是服务,不能使用ROOT用户来启动Tomcat,
  因为一旦使用ROOT用户来启动,Tomcat就会获得最高执行权限,
  这样的话如果******的虎就可以通过Tomcat来控制整个系统。
  所以,我们不能使用Root用户运行Tomcat,那么我们该如何配置Tomcat的执行用户呢?
  

  如何配置,请参考:http://os.运维网.com/art/201002/184813.htm
  

  

  

  

  如何使用Tomcat配置域名跳转?
  两种方式。
  1. 使用apache + tomcat 配置 域名跳转 参考:http://gaoxingf.blog.运维网.com/612518/193209
  2. 使用service.xml 中的Host + 域名跳转项目。
  新建一个项目,使用Filter ,需要在xml中配置。 Filter具体代码如下:
  

  import org.apache.commons.io.IOUtils;
  import org.apache.http.HttpResponse;
  import org.apache.http.client.entity.UrlEncodedFormEntity;
  import org.apache.http.client.methods.HttpPost;
  import org.apache.http.impl.client.DefaultHttpClient;
  import org.apache.http.message.BasicNameValuePair;
  

  import javax.servlet.*;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  import java.io.IOException;
  import java.util.ArrayList;
  import java.util.List;
  import java.util.Map;
  

  /**
  * Created with IntelliJ IDEA.
  * User: Ryan
  * Date: 14-2-11
  * Time: 上午11:33
  */
  public class ForwardFilter implements Filter {
  private String forwardTo;
  

  @Override
  public void init(FilterConfig config) throws ServletException {
  forwardTo = config.getInitParameter("to");
  if (null == forwardTo) {
  throw new RuntimeException("you must set forward to in init parameter.");
  }
  }
  

  @Override
  public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
  HttpServletRequest request = (HttpServletRequest) req;
  HttpServletResponse response = (HttpServletResponse) res;
  request.setCharacterEncoding("utf-8");
  // 获取请求路径
  String serverName = request.getServerName();
  int end = serverName.indexOf(forwardTo);
  String path = request.getRequestURI();
  String requestURI = "http://" + forwardTo + path;
  if (end == -1 || end == 0) {
  if ("get".equalsIgnoreCase(request.getMethod())) {
  String queryString = (request.getQueryString() == null ? "" : "?" + request.getQueryString());
  response.setStatus(301);
  response.setHeader("Location", requestURI + queryString);
  response.setHeader("Connection", "close");
  } else {
  List list = new ArrayList();
  Map pms = request.getParameterMap();
  if (pms != null && !pms.isEmpty()) {
  for (Object key : pms.keySet()) {
  Object val = pms.get(key);
  if (val instanceof String[]) {
  String[] values = (String[]) val;
  for (String value : values) {
  list.add(new BasicNameValuePair(key.toString(), value));
  }
  } else {
  list.add(new BasicNameValuePair(key.toString(), val.toString()));
  }
  }
  }
  try {
  // 实现将请求的参数封装到表单中,请求体重
  UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, "utf-8");
  

  // 使用Post方式提交数据
  HttpPost httpPost = new HttpPost(requestURI);
  httpPost.setEntity(entity);
  // 指定post请求
  DefaultHttpClient client = new DefaultHttpClient();
  HttpResponse httpResponse = client.execute(httpPost);
  print(response, IOUtils.toString(httpResponse.getEntity().getContent(), "utf-8"));
  } catch (Exception e) {
  e.printStackTrace();
  }
  }
  } else {
  chain.doFilter(request, response);
  }
  }
  

  

  //向请求端发送返回数据
  public void print(HttpServletResponse response, String content) {
  try {
  response.setContentType("text/html;charset=utf-8");
  response.setCharacterEncoding("utf-8");
  response.getWriter().print(content);
  response.getWriter().flush();
  response.getWriter().close();
  } catch (Exception e) {
  e.printStackTrace();
  }
  }
  

  @Override
  public void destroy() {
  }
  }
  

  

  

  如何配置启动tomcat时使用大内存
  CATALINA_OPTS="-Xms512m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m"
  将这句加入到 /etc/init.d/tomcat 文件的最开始。
  或者在启动tomcat时先设置这个变量
  

  如何配置Tomcat开机自启动,和启动Service?
  

  http://calvinliu.iteye.com/blog/1122974
  

  




页: [1]
查看完整版本: Center OS Tomcat7 服务器配置总结