修改tomcat安裝目錄bin/catalina.sh,添加export JAVA_OPTS='-Xms1024m -Xmx1024m',前面是初始化內存大小,后面是可以使用最大內存
location ~ \.(html|jsp|gif|jpg|jpeg|png|bmp|js|xml|java|jar|txt|swf|xls|txt)$ {
因為公司上一個(gè)項目使用Rails框架的緣故,這次繼續沿用上一個(gè)框架的前端Nginx,作為一款輕量級的HTTP服務(wù)器,它在Linux平臺上的表現毋庸置疑,本項目只用它來(lái)作為靜態(tài)文件的處理及動(dòng)態(tài)請求的轉發(fā)更是顯得綽綽有余,它的負載均衡功能也為以后的擴展提供良好的保證。由于本項目的后臺開(kāi)發(fā)語(yǔ)言使用JAVA,因此APP上面選用了大名鼎鼎的Tomcat用來(lái)處理前端Nginx轉發(fā)的動(dòng)態(tài)請求。后臺數據庫采用Mysql,Tomcat與DB使用 JDBC連接。
expires 24h;
#控制頁(yè)面緩存時(shí)間
連接參數的配置也是修改connector參數,主要有:
編輯安裝目錄下conf/server.xml
maxSpareThreads="75"
問(wèn)題2:訪(fǎng)問(wèn)Nginx上的應用連接不到數據庫,但直接訪(fǎng)問(wèn)Tomcat正常。將Nginx指向其他APP訪(fǎng)問(wèn)正常,說(shuō)明Nginx配置沒(méi)有問(wèn)題,連接不到數據庫是因為Nginx連接不到Tomcat,而Tomcat連接著(zhù)數據庫,Nginx只能訪(fǎng)問(wèn)自己本地的項目。從以上判斷應該是Tomcat上項目的權限問(wèn)題。找到故障點(diǎn)后著(zhù)手解決,發(fā)現Tomcat上項目主目錄下沒(méi)有crossdomain.xml文件,這是Tomcat的跨域策略文件,配置后問(wèn)題解決。
最后將項目的靜態(tài)文件及動(dòng)態(tài)文件分別部署到Nginx和Tomcat上,做到動(dòng)靜分離。Tomcat上沒(méi)有必要放置多余的靜態(tài)文件,但要配置好和后臺數據庫連接的jdbc,如:
www
-
nofile
1006154
#Nginx支持if判斷并內置很多變量,如下面的$request_filename為請求的文件名。該if語(yǔ)句在location{}中,因此判斷以.html .jsp等結尾的文件請求如果在本地不存在,則轉發(fā)到tomcatapp中去處理。if語(yǔ)句在Nginx中一般和rewrite搭配用以實(shí)現URL的重定向。需要注意的是安裝Nginx時(shí)./configure后面要有--with-pcre --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module等幾個(gè)參數,否則nginx.conf中出現if會(huì )報錯如:nginx unknown directive "if" in /usr/local/nginx/conf/nginx.conf。至于哪個(gè)參數決定可以使用if還沒(méi)有測試,總之都加上就好。
keepalive_timeout 65;
#設置長(cháng)連接超時(shí)時(shí)間
}
}
第一階段:3臺服務(wù)器組成的Nginx+Tomcat+Mysql可擴展架構
sendfile
on;
數據庫名.表名可以*.*表示所有
之后FLUSH PRIVILEGES;即可
break;
mysql -uroot -p
}
第一階段的生產(chǎn)環(huán)境搭建完畢,還有很多需要測試和優(yōu)化的地方,這期間Google也幫了大忙,第二階段的擴展也會(huì )在這個(gè)基礎上展開(kāi),記錄與總結也會(huì )繼續。
}
2.2.1內存
2.1 Nginx配置
}
error_page 500 502 503 504 /50x.html;
Nginx配置文件nginx.conf:
#gzip on;
default_type application/octet-stream;
session required
/lib/security/pam_limits.so
#access_log logs/host.access.log main;
}
server_name 192.168.1.3; #本機IP,寫(xiě)localhost或申請的域名也可以,URL處輸入
問(wèn)題1:連接不到后臺數據庫,但數據庫本身沒(méi)有問(wèn)題,服務(wù)開(kāi)啟并且也可以登錄。在排除了防火墻之類(lèi)的配置后,用其他主機遠程登錄提示Access denied for user 'root'@'ip' (using password: YES),mysql默認禁止遠程連接,解決辦法:
MaxKeepAliveRequests 為一次連接可以進(jìn)行的HTTP請求的最大請求次數,1表示禁用,-1表示不限制個(gè)數,默認100個(gè),一般設置在100~200之間
listen
80;
#開(kāi)啟80端口提供服務(wù)
權限分為select,update,insert,delete或者直接all
proxy_redirect
off;
#下面是配置.html .jsp .swf等靜態(tài)文件本地處理,要用到正則表達式
proxy_set_header X-Real-IP $remote_addr;
2.2.4集群
(1.) /etc/pam.d/login添加
<Connector port="8080"
用戶(hù)密碼不是本機真實(shí)密碼,為本機給遠程登陸用戶(hù)設的密碼
location = /50x.html {
}
minSpareThreads="25"
index index.jsp index.html index.htm;
#pid
logs/nginx.pid;
worker_connections 60000; #允許的連接數
3、部署及問(wèn)題
root /var/www;
#error_log logs/error.log;
多虛擬主機是在一個(gè)實(shí)例中的server.xml中配置多個(gè)虛擬目錄以指向相同或不同項目,多實(shí)例是安裝多個(gè)Tomcat實(shí)例,修改為不同端口,啟動(dòng)不同進(jìn)程實(shí)現不同項目或者同項目的訪(fǎng)問(wèn),與虛擬主機不同的是多實(shí)例可以實(shí)現簡(jiǎn)單的單臺主機上的負載均衡。具體配置這里不介紹了。
2、配置
if (!-f $request_filename) {
www 是一個(gè)用戶(hù),如果是想所有用戶(hù)生效的話(huà)換成 * ,設置的數值與硬件配置有關(guān),別設置太大
proxy_set_header
Host $host;
#access_log logs/access.log main;
登錄主機'%'表示所有
upstream tomcatapp {
#轉發(fā)并負載均衡的服務(wù)器寫(xiě)在這下面
jdbc.username=root
2.2 Tomcat配置
location / {
connectionTimeout 網(wǎng)絡(luò )連接超時(shí),單位毫秒,設置為0表示永不超時(shí)
Mysql的表結構是開(kāi)發(fā)人員根據程序需要來(lái)設計,這個(gè)要根據項目區分。
(2.) /etc/security/limits.conf添加
http {
#以下為全局配置,除了以上的靜態(tài)文件之外,所有請求都轉發(fā)給proxy_pass后設置的服務(wù)器列表去處理
server 192.168.1.2;
#Tomcat服務(wù)器地址
(3.) 修改/etc/rc.local添加
root /var/www;
#Nginx根目錄,可以在http、server或location設置
}
#error_log logs/error.log info;
echo 8061540 > /proc/sys/fs/file-max
include
mime.types;
server {
2.2.3多虛擬主機及多實(shí)例
worker_processes 8;
#開(kāi)啟8個(gè)進(jìn)程,根據CPU個(gè)數調整
acceptCount="100"
別忘了還有個(gè)連接DB的驅動(dòng)jar包。這樣一個(gè)Nginx+Tomcat+Mysql架構的項目就部署完畢。接下來(lái)說(shuō)說(shuō)遇到的問(wèn)題。
keepAliveTimeout 長(cháng)連接最大保持時(shí)間,單位毫秒
jdbc.url=jdbc:mysql://192.168.1.1:3306/kingdom?characterEncoding=utf-8
2.3 Mysql
mysql>GRANT all privileges ON *.* to root@'%' IDENTIFIED BY "root" with grant option;
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站