6.1 安装JDK6
从网上下载JDK6的linux版本,比如:jdk-6u45-linux-x64.bin;
1) 使用FileZilla上传jdk-6u45-linux-x64.bin到服务器端
2) 拷贝到打算安装的目录,比如/usr/myapp,并执行
#chmod a+x jdk-6u45-linux-x64.bin
#./jdk-6u45-linux-x64.bin
# pwd
/usr/myapp
# ls
jdk1.6.0_45
3) 修改profile以支持安装的JDK版本(对所有用户起作用)
在export PATH前增加如下语句
#vi /etc/profile
JAVA_HOME=/opt/myapp/jdk1.6.0_45
JRE_HOME=/opt/myapp/jdk1.6.0_45/jre
PATH=$JAVA_HOME/bin:$PATH
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
4) 验证
退出再重新登录,或者执行:
#source /etc/profile
#java -version
若显示的是刚刚安装的版本,比如1.6.0_45,则安装和路径配置成功。
6.2 编译安装Nginx-1.6
Nginx下载地址(我下载的是nginx-1.6.0.tar.gz):
http://nginx.org/en/download.html
http://nginx.org/en/linux_packages.html#stable
Nginx需要PCRE lib
PCRE - Perl Compatible Regular Expressions
PCRE下载地址,比如pcre-8.34.tar.gz:
http://sourceforge.net/projects/pcre/files/pcre/
http://jaist.dl.sourceforge.net/project/pcre/pcre
#创建nginx运行账户www并加入到www组,不允许www用户直接登录系统
该用户将在配置nginx时使用(见后),该用户/用户组,tomcat也将使用。
# cat /etc/passwd
看是否已存在,否则创建。
# groupadd www
# useradd -g www -s /sbin/nologin www
安装配置编译环境(编译需要的库文件)
#yum -y install make gcc gcc-c++ gcc-g77 apr* autoconf automake zlib zlib-devel openssl openssl-devel pcre-devel
安装PCRE
# mkdir -p /usr/myapp/pcre
cp pcre-8.34.tar.gz到/opt
#tar –xvf pcre-8.34.tar.gz
#cd pcre-8.34
# ./configure --prefix=/usr/myapp/pcre
# make && make install
编译安装Nginx
#mkdir -p /usr/myapp/nginx-1.6
为支持PHP等fcgi,
#mkdir -p /var/tmp/nginx
#chmod -R 777 /var/tmp/nginx
将nginx-1.6.0.tar.gz上传到/opt目录下,
进入/opt目录,
#tar –xvf nginx-1.6.0.tar.gz
#cd nginx-1.6.0
#./configure --prefix=/usr/myapp/nginx-1.6 --with-pcre=/opt/pcre-8.34 --with-openssl=/usr/lib64/openssl/ --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fcgi --with-http_stub_status_module --user=www --group=www
注意:--with-pcre=/opt/pcre-8.34指向的是源码包解压的路径,而不是安装的路径,否则会报错。
# make && make install
查看nginx-1.6是否被安装到/usr/myapp/nginx-1.6下,
#ls -l /usr/myapp/nginx-1.6
编写nginx自启动脚本
#vi /etc/init.d/nginx
将以下内容拷贝过去。
#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# it is v.0.0.2 version.
# chkconfig: - 85 15
# description: Nginx is a high-performance web and proxy server.
# It has a lot of features, but it is not for everyone.
# processname: nginx
# pidfile: /var/run/nginx.pid
# config: /usr/myapp/nginx/conf/nginx.conf
nginxd=/usr/myapp/nginx-1.6/sbin/nginx
nginx_config=/usr/myapp/nginx-1.6/conf/nginx.conf
nginx_pid=/usr/myapp/nginx1.6/logs/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
echo "nginx already running..."
exit 1
fi
echo -n "Starting $prog: "
daemon $nginxd -c ${nginx_config}
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
return $RETVAL
}
# Stop nginx daemons functions.
stop() {
echo -n "Stopping $prog: "
killproc $nginxd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx1.6/logs/nginx.pid
}
reload() {
echo -n "Reloading $prog: "
#kill -HUP `cat ${nginx_pid}`
killproc $nginxd -HUP
RETVAL=$?
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
status)
status $prog
RETVAL=$?
;;
*)
echo "Usage: $prog {start|stop|restart|reload|status|help}"
exit 1
esac
exit $RETVAL
#chmod a+x /etc/init.d/nginx
#chkconfig –add nginx
#chkconfig nginx on
# chkconfig |grep nginx
nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off
启动nginx服务
#service nginx start
验证nginx
Nginx服务器的缺省端口是80,可以查看/usr/myapp/nginx-1.6/conf/nginx.conf
修改防火墙iptables打开80端口,并保存
# iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# /etc/rc.d/init.d/iptables save
从浏览器打开,比如http://192.168.1.115,若出现nginx的welcome页面,说明nginx已安装并启动成功;下面就可以根据我们应用的需要来配置nginx了。
6.3 安装tomcat
我们通常使用nginx做反向代理服务器,tomcat做web服务器,所以,我们也需要在应用服务器上安装tomcat。这儿的例子是将nginx和tomcat安装在一台机器上,nginx将作为反向代理服务器,多个tomcat实例作为web应用服务器。
Tomcat的更为详细的安装,可参考:
http://blog.sina.com.cn/s/blog_6a7cdcd40101b1km.html
1) 下载地址:
apache-tomcat-7.0.42.tar.gz
注意:
目前不要使用7.0.52,存在一个bug,见org.apache.catalina.LifecycleExceptionCaused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [] due to a StackOverflowError.
2) FTP该文件到服务器, /usr/myapp
3) 解压该文件
#tar –xvf apache-tomcat-7.0.42.tar.gz
为了更好地管理多个tomcat实例,更改tomcat安装目录名称
#mv /usr/myapp/apache-tomcat-7.0.42 /usr/myapp/tomcat7_1
4) 在tomcat的安装目录的bin目录下,生成一个setenv.sh文件, 配置tomcat应用启动需要的环境参数
比如:#more /usr/myapp/tomcat7_1/bin/setenv.sh
#!/bin/bash
export CATALINA_BASE=/usr/myapp/tomcat7_1
export CATALINA_HOME=$CATALINA_BASE
export CATALINA_TMPDIR=$CATALINA_HOME/temp
export JAVA_HOME=/usr/myapp/jdk1.6.0_45
export JRE_HOME=$JAVA_HOME/jre
export CATALINA_PID=$CATALINA_HOME/tomcat.pid
export JAVA_OPTS=" -server -Djava.net.preferIPv4Stack=true –Xmx4096m –Xms4096m -Xmn512m -XX:PermSize=265M -XX:MaxPermSize=265M "
JAVA_OPTS="$JAVA_OPTS -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 "
JAVA_OPTS="$JAVA_OPTS -XX:GCTimeRatio=19 -Xnoclassgc -XX:+DisableExplicitGC "
JAVA_OPTS="$JAVA_OPTS -XX:+UseParNewGC -XX:+UseConcMarkSweepGC "
JAVA_OPTS="$JAVA_OPTS -XX:ParallelGCThreads=12 "
JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSCompactAtFullCollection "
JAVA_OPTS="$JAVA_OPTS -XX:CMSFullGCsBeforeCompaction=0 "
JAVA_OPTS="$JAVA_OPTS -XX:MaxGCPauseMillis=100 -XX:+UseAdaptiveSizePolicy "
JAVA_OPTS="$JAVA_OPTS -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled "
JAVA_OPTS="$JAVA_OPTS -XX:CMSInitiatingOccupancyFraction=70 "
JAVA_OPTS="$JAVA_OPTS -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram "
export JSVC_OPTS="-jvm server"
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib
export LD_LIBRARY_PATH
设定setenv.sh的可执行权限
#chmod a+x /usr/myapp/setenv.sh
5) 启动tomcat
#/usr/myapp/tomcat7_1/bin/startup.sh
6) 设置防火墙,打开8080端口
Tomcat安装完成后,缺省端口为8080
# iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
# /etc/init.d/iptables save
6)登录到某机器,用浏览器检查
若看到著名的tomcat系统界面,则说明安装启动成功。
关闭/停止tomcat
#/usr/myapp/tomcat7_1/bin/shutdown.sh
6.4 配置自启动tomcat服务
编写tomcat服务启动脚本,并配置为自启动,即开机重启机器时,也自动启动tomcat服务。
类似编写nginx服务脚本,在/etc/init.d目录下,建立一个tomcat7_s1脚本,内容如下:
#!/bin/bash
#tomcat7_1 Startup script for the Tomcat Server
#chkconfig: - 80 00
#description: Tomcat auto start
#processname: tomcat7_s1
CATALINA_HOME=/usr/myapp/tomcat7_1
TOMCATSVCD=${CATALINA_HOME}/bin/catalina.sh
RETVAL=0
prog="tomcat7_s1"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $TOMCATSVCD ] || exit 0
# Start tomcatsvc daemons functions.
start() {
echo -n "Starting $prog: "
daemon $TOMCATSVCD start
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/tomcatsvc
return $RETVAL
}
# Stop tomcat daemons functions.
stop() {
echo -n "Stopping $prog: "
daemon $TOMCATSVCD stop
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/tomcatsvc ${CATALINA_HOME}/tomcat.pid
}
reload() {
echo -n "Reloading $prog: "
#kill -HUP `cat ${nginx_pid}`
#killproc $nginxd -HUP
RETVAL=$?
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
status)
status $prog
RETVAL=$?
;;
*)
echo "Usage: $prog {start|stop|restart|status|help}"
exit 1
esac
exit $RETVAL
设定脚本的执行权限并设定自启动服务
#chmod a+x /etc/init.d/tomcat7_s1
#chkconfig --add tomcat7_s1
#chkconfig tomcat7_s1 on
启动/停止tomcat
#service tomcat7_s1 start
#service tomcat7_s1 stop