1、簡介javascript
2、環境介紹css
3、後端服務器安裝配置html
4、安裝論壇前端
5、安裝配置前端Nginx服務器java
6、驗證服務mysql
1、Tomcat簡介linux
Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其餘一些公司及我的共同開發而成。因爲有了Sun 的參與和支持,最新的Servlet 和JSP 規範老是能在Tomcat 中獲得體現,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 規範。由於Tomcat 技術先進、性能穩定,並且免費,於是深受Java 愛好者的喜好並獲得了部分軟件開發商的承認,成爲目前比較流行的Web 應用服務器。目前最新版本是8.0nginx
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬於輕量級應用服務器,在中小型系統和併發訪問用戶不是不少的場合下被廣泛使用,是開發和調試JSP 程序的首選。對於一個初學者來講,能夠這樣認爲,當在一臺機器上配置好Apache 服務器,可利用它響應對HTML 頁面的訪問請求。實際上Tomcat 部分是Apache 服務器的擴展,但它是獨立運行的,因此當你運行tomcat 時,它實際上做爲一個與Apache 獨立的進程單獨運行的c++
當配置正確時,Apache 爲HTML頁面服務,而Tomcat 實際上運行JSP 頁面和Servlet。另外,Tomcat和IIS、Apache等Web服務器同樣,具備處理HTML頁面的功能,另外它仍是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。不過,Tomcat處理靜態HTML的能力不如Apache服務器。目前Tomcat最新版本爲8.0.0-RC3 (alpha) Released程序員
Tomcat 很受廣大程序員的喜歡,由於它運行時佔用的系統資源小,擴展性好,支持負載平衡與郵件服務等開發應用系統經常使用的功能;並且它還在不斷的改進和完善中,任何一個感興趣的程序員均可以更改它或在其中加入新的功能
Tomcat最初是由Sun的軟件構架師詹姆斯·鄧肯·戴維森開發的。後來他幫助將其變爲開源項目,並由Sun貢獻給Apache軟件基金會。因爲大部分開源項目O'Reilly都會出一本相關的書,而且將其封面設計成某個動物的素描,所以他但願將此項目以一個動物的名字命名。由於他但願這種動物可以本身照顧本身,最終,他將其命名爲Tomcat(英語公貓或其餘雄性貓科動物)。而O'Reilly出版的介紹Tomcat的書籍(ISBN 0-596-00318-8)[1]的封面也被設計成了一個公貓的形象。而Tomcat的Logo兼吉祥物也被設計成了一隻公貓
2、環境介紹
系統版本: CentOS 6.4_x86_64
Nginx版本: nginx-1.4.2 點此下載
JDK版本: jdk-7u40-linux-x64 點此下載
Tomcat版本:apache-tomcat-7.0.42 點此下載
論壇版本: JspRun!_6.0.0_GBK 點此下載
環境介紹:
當用戶訪問時"www.allen.com"網站時,經過Nginx服務器代理,將請求的靜態內容(如:.html|.jpg等)讓web服務器來響應,而請求的動態內容都讓java服務器來響應;這樣就實現了動、靜的分離
3、後端服務器的安裝與配置
一、安裝java服務器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
######一、安裝JDK並設置環境變量
[root@java ~]
# rpm -ihv jdk-7u40-linux-x64.rpm
[root@java ~]
# vim /etc/profile.d/java.sh
export
JAVA_HOME=
/usr/java/latest
export
PATH=$JAVA_HOME
/bin
:$PATH
[root@java ~]
# . /etc/profile.d/java.sh
######驗證JDK是否安裝成功
[root@java ~]
# java -version
java version
"1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)
========================================================================
######二、安裝Tomcat
[root@java ~]
# tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local/
[root@java ~]
# cd /usr/local/
[root@java
local
]
# ln -s apache-tomcat-7.0.42 tomcat
[root@java
local
]
# vim /etc/profile.d/tomcat.sh
export
CATALINA_HOME=
/usr/local/tomcat
export
PATH=$CATALINA_HOME
/bin
:$PATH
[root@java
local
]
# . /etc/profile.d/tomcat.sh
######驗證Tomcat是否安裝成功
[root@java
local
]
# catalina.sh version
Using CATALINA_BASE:
/usr/local/tomcat
Using CATALINA_HOME:
/usr/local/tomcat
Using CATALINA_TMPDIR:
/usr/local/tomcat/temp
Using JRE_HOME:
/usr/java/latest
Using CLASSPATH:
/usr/local/tomcat/bin/bootstrap
.jar:
/usr/local/tomcat/bin/tomcat-juli
.jar
Server version: Apache Tomcat
/7
.0.42
Server built: Jul 2 2013 08:57:41
Server number: 7.0.42.0
OS Name: Linux
OS Version: 2.6.32-358.el6.x86_64
Architecture: amd64
JVM Version: 1.7.0_40-b43
JVM Vendor: Oracle Corporation
----------------------------------------------------------------------
[root@java ~]
# catalina.sh start
|
二、訪問測試Java服務器
1
2
3
|
######查看監聽端口,Tomcat默認監聽8080端口
[root@java ~]
# ss -tanlp | grep 8080
LISTEN 0 100 :::8080 :::*
users
:((
"java"
,6163,40))
|
三、安裝web服務器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
######安裝nginx依賴環境
[root@web ~]
# yum -y install pcre-devel gcc gcc-c++ openssl-devel
[root@web ~]
# useradd -r nginx
[root@web ~]
# tar xf nginx-1.4.2.tar.gz
[root@web ~]
# cd nginx-1.4.2
[root@web nginx-1.4.2]
# ./configure \
--prefix=
/usr/local/nginx
\
--sbin-path=
/usr/local/nginx/sbin/nginx
\
--conf-path=
/etc/nginx/nginx
.conf \
--error-log-path=
/var/log/nginx/error
.log \
--http-log-path=
/var/log/nginx/access
.log \
--pid-path=
/var/run/nginx/nginx
.pid \
--lock-path=
/var/lock/nginx
.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_stub_status_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/
\
--http-uwsgi-temp-path=
/var/tmp/nginx/uwsgi
\
--http-scgi-temp-path=
/var/tmp/nginx/scgi
\
--with-pcre
[root@web nginx-1.4.2]
# make && make install
======================================================================
######爲Nginx提供Sysv服務腳本
[root@web ~]
# vim /etc/init.d/nginx
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
.
/etc/rc
.d
/init
.d
/functions
# Source networking configuration.
.
/etc/sysconfig/network
# Check that networking is up.
[
"$NETWORKING"
=
"no"
] &&
exit
0
nginx=
"/usr/local/nginx/sbin/nginx"
prog=$(
basename
$nginx)
NGINX_CONF_FILE=
"/etc/nginx/nginx.conf"
[ -f
/etc/sysconfig/nginx
] && .
/etc/sysconfig/nginx
lockfile=
/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`nginx -V 2>&1 |
grep
"configure arguments:"
|
sed
's/[^*]*--user=\([^ ]*\).*/\1/g'
-`
options=`$nginx -V 2>&1 |
grep
'configure arguments:'
`
for
opt
in
$options;
do
if
[ `
echo
$opt |
grep
'.*-temp-path'
` ];
then
value=`
echo
$opt |
cut
-d
"="
-f 2`
if
[ ! -d
"$value"
];
then
# echo "creating" $value
mkdir
-p $value &&
chown
-R $user $value
fi
fi
done
}
start() {
[ -x $nginx ] ||
exit
5
[ -f $NGINX_CONF_FILE ] ||
exit
6
make_dirs
echo
-n $
"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -
eq
0 ] &&
touch
$lockfile
return
$retval
}
stop() {
echo
-n $
"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -
eq
0 ] &&
rm
-f $lockfile
return
$retval
}
restart() {
configtest ||
return
$?
stop
sleep
1
start
}
reload() {
configtest ||
return
$?
echo
-n $
"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >
/dev/null
2>&1
}
case
"$1"
in
start)
rh_status_q &&
exit
0
$1
;;
stop)
rh_status_q ||
exit
0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q ||
exit
7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q ||
exit
0
;;
*)
echo
$
"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit
2
esac
----------------------------------------------------------------------
[root@web ~]
# chmod +x /etc/init.d/nginx
[root@web ~]
# chkconfig --add nginx
[root@web ~]
# service nginx start
[root@web ~]
# chkconfig nginx on
|
四、訪問測試web服務器
1
2
|
[root@web nginx-1.4.2]
# ss -tanlp | grep 80
LISTEN 0 128 *:80 *:*
users
:((
"nginx"
,30503,6),(
"nginx"
,30504,6))
|
五、安裝Mysql服務器
1
2
3
4
5
6
7
|
root@mysql ~]
# yum -y install mysql-server
root@mysql ~]
# service mysqld start
[root@mysql ~]
# mysql
mysql> create database bbs;
mysql> grant all on bbs.* to
'bbsuser'
@
'172.16.%.%'
identified by
'bbspass'
;
mysql> flush privileges;
######註釋:建立一個數據庫並受權用戶,方便後面安裝論壇使用到
|
六、測試受權用戶是否能使用"172.16.0.0"網段的主機鏈接,遠程主機請肯定安裝了mysql客戶端
1
2
3
4
5
6
7
8
9
|
[root@java ~]
# mysql -ubbsuser -pbbspass -h 172.16.14.4 -e 'show databases';
+--------------------+
| Database |
+--------------------+
| information_schema |
| bbs |
|
test
|
+--------------------+
######能夠遠程查詢到數聽說明已鏈接成功
|
4、安裝論壇
一、在java服務器上安裝論壇程序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
######建立網站存放目錄
[root@java ~]
# mkdir /web
[root@java ~]
# unzip JspRun\!_6.0.0_GBK.zip
[root@java ~]
# mv upload /web/bbs
------------------------------------------------------------------------
######修改Tomcat的默認訪問端口8080爲80
<Connector port=
"80"
protocol=
"HTTP/1.1"
connectionTimeout=
"20000"
redirectPort=
"8443"
/>
######修改tomcat主配置文件添加虛擬主機
<Engine name=
"Catalina"
defaultHost=
"www.allen.com"
>
<Host name=
"www.allen.com"
appBase=
"/web/bbs"
unpackWARs=
"true"
autoDeploy=
"true"
>
<Valve className=
"org.apache.catalina.valves.AccessLogValve"
directory=
"logs"
prefix=
"bbs_access_log."
suffix=
".txt"
pattern=
"%h %l %u %t "%r" %s %b"
/>
<Context path=
""
docBase=
"/web/bbs"
/>
<
/Host
>
註釋:將
"<Host>"
標記的段添加到
"Engine"
中,而
"Engine"
中的默認主機改成定義的主機名稱;
name:主機名稱
defaultHost:默認訪問的主機名稱
appBase:網站目錄
unpackWARS:是否自動解壓
"war"
格式的包
autoDeploy:是否自動部署應用程序
className:類名稱
prefix:日誌名稱
suffix:日誌後綴名
pattern:日誌格式
"Context"
標記中path:虛擬目錄名稱,docBase:虛擬目錄路徑
======================================================================
######修改論壇配置文件,指定數據庫主機,數據用戶名密碼及數據庫名稱
[root@java conf]
# cd /web/bbs/
[root@java bbs]
# vim config.properties
dbhost = 172.16.14.4
dbport=3306
dbuser = bbsuser
dbpw = bbspass
dbname = bbs
======================================================================
######啓動Tomcat服務並查看端口
[root@java ~]
# catalina.sh start
Using CATALINA_BASE:
/usr/local/tomcat
Using CATALINA_HOME:
/usr/local/tomcat
Using CATALINA_TMPDIR:
/usr/local/tomcat/temp
Using JRE_HOME:
/usr/java/latest
Using CLASSPATH:
/usr/local/tomcat/bin/bootstrap
.jar:
/usr/local/tomcat/bin/tomcat-juli
.jar
[root@java ~]
# ss -tanlp | grep 80
LISTEN 0 100 :::80 :::*
users
:((
"java"
,7493,40))
LISTEN 0 1 ::ffff:127.0.0.1:8005 :::*
users
:((
"java"
,7493,53))
LISTEN 0 100 :::8009 :::*
users
:((
"java"
,7493,41))
|
二、安裝論壇程序
三、點擊下一步-->我贊成-->下一步,進入數據庫配置頁面
四、點下一步-->(填寫管理員密碼)下一步-->進入建立數據表階段-->而後點-->進入首頁
五、將論壇程序拷貝到web服務器上面一份,由於WEB服務器要解析靜態文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
######建立網站存放目錄
[root@web ~]
# mkdir /web
[root@web ~]
# scp -r 172.16.14.3:/web/bbs /web/
######修改Nginx主配置文件
[root@web ~]
# vim /etc/nginx/nginx.conf
log_format main
'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
;
access_log logs
/host
.access.log main;
location / {
root
/web/bbs
;
index index.html index.htm;
######註釋:開啓訪問日誌功能;修改虛擬主機指定網站網站目錄爲"/web/bbs"
----------------------------------------------------------------------
######建立一個靜態測試頁方便後面測試
[root@web ~]
# echo '<h1>WEB:172.16.14.2</h1>' > /web/bbs/index.html
[root@web ~]
# mkdir /usr/local/nginx/logs #建立日誌存放目錄
[root@web ~]
# service nginx restart
|
5、安裝配置Nginx前端服務器
一、安裝方法與第三部分的nginx安裝方法相同,這裏就再也不介紹如何安裝
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
[root@nginx ~]
# vim /etc/nginx/nginx.conf
user nginx nginx;
worker_processes 2;
worker_rlimit_nofile 51200;
#error_log logs/error.log;
#pid logs/nginx.pid;
events {
use epoll;
worker_connections 51200;
}
http {
include mime.types;
default_type application
/octet-stream
;
log_format main
'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
;
access_log logs
/access
.log main;
client_max_body_size 20m;
client_header_buffer_size 16k;
large_client_header_buffers 4 16k;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip
on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_proxied any;
gzip_http_version 1.1;
gzip_comp_level 3;
gzip_types text
/plain
application
/x-javascript
text
/css
application
/xml
;
gzip_vary on;
proxy_temp_path
/tmp/proxy_temp
;
proxy_cache_path
/tmp/proxy_cache
levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=3g;
proxy_connect_timeout 50;
proxy_read_timeout 600;
proxy_send_timeout 600;
proxy_buffer_size 128k;
proxy_buffers 16 256k;
proxy_busy_buffers_size 512k;
proxy_temp_file_write_size 1024m;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404 http_502 http_504;
server {
listen 80;
server_name www.allen.com;
access_log logs
/host
.access.log main;
location / {
proxy_pass http:
//172
.16.14.3;
}
location ~* \.(|html|htm|jpg|jpeg|png|gif|bmp|swf|ico)$ {
proxy_pass http:
//172
.16.14.2;
}
location ~* \.(jsp|css|
do
)$ {
proxy_pass http:
//172
.16.14.3;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504
/50x
.html;
location =
/50x
.html {
root html;
}
}
}
======================================================================
[root@nginx ~]
# service nginx start
|
二、修改Nginx主配置文件
6、驗證服務
一、在客戶端使用"www.allen.com"域名訪問測試,注意:因爲沒有"DNS"服務器解析須要修改hosts文件來解析
1
2
3
|
######添加以下內容解析
C:\Windows\System32\drivers\etc\hosts
172.16.14.1 www.allen.com
|
二、查看web服務器上nginx訪問日誌
1
2
3
4
5
6
7
8
|
[root@web ~]
# tail -5 /usr/local/nginx/logs/host.access.log
172.16.14.1 - - [23
/Sep/2013
:22:38:39 +0800]
"GET /images/common/softkeyboard.gif HTTP/1.0"
304 0
"http://www.allen.com/include/css/keyboard.css"
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0"
"-"
172.16.14.1 - - [23
/Sep/2013
:22:38:39 +0800]
"GET /images/default/link.gif HTTP/1.0"
304 0
"http://www.allen.com/forumdata/cache/style_1.css"
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0"
"-"
172.16.14.1 - - [23
/Sep/2013
:23:04:02 +0800]
"GET /index.html HTTP/1.0"
304 0
"-"
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0"
"-"
172.16.14.1 - - [23
/Sep/2013
:22:38:39 +0800]
"GET /images/default/forumbox_head.gif HTTP/1.0"
304 0
"http://www.allen.com/forumdata/cache/style_1.css"
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0"
"-"
172.16.14.1 - - [23
/Sep/2013
:23:04:01 +0800]
"GET /index.html HTTP/1.0"
200 25
"-"
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0"
"-"
----------------------------------------------------------------------
######由上可見,訪問"www.allen.com"域名時,全部靜態內容都轉發到web服務器上;如圖片
|
三、查看java服務器上Tomcat訪問日誌
1
2
3
4
5
6
7
8
|
[root@java ~]
# tail -5 /usr/local/tomcat/logs/bbs_access_log.2013-09-14.txt
172.16.14.1 - - [14
/Sep/2013
:23:26:57 +0800]
"GET /forumdata/cache/style_1.css HTTP/1.0"
304 -
172.16.14.1 - - [14
/Sep/2013
:23:26:57 +0800]
"GET /forumdata/cache/style_1_append.css HTTP/1.0"
304 -
172.16.14.1 - - [14
/Sep/2013
:23:27:02 +0800]
"GET /member.jsp?action=list HTTP/1.0"
200 6839
172.16.14.1 - - [14
/Sep/2013
:23:27:02 +0800]
"GET /forumdata/cache/style_1_append.css HTTP/1.0"
304 -
172.16.14.1 - - [14
/Sep/2013
:23:27:02 +0800]
"GET /forumdata/cache/style_1.css HTTP/1.0"
304 -
------------------------------------------------------------------------
######由上可見,訪問的動態內容都轉發到Java服務器來解析;如jsp結尾的文件
|
到此,Nginx+Tomcat實現WEB網站的動、靜分離已經完成;後面將會更新Apache+Tomcat如何實現Apache代理Tomcat及如何實現會話保存...