您的位置:首页 > 运维架构 > Tomcat

构建百万级高性能Web网站-6 JDK+Nginx+Tomcat的安装

2015-01-02 22:11 405 查看
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) 下载地址:

http://tomcat.apache.org

apache-tomcat-7.0.42.tar.
abd4
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)登录到某机器,用浏览器检查

http://192.168.1.115:8080/

若看到著名的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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐