之前在反向代理DNN4时一直有问题(DNN4通过HEADER进行重定向,导致无法使用基于内部域名的反向代理)
在这儿找到一个办法:
http://www.r2integrated.com/dnn/Forum/tabid/170/aff/1/aft/9187/afv/topic/afpg/1/Default.aspx
在代理服务器上:
/etc/hosts中添加一个解析:192.168.50.238 heihe.westgis.ac.cn
在apahce中配置:
ServerName heihe.westgis.ac.cn
ProxyPass / http://heihe.westgis.ac.cn/
ProxyPassReverse / http://heihe.westgis.ac.cn/
...
在虚拟机上配置:
\windows\system32\drivers\etc\hosts中添加一行:192.168.50.238 heihe.westgis.ac.cn
重启对应服务,搞定!
ubuntu jaunty已经发布了,服务器现在的版本还是hardy,正好遇到了奇怪的问题,所以就想升级了。
sudo aptitude install update-manager-core
然后修改/etc/update-manager/release-upgrades文件内容,把
Prompt=lts
修改为:
Prompt=normal
然后开始升级:
sudo do-release-upgrade
注意:
1 在升级过程中有个提示,是否要继续操作,其中提示为[yN],但在中文locale下需要输入"是“,估计这是个翻译的BUG?
2 apache在升级后会产生问题,导致所有的网站都定向到默认网站了,需要修改/etc/apache2/ports.conf文件,把
NameVirtualHost *:80
给注释掉,然后在修改默认网站/etc/apache2/sites-enable/000-default,在第一行添加:
NameVirtualHost *
服务器上的mysql老是拖累apache,导致WWW服务不正常,前面修改过对应的mysql参数,但还是不行,因此,就决定设定让系统CRON下面这个脚本,注意脚本来自傅翮鹤 ,我仅仅修改了ubuntu下对应的参数而已。
#!/bin/bash
#check apache,mysql thread and auto reboot service
#Powered by 傅翮鹤 [www.fuhehe.com]
#Date 2007-06-15
#config
MaxApacheThread=100
MaxMysqlThread=50
HttpService=`ls /etc/init.d|grep apache2`
MysqlService=`ls /etc/init.d|grep mysql`
ApacheThread=`ps -A|grep apache2|wc -l`
MysqlThread=`ps -A|grep mysql|wc -l`
NeedReboot=0
if [ $ApacheThread -gt $MaxApacheThread ]
then
NeedReboot=1
fi
if [ $ApacheThread -eq 0 ]
then
NeedReboot=2
fi
if [ $MysqlThread -gt $MaxMysqlThread ]
then
NeedReboot=3
fi
if [ $MysqlThread -eq 0 ]
then
NeedReboot=4
fi
if [ $NeedReboot -eq 1 ]
then
echo "-----------------------------"
echo $(date +"%y-%m-%d %H:%M:%S")
echo "-----------------------------"
echo "Apache:$ApacheThread;Mysql:$MysqlThread."
echo "Apache is busy,reboot"
/etc/init.d/$HttpService stop
/etc/init.d/$HttpService start
elif [ $NeedReboot -eq 2 ]
then
echo "-----------------------------"
echo $(date +"%y-%m-%d %H:%M:%S")
echo "-----------------------------"
echo "Apache:$ApacheThread;Mysql:$MysqlThread."
echo "Apache is down,reboot"
/etc/init.d/$HttpService start
elif [ $NeedReboot -eq 3 ]
then
echo "-----------------------------"
echo $(date +"%y-%m-%d %H:%M:%S")
echo "-----------------------------"
echo "Apache:$ApacheThread;Mysql:$MysqlThread."
echo "Mysql is busy,reboot"
/etc/init.d/$MysqlService stop
/etc/init.d/$MysqlService start
elif [ $NeedReboot -eq 4 ]
then
echo "-----------------------------"
echo $(date +"%y-%m-%d %H:%M:%S")
echo "-----------------------------"
echo "Apache:$ApacheThread;Mysql:$MysqlThread."
echo "Mysql is down,reboot"
/etc/init.d/$MysqlService start
else
echo "-----------------------------"
echo $(date +"%y-%m-%d %H:%M:%S")
echo "-----------------------------"
echo "Apache:$ApacheThread;Mysql:$MysqlThread."
echo "System is normal"
fi
在UBUNTU FEISTY下如何添加APACHE2的SSL支持?
假设你的APACHE2已经可以运行了,现在只是需要添加SSL支持,首先安装:
sudo aptitude install openssl ssl-cert libapache-mod-ssl
注意,默认make-ssl-cert产生的ca只有一个月的有效期,因此我们需要延长这个时间,可以通过修改make-ssl-cert命令来实现:
sudo nano /usr/sbin/make-ssl-cert
假设需要把期限修改为10年:
就把"-keyout $output"修改为"-keyout $outpu -days 3650"。
然后来创建我们自己的签名,当然你也可以申请商业认证的签名。
sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
注意,在填hostname的时候,要选择你所使用的域名。
接着,启用ssl模块
sudo a2enmod ssl
添加443监听端口
echo "Listen 443" | sudo tee -a /etc/apache2/ports.conf
site文件的第一行修改为:
<VirtualHost *:443>
在site文件的最后一行前面添加:
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
重新启动服务:
sudo /etc/init.d/apache2 restart
若想强制所有的80端口访问都转送到443端口,可以这样设置:
sudo a2enmod rewrite
然后修改site文件,添加如下内容:
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
reference:
https://help.ubuntu.com/community/forum/server/apache2/SSL
http://www.linode.com/wiki/index.php/Apache2_SSL_in_Ubuntu
比如安装的phpMyadmin,必须限制只有某些IP可以访问,因此就可以这样设置:
首先要设置网站允许.htaccess,
AllowOverride All
然后定义目录下的.htaccess文件:
Order Deny,Allow
Deny from all
Allow from 210.77.68.215
前面我提到如何安装wordpress mu 1.0,这次在ubuntu edgy server版上安装就轻车熟路了。
首先要确保ubuntu server上安装了apache2, php, mysql。
然后要激活rewrite mod。
sudo a2enmod
创建westgis.ac.cn的vhost文件:
<VirtualHost *>
ServerAdmin wlx@mygis.org
ServerName westgis.ac.cn
ServerAlias westgis.ac.cn *.westgis.ac.cn
DocumentRoot /var/www/westgis.ac.cn
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/westgis.ac.cn/>
Options Indexes FollowSymLinks MultiViews
AllowOverride FileInfo Options
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/westgis.ac.cn-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/westgis.ac.cn-access.log combined
ServerSignature On
</VirtualHost>
激活这个vhost就可以了,注意AllowOverride部分和默认是不同的。
在DEBIAN下使用apache2的反向代理,连接到一台内部服务器上。
首先要激活proxy模块:
sudo a2enmod
选择proxy
sudo mkdir /var/www/proxy
sudo chown www-data:www-data /var/www/proxy
然后修改对应的sites:
<VirtualHost *>
ServerAdmin xxx@xxx.org
ServerName xxxxx
ProxyRequests Off
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
# reverse proxy setting
ProxyPass / http://192.168.100.8:8180/
ProxyPassReverse / http://192.168.100.8:8180/
# cache dir root
CacheRoot "/var/www/proxy"
# max cache storage
CacheSize 50000000
# hour: every 4 hour
CacheGcInterval 4
# max page expire time: hour
CacheMaxExpire 240
# Expire time = (now - last_modified) * CacheLastModifiedFactor
CacheLastModifiedFactor 0.1
# defalt expire tag: hour
CacheDefaultExpire 1
# force complete after precent of content retrived: 60-90%
CacheForceCompletion 80
ErrorLog /var/log/apache2/error-westdc.geodata.cn.log
CustomLog /var/log/apache2/access-westdc.geodata.cn.log combined
ServerSignature On
</VirtualHost>
参考: http://www.chedong.com/tech/cache.html
原文见http://blog.csdn.net/jwsh1984/archive/2005/02/09/284999.aspx
Tomcat是apache的一个子项目,也是一个开源项目,主要是用于J2EE web容器,由于是一个开源项目,在学习与开发测试中经常被用到(而目前商业最为经常用到的web服务器是BEA WebLogic)。在开源项目中,鼎鼎大名的apache基金会大家肯定有所了解,网站链接:http://www.apache.org/,而旗下的Jakarta Project 主要包括了Tomcat、Alexanda等Java项目,有兴趣者可看:http://jakarta.apache.org/。考虑到各位学习者的机器配置与学习成本问题,这里选了Tomcat作为我们学习与测试J2EE的环境
以下为一些基本配置:
一、先从网上下载tomcat,目前最新版本是5.57,下载地址是:http://apache.freelamp.com/jakarta/tomcat-5/v5.5.7/bin/jakarta-tomcat-5.5.7.zip,下载安装完后,在安装目录下有以下目录,主要介绍一下conf、common、webapps:
如果你现在等不急了,就想体验一下tomcat的魅力的话,把你的网页拷到webapps/ROOT目录下,然后再通过浏览器访问即可,默认如下格式:http://localhost:8080/你的网页
1)webapps文件夹主要用于web应用程序部署,比如你可以把你的应用程序包,如war文件拷到该目录下,容器会自动部署。
2)conf文件夹下主要是放置tomcat的服务器的相关配置文件
3)common文件夹主要是对容器全局变量的文件放置地方,如common/lib下就是放置一些需要全文配置的文件包。
二、j2ee的相关部署规范:
一般来说作为一个符合规范的web程序,会包括以下文件夹和文件:/WEB-INF/(主要是放置一些配置文件与不希望外部程序访问的隐私文件),在网络上是不允许访问该文件夹的,如当你输入以下http://localhost:8080/WEB-INF/的话就会出现错误。
在WEB-INF文件夹下有一个web.xml文件,这是对当前应用程序的相关设置,资源寻找等,/WEN-INF/文件夹下有个classes子文件夹,该文件夹是应用程序的根路径(等于是classpath的路径),/WEN-INF下还要有个lib文件夹,主要是放置需要引入的包,应用程序导入的包先从这里开始寻找,其次到容器的全局路径下$TOMCAT_HOME/common/lib下寻找。
以下是基本文件夹:
/tomcat
/common
/lib
/classes
/conf
/webapps
/ROOT
web.xml
/WEB-INF
/lib
/classes
/你部署的程序包
web.xml
/WEB-INF
/lib
/classes
三、容器的配置(server.xml)
到主目录/conf文件夹下server.xml文件是对web服务器的配置:
以下是一些常见的设置,http端口设置,找到以下:
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
把8080端口改为你喜欢使用的端口,如常见的80,以后你就可以利用该端口进行访问你的网站了:http://localhost:80 期中80是默认的,可以不写,其他的一下配置,可以参观相关的内容,入门就是这么简单。
web.xml为servlet的一些相关配置,可以参照一下规范。可以看我写的其他文章。
继续说一下server.xml文件的设置,
找到以下:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
....
</Host>
在他们之间可以添加一个<Context>元素,如:<Context path="/axis" reloadable="true" docBase="axis" workDir="webapps/axis/work"/>,其中属性path代表是网络访问的上下文路径,reloadable表示可以在运行时在classes与lib文件夹下自动加载类包,docBase属性表示你的应用程序的路径,在windows在如:docBase="E:\Sun\ axis",workDir表示是缓存文件的放置地点,可以方便跨平台移植时不用重编译。这样,你的应用程序就可以放到硬盘上的任意地方了。还有一个方法可以做到这点(推荐):编写一个xml文件,然后放到tomcat目录/conf/Catalina/<相应的网站>/目录下,如:现在我有个应用程序ACMEWeb,我编了一个文件ACMEWeb.xml内容如下:
<Context path="/ACMEWeb" reloadable="true" docBase="E:\eclipseproject\ACMEWeb" workDir="E:\eclipseproject\ACMEWeb\work" />
我把它放到了tomcat目录/conf/Cataline/localhost下,在浏览器打开http://localhost/ACMEWeb 就会转向我放在E:\eclipseproject\ACMEWeb下的程序了
四、关于taglib的修改:
(1)servlet-2.4之后,web.xml文件就有了一点修改。首先是声明命名空间:
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4"></web-app>
(2)其次是taglib,与传统的有所改变,对jsp的配置都被放置到<jsp-config>元素里了。可以使用Altova xmlspy打开web.xml文件,使用taglib的话,按照以下配置:
<jsp-config>
<taglib>
<taglib-uri>oscache</taglib-uri>
<taglib-location>/WEB-INF/oscache.tld</taglib-location>
</taglib>
</jsp-config>
安装:
sudo aptitude install tomcat5.5
若还要和apache2结合,还要安装:
sudo aptitude install libapache2-mod-jk
若没有配置JAVA环境变量,tomcat是无法启动的。
首先确认安装的JAVA位置:
sudo update-alternatives --config java
然后修改环境变量:
sudo nano /etc/profile
添加:
JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
JRE_HOME=/usr/lib/jvm/java-1.5.0-sun/jre
CLASSPATH=.:/usr/lib/jvm//java-1.5.0-sun/lib/tools.jar:/usr/lib/jvm/java-1.5.0-sun/lib/dt.jar
export JRE_HOME
export JAVA_HOME
export CLASSPATH
注意,我的jdk是安装在/usr/lib/jvm/java-1.5.0-sun这个目录下,这是ubuntu下的默认安装位置。
若安装了libapache2-mod-jk,则还需要进一步的配置:
sudo nano /etc/apache2/mods-available/jk.load
添加一行:
Include /etc/apache2/conf.d/jk.conf
sudo nano /etc/apache2/conf.d/jk.conf
其内容如下:
JkWorkersFile /etc/libapache2-mod-jk/workers.properties
# Where to put jk logs
JkLogFile /var/log/apache2/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# 将所有servlet 和jsp请求通过ajp13的协议送给Tomcat,让Tomcat来处理
JkMount /servlet/* ajp13_worker
JkMount /*.jsp ajp13_worker
JkShmFile /var/log/jk-runtime-status
<LocationMatch '.*WEB-INF.*'>
AllowOverride None
deny from all
</LocationMatch>
修改网站的配置,把index.jsp添加到默认首页。
重新启动tomcat/apache2。