centos重启apache(apache怎么启动)
centos怎样编写tomcat宕机自动重新启动
一、设置tomcat定时启动
1,首先将tomcat注册为服务,先打开tomcat的bin目录下service.bat文件,修改下面的值,这是sevvice的注册名称和显示名称,一般可使用默认值。
set SERVICE_NAME=Tomcat7
set PR_DISPLAYNAME=Apache Tomcat
【然后修改jvm大小,搜索到--JvmMs 128--JvmMx 256进行修改,因为做成服务启动,启动的时候就不会用到 catalina.bat,也就不会读取里面的jvm设置了。】(可选,可以不设置)
然后运行cmd命令窗口,cd到tomcat的bin目录下,运行下面的命令
service.bat install运行成功过后,会提示服务已经安装成功。
2,制作重启脚本restart.bat,文件内容如下
net stop Tomcat7 net start Tomcat7
3,利用控制面板里面的“任务计划”设置第2步的脚本运行时间计划
4,如果想删除服务,也很简单,先把服务停掉,然后在cmd窗口运行下面的命令即可,后面那个Tomcat7是服务名。
sc delete Tomcat7
需要注意的是,需要先把服务停掉,才能一次删除成功,或者删除之后再停止服务,就会发现服务已经删除成功了。
二、监听tomcat
只要运行start.bat即可,相关配置在config.properties文件中,默认即可,如果服务名不对应就修改关闭和启动命令的服务名即可:net start【Tomcat7】括号中服务名,然后运行start.bat
下面是具体的监听代码:
首先是监听类TomcatMonitor.java:
[java] view plain copy
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Properties;
/**
*@describe:TomcatMonitor.java
*
*@date 2016-7-4
*@author liuweilong
*/
public class TomcatMonitor implements Runnable{
String start="";//系统命令启动
String stop="";//系统命令关闭
String testHttp="";//测试连接地址
int testIntervalTime=1;//测试连接间隔时间,单位为秒
int waitIntervalTime=2;//等待测试间隔时间,单位为秒
int testTotalCount=5;//测试连接总次数
Thread thread=null;
public TomcatMonitor(){
InputStream in= TomcatMonitor.class.getResourceAsStream("config.properties");
Properties p= new Properties();
try{
p.load(in);
stop=p.getProperty("stop");
start=p.getProperty("start");
testHttp=p.getProperty("testHttp");
testIntervalTime=Integer.parseInt(p.getProperty("testIntervalTime"));
waitIntervalTime=Integer.parseInt(p.getProperty("waitIntervalTime"));
testTotalCount=Integer.parseInt(p.getProperty("testTotalCount"));
} catch(Exception e){
e.printStackTrace();
}
System.out.println("*******************初始化成功!*******************");
thread=new Thread(this);
thread.start();
}
public void run(){
System.out.println("正在监控中...");
int testCount=0;
while(true){
testCount=0;
testCount++;
boolean isrun=test();
System.out.println("正在启动测试连接,尝试连接次数为:"+testCount+",结果为:"+(isrun==false?"失败.":"成功!"));
while(!isrun){
if(testCount>=testTotalCount)break;
try{
thread.sleep(testIntervalTime*1000);
} catch(InterruptedException e){
e.printStackTrace();
}
testCount++;
System.out.println("正在启动测试连接,尝试连接次数为:"+testCount+",结果为:"+(isrun==false?"失败.":"成功!"));
isrun=test();
}
if(!isrun){
try{
//关闭tomcat服务
Process proc= Runtime.getRuntime().exec(stop);
thread.sleep(5000);
//启动tomcat服务
System.out.println("测试连接失败,正在重启tomcat");
Process p=Runtime.getRuntime().exec(start);
System.out.println("重启tomcat成功");
}catch(Exception e){
e.printStackTrace();
System.out.println("重启tomcat异常,请查看先关错误信息。。。。。");
}
}
try{
thread.sleep(waitIntervalTime*1000);
} catch(InterruptedException e){
e.printStackTrace();
}
isrun=test();
}
}
public boolean test(){
URL url=null;
try{
url= new URL(testHttp);
} catch(MalformedURLException e){
e.printStackTrace();
}
try{
URLConnection urlConn=url.openConnection();
urlConn.setReadTimeout(15000);
BufferedReader reader= new BufferedReader(new InputStreamReader( urlConn.getInputStream()));//实例化输入流,并获取网页代码
String s;
while((s= reader.readLine())!= null){
return true;
}
} catch(Exception e){
return false;
}
return false;
}
public static void main(String[] args) throws Exception{
TomcatMonitor tm=new TomcatMonitor();
}
}
然后是对应的配置文件config.properties:
[plain] view plain copy
#系统命令启动
start=net start Tomcat7
#关闭
stop= net stop Tomcat7
#测试连接总次数
testTotalCount=3
#连接失败时,再次检测时间间隔,单位为秒
testIntervalTime=3
#连接超时时间,即多少秒tomcat没响应视为宕机,单位为秒
connectionTimeout=15
#tomcat启动时间,防止在tomcat尚未启动完成的时候,程序又去检验tomcat状态,造成尚未启动完成又重新启动,单位为秒
tomcatStartTime=600
#测试连接地址
testHttp=
#正常情况下,每次检测间隔时间,单位为秒
waitIntervalTime=30
最后是启动的start.bat:
[plain] view plain copy
java-cp. TomcatMonitor
如何开启Apache Rewrite功能
一、Ubuntu默认未开启Rewrite支持
apche模块加载工作已分散到不同的配置文件,这样看起来似乎更为合理,管理起来也非常方便。下面看一下如何开启Rewrite模块,当用户需使用301重定向、伪静态等Rewrite功能时,一般都习惯于使用.htaccess文件配置,比如下面的301重定向:
Options+FollowSymLinks
RewriteEngine on
RewriteCond%{HTTP_HOST} ^abc.com [NC]
RewriteRule ^(.*)$ $1 [L,R=301]
配置完成后,使用/etc/init.d/apache2 reload命令加载生效,这时,如果未开启Rewrite功能,则会出现500错误(浏览器显示),查看LOG错误如下:
[Sun Jan 30 02:41:29 2011] [alert] [client 12.34.56.78]/srv/www/abc.com/public_html/.htaccess: Invalid command'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
说明需要开启Rewrite模块加载,加载开启过程如下。
二、手动开启加载Rewrite
1、使用终端工具连接服务器,输入管理员帐号和密码
2、执行加载Rewrite模块:
a2enmod rewrite
执行后,会提示OK和重启Apache命令(/etc/init.d/apache2 restart)。
3、参照上文的目录配置,做个启动链接(下次启动自动加载):
ln-s/etc/apache2/mods-available/rewrite.load/etc/apache2/mods-enabled/rewrite.load
执行后会在mods-available目录下创建一个快捷方式,连接到mods-enabled下rewrite模块。
4、重启apache:
/etc/init.d/apache2 restart
注意:如果使用的是apache默认网站目录(一般是类似于/var/www文件夹),没有创建单独的自己配置文件,可能还需要修改/etc/apache2/sites-available/default这个文件,把其中的AllowOverride None修改为AllowOverride All,因为default配置里还默认关闭.htaccess重载,打开后.htaccess才会生效。
三、如何判断Rewrite已经开启
1、检查确认Rewrite模块加载
本文测试是在CentOS 6系统上,路径为:/etc/httpd/conf/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so
如果前面有注释就去掉即可,重启APACHE。
2、检查确认目录Rewrite打开
Rewrite库加载不代表我们的.htaccess文件就能生效,还需要专门打开指定目录的AllowOveride开关,脚本如下:
<Directory/var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
其中AllowOverride只能定义在Directory这个Section里,具体用法可参考apache官方说明(下文链接),以上脚本一般放在httpd.conf或/etc/httpd/conf.d/vhost.conf下面,尽量更网站配置的:
<VirtualHost...>....</VirtualHost>
定义在一起,方便维护。
3、测试Rewrite功能
以下为.htaccess测试实例:
# BEGIN
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase/
RewriteRule.*$
</IfModule>
#END
测试方法,拷贝保存为.htaccess,上传到网站根目录下,访问网站任何路径页面,均会跳转到本博客,说明Rewrite已生效。
如何开启apache的重写功能
开启apache的重写功能步骤如下:
1、关于rewrite模块的调用:
Apache 2.x中URL重写,是通过mod_rewrite.so来实现的,所以您要查看您的Apache是否已经被编译进去这个模块了,并且在Apache的配置文件httpd.conf中已经调用了这个模块。在大多数主流发行版中,Apache 2.x是把rewrite模块已经编入进去了。比如我用的是Slackware。Apache 2.x的配置文件,放在/etc/httpd目录下。
在 httpd.conf中,我们会发现类似如下的一行,是有关rewrite模块的,模块名是 mod_rewrite.so。
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so或 LoadModule rewrite_module lib/apache2/modules/mod_rewrite.so如果前面有#号,您要去掉。对于大多数发行版来说,Apache 2的模块一般是位于如下的两个位置 usr/lib/apache2/modules或/usr/lib/httpd/modules如果在httpd中打开调用rewrite_module的设置,查看一下是不是能调用了,要通过 httpd-M的参数来查看;#/usr/sbin/httpd-M
如果发现有如下一行,说明模块已经能被调用了
rewrite_module(shared)
2、设置DocumentRoot的Directory:
在Apache 2.x中,我们会看到 DocumentRoot设置的一行。这行就是存放网页程序的地方。比如LinuxSir.Org存放在/opt/www目录中。那么我们就要设置 DocumentRoot为如下的。
DocumentRoot"/opt/www"然后我们再还要对 DocumentRoot做针对性的行为设置。在一般的情况下,httpd.conf会给一个默认的。如果你要改 DocumentRoot的路径,同时也要改针对DocumentRoot的Directory的设置,也就是
<Directory"DocumentRoot所设置的路径">
比如我们把DocumentRoot的路径改为了"/opt/www",那我们也要把Directory做针对性的行为设置也要改成这个路径。
<Directory"/opt/www">
Options FollowSymLinks
#AllowOverride None注:把这行前面加#号,然后加下面的一行,也就是 AllowOverride ALL
AllowOverride ALL
Order allow,deny
Allow from all
</Directory>我们把AllowOverride的参数设置为ALL,表示整台服务器上的,都支持URL规则重写。Apache服务器要读每个网站根目录下的.htaccess文件。如果没有这个文件,或者这个文档没有定义任何关于URL重写的规则,则不会有任何效果。在一般的情况下,成熟的Web服务器应用套件,都支持URL重写的,比如drupal和joomla。当我们用这些程序时,会发现在安装包中有.htaccess中有这个文件。我们把Apache配置好后,只是需要在这些程序的后台打开此功能就行了。
3、重启httpd服务器:
在一般情况下,在各个发行版中,都有httpd服务器启动脚本,比如
#/etc/rc.d/rc.httpd restart注:Slackware Linux
#/etc/init.d/apache2 restart注:ubuntu、Debian等;
#/etc/init.d/httpd start注:Fedora、Redhat、CentOS
以上方法就可以了