用Rubyparsing/编辑Apache conf文件?

我需要编写一些脚本来更改Apache conf文件,即添加/更新VirtualHosts。 我打算在Ruby中这样做。 在写我自己的之前,是否有任何脚本/ ruby​​gems允许Rubyparsing/修改Apache conf文件,特别是<VirtualHost>指令?

我结束了写我自己的ruby脚本…不是很好,但如果有人需要它,这是它的胆量。 它正在寻找<VirtualHost></VirtualHost>标记的内容,以便它可以创build第二个<VirtualHost>ServerName这是我们的通配符SSL证书的子域…

 begin logMsg "Updating apache config file for user #{user} (#{domain_httpd_conf})" domain_httpd_conf_io = File.open(domain_httpd_conf,File::RDONLY) ip_addr = '' main_vhost_config = [] ssl_vhost_config = [" ServerName #{auto_ssl_domain}",' Include "conf/wildcard-ssl.conf"'] indent = 1 while line = domain_httpd_conf_io.gets line_indented = ' '*indent+line.strip if line =~ /^[[:space:]]*<VirtualHost ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)(:[0-9]+)[^>]*>/ ip = $1 elsif line =~ /^[[:space:]]*<\/VirtualHost>/ break 2 elsif line =~ /^[[:space:]]*(ServerAlias|ServerName).*/ main_vhost_config.push line_indented else if line =~ /^[[:space:]]*<[^\/]/ indent += 1 elsif line =~ /^[[:space:]]*<[\/]/ indent = [1, indent-1].max line_indented = ' '*indent + line.strip end main_vhost_config.push line_indented ssl_vhost_config.push line_indented end end main_vhost_config.push " Include #{extraconf_dir}/*.conf" domain_httpd_conf_io.close domain_httpd_conf_io = File.open(domain_httpd_conf,File::WRONLY||File::TRUNC) domain_httpd_conf_io.puts "<VirtualHost #{ip}:80 #{ip}:8080>" domain_httpd_conf_io.puts main_vhost_config domain_httpd_conf_io.puts "</VirtualHost>" domain_httpd_conf_io.puts domain_httpd_conf_io.puts "<VirtualHost #{ip}:443 #{ip}:8888>" domain_httpd_conf_io.puts ssl_vhost_config domain_httpd_conf_io.puts "</VirtualHost>" rescue SystemCallError => err logErr "ERROR: Unexpected error: "+err domain_httpd_conf_io.close end 

仍然有一些错误,但它主要是做我想要的东西。

没有线索,但有一件事可以帮助你是apache支持大容量虚拟主机: http : //httpd.apache.org/docs/2.2/vhosts/mass.html

如果你可以在你的虚拟主机之间保持一致,那么你可能不需要ruby来创build/pipe理/编辑它们。 公约的configuration是轨道的方式是正确的?