服务器之家

专注于服务器技术!
当前位置:首页 > Web服务器 > Apache

Java程序实现Apache动态配置域名

发布时间:2014-01-16 来源:服务器之家

 1     配本机域名

C:/WINDOWS/system32/drivers/etc下hosts 

127.0.0.1       localhost
127.0.0.1       www.a.com
127.0.0.1       www.b.com
127.0.0.1       www.c.com
2.配apache

C:/Program Files/Apache Software Foundation/Apache2.2/conf/extra下httpd-vhosts.conf(注意去掉httpd.conf加载httpd-vhosts.conf的#)。httpd.conf中加上NameVirtualHost *:80 (这里是一个ip多域名配置)

#begin-www.a.com
<VirtualHost *:80>
ServerName www.a.com
ServerAlias domain.tld *.domain.tld
DocumentRoot D:/a
<Directory "D:/a/">
      AllowOverride None
       Options None
       Order allow,deny
       Allow from all
     </Directory>
</VirtualHost>
#end-www.a.com
#begin-www.b.com
<VirtualHost *:80>
ServerName www.b.com
DocumentRoot D:/b
<Directory "D:/b/">
      AllowOverride None
       Options None
       Order allow,deny
       Allow from all
     </Directory>
</VirtualHost>
#end-www.b.com

3.写重启apache的.bat文件(我放c:/1.bat)

@echo on
c:          
cd C:/Program Files/Apache Software Foundation/Apache2.2/bin
httpd -k restart
exit

4.动态添加域名的java类

import java.io.IOException;
import java.io.RandomAccessFile;

public class Example
{

 /**
  * @param args
  */
 public static void main(String[] args)
 {
  try
  {
   RandomAccessFile file = new RandomAccessFile("C://Program Files//Apache Software Foundation//Apache2.2//conf//extra//httpd-vhosts.conf", "rw");
   long filePoint = 0;
   long fileLength = file.length();
   String str = "#begin-www.c.com"
      + "/r/n"
      + "<VirtualHost *:80>"
      + "/r/n"
      + "ServerName www.c.com"
      + "/r/n"
      + "DocumentRoot  D:/c"
      + "/r/n"
      + "<Directory /"D:/c//">"
      + "/r/n"
      + "AllowOverride None"
      + "/r/n"
      + "Options None"
      + "/r/n"
      + "Order allow,deny"
      + "/r/n"
      + "Allow from all"
      + "/r/n"
      + "</Directory>"
      + "/r/n"
      + "</VirtualHost>"
      + "/r/n"
      + "#end-www.c.com";
   while (filePoint < fileLength)
   {
    String s = file.readLine();
    if (s.startsWith("<VirtualHost"))
    {
     System.out.println(filePoint + "----------------------" + s);
    }
    filePoint = file.getFilePointer();
   }
   file.writeBytes(str);
   file.close();
  } catch (Exception e)
  {
  }
  Runtime runtime = Runtime.getRuntime();
  try
  {
   runtime.exec("cmd /C start C://1.bat");
  } catch (IOException e)
  {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}
5.删除域名的java类(更改,先删除后增加)

package com.cn.apche;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.RandomAccessFile;

import org.apache.commons.digester.Digester;

public class Bo {

 public static void main(String[] args) {
      String filepath = "C://Program Files//Apache Software Foundation//Apache2.2//conf//extra//httpd-vhosts.conf";
      StringBuffer buf = new StringBuffer();
  try{  
RandomAccessFile   file=new   RandomAccessFile(filepath,"rw");  
        long   filePoint=0;  
        long   fileLength=file.length();  
        long [] point ;
        String str = "<VirtualHost *:80>"+"/r/n"+
   "ServerName www.d.com"+"/r/n"+
   "DocumentRoot  D:/d"+"/r/n"+
     "<Directory /"D:/d//">"+"/r/n"+
      "AllowOverride None"+"/r/n"+
       "Options None"+"/r/n"+
       "Order allow,deny"+"/r/n"+
       "Allow from all"+"/r/n"+
     "</Directory>"+"/r/n"+
"</VirtualHost>";
        point =  search("www.c.com",filepath);
if((point[1]-point[0])>0)
while(filePoint<fileLength)  
        {
         String   s=file.readLine();  
if(point[0]<=filePoint&&filePoint<=point[1])
         {
          s ="";
System.out.println(filePoint+"----------------------"+s);
         }
filePoint=file.getFilePointer(); 
buf.append(s+"/r/n");
}  
    //    file.writeBytes(str);
file.close();  
        }  
catch(Exception   e){}
        File file =    new File(filepath);
      if(file.exists())  file.delete();   
   try {
    RandomAccessFile  mm = new RandomAccessFile(filepath, "rw");
mm.writeBytes(buf.toString());
System.out.println("++++++++++++++++--------"+buf.toString());
     mm.close();
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
      }
 public static long[] search(String name,String path){
    long   start=0;
       long   end=0;
       long  result[]=new long[]{0,0};
  try{  
RandomAccessFile   file=new   RandomAccessFile(path,"rw");  
        long   filePoint=0;
        long   fileLength=file.length(); 
while(filePoint<fileLength)  
        {
         String   s=file.readLine();  
if(s.startsWith("#begin-"+name))
         {
          start =filePoint;
         // System.out.println(filePoint+"----------------------"+s);
         }
if(s.startsWith("#end-"+name))
         {
          end =file.getFilePointer();
//System.out.println(filePoint+"----------------------"+s);
         }
filePoint=file.getFilePointer();  
}  
        file.close(); 
        }  
catch(Exception   e){}  
        result[0] = start;
        result[1] = end;
  return result;
 }

}

热点推荐