修改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)$ {
因为公司上一个项目使用Rails框架的缘故,这次继续沿用上一个框架的前端Nginx,作为一款轻量级的HTTP服务器,它在Linux平台上的表现毋庸置疑,本项目只用它来作为静态文件的处理及动态请求的转发更是显得绰绰有余,它的负载均衡功能也为以后的扩展提供良好的保证。由于本项目的后台开发语言使用JAVA,因此APP上面选用了大名鼎鼎的Tomcat用来处理前端Nginx转发的动态请求。后台数据库采用Mysql,Tomcat与DB使用 JDBC连接。
expires 24h;
#控制页面缓存时间
连接参数的配置也是修改connector参数,主要有:
编辑安装目录下conf/server.xml
maxSpareThreads="75"
问题2:访问Nginx上的应用连接不到数据库,但直接访问Tomcat正常。将Nginx指向其他APP访问正常,说明Nginx配置没有问题,连接不到数据库是因为Nginx连接不到Tomcat,而Tomcat连接着数据库,Nginx只能访问自己本地的项目。从以上判断应该是Tomcat上项目的权限问题。找到故障点后着手解决,发现Tomcat上项目主目录下没有crossdomain.xml文件,这是Tomcat的跨域策略文件,配置后问题解决。
最后将项目的静态文件及动态文件分别部署到Nginx和Tomcat上,做到动静分离。Tomcat上没有必要放置多余的静态文件,但要配置好和后台数据库连接的jdbc,如:
www
-
nofile
1006154
#Nginx支持if判断并内置很多变量,如下面的$request_filename为请求的文件名。该if语句在location{}中,因此判断以.html .jsp等结尾的文件请求如果在本地不存在,则转发到tomcatapp中去处理。if语句在Nginx中一般和rewrite搭配用以实现URL的重定向。需要注意的是安装Nginx时./configure后面要有--with-pcre --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module等几个参数,否则nginx.conf中出现if会报错如:nginx unknown directive "if" in /usr/local/nginx/conf/nginx.conf。至于哪个参数决定可以使用if还没有测试,总之都加上就好。
keepalive_timeout 65;
#设置长连接超时时间
}
}
第一阶段:3台服务器组成的Nginx+Tomcat+Mysql可扩展架构
sendfile
on;
数据库名.表名可以*.*表示所有
之后FLUSH PRIVILEGES;即可
break;
mysql -uroot -p
}
第一阶段的生产环境搭建完毕,还有很多需要测试和优化的地方,这期间Google也帮了大忙,第二阶段的扩展也会在这个基础上展开,记录与总结也会继续。
}
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,写localhost或申请的域名也可以,URL处输入
问题1:连接不到后台数据库,但数据库本身没有问题,服务开启并且也可以登录。在排除了防火墙之类的配置后,用其他主机远程登录提示Access denied for user 'root'@'ip' (using password: YES),mysql默认禁止远程连接,解决办法:
MaxKeepAliveRequests 为一次连接可以进行的HTTP请求的最大请求次数,1表示禁用,-1表示不限制个数,默认100个,一般设置在100~200之间
listen
80;
#开启80端口提供服务
权限分为select,update,insert,delete或者直接all
proxy_redirect
off;
#下面是配置.html .jsp .swf等静态文件本地处理,要用到正则表达式
proxy_set_header X-Real-IP $remote_addr;
2.2.4集群
(1.) /etc/pam.d/login添加
<Connector port="8080"
用户密码不是本机真实密码,为本机给远程登陆用户设的密码
location = /50x.html {
}
minSpareThreads="25"
index index.jsp index.html index.htm;
#pid
logs/nginx.pid;
worker_connections 60000; #允许的连接数
3、部署及问题
root /var/www;
#error_log logs/error.log;
多虚拟主机是在一个实例中的server.xml中配置多个虚拟目录以指向相同或不同项目,多实例是安装多个Tomcat实例,修改为不同端口,启动不同进程实现不同项目或者同项目的访问,与虚拟主机不同的是多实例可以实现简单的单台主机上的负载均衡。具体配置这里不介绍了。
2、配置
if (!-f $request_filename) {
www 是一个用户,如果是想所有用户生效的话换成 * ,设置的数值与硬件配置有关,别设置太大
proxy_set_header
Host $host;
#access_log logs/access.log main;
登录主机'%'表示所有
upstream tomcatapp {
#转发并负载均衡的服务器写在这下面
jdbc.username=root
2.2 Tomcat配置
location / {
connectionTimeout 网络连接超时,单位毫秒,设置为0表示永不超时
Mysql的表结构是开发人员根据程序需要来设计,这个要根据项目区分。
(2.) /etc/security/limits.conf添加
http {
#以下为全局配置,除了以上的静态文件之外,所有请求都转发给proxy_pass后设置的服务器列表去处理
server 192.168.1.2;
#Tomcat服务器地址
(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多虚拟主机及多实例
worker_processes 8;
#开启8个进程,根据CPU个数调整
acceptCount="100"
别忘了还有个连接DB的驱动jar包。这样一个Nginx+Tomcat+Mysql架构的项目就部署完毕。接下来说说遇到的问题。
keepAliveTimeout 长连接最大保持时间,单位毫秒
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;
免责声明:本站发布的内容(图片、视频和文字)以原创、来自互联网转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:ts@56dr.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
Copyright © 2009-2021 56dr.com. All Rights Reserved. 特网科技 版权所有 珠海市特网科技有限公司 粤ICP备16109289号
域名注册服务机构:阿里云计算有限公司(万网) 域名服务机构:烟台帝思普网络科技有限公司(DNSPod) CDN服务:阿里云计算有限公司 中国互联网举报中心 增值电信业务经营许可证B2