在mac下安装软件,使用homebrew安装,只需要安装nginx 和 tomcat既可以。
brew install nginx; brew install tomcat
brew安装的软件默认路径是在/usr/local/Cellar下。
安装完成之后就可以直接使用命令行启动nginx
sudo nginx
启动正常之后 然后访问首页localhost:8080,就能看到nginx相关的信息。
nginx相关的命令有三个
sudo nginx #启动
sudo nginx -s stop #关闭
sudo nginx -s reload #重新加载配置文件并启动
关闭nginx(防止8080端口和tomcat端口冲突),启动tomcat
sh /usr/local/Cellar/tomcat2/8.0.12/libexec/bin/startup.sh
启动正常之后 候访问首页 localhost:8080,就能看到tomcat的主页
下面设置tomcat相关的配置,在/usr/local/Cellar下找到tomcat,将tomcat拷贝两份出来(模拟集群两台机器)
cp -r /usr/local/Cellar/tomcat /usr/local/Cellar/tomcat2; cp -r /usr/local/Cellar/tomcat/usr/local/Cellar/tomcat3;
修改tomcat2,tomcat3的配置文件,使两台机器的启动端口不要重复: 分别找到tomcat2、tomcat3下的server.xml文件,修改启动端口为 8085 8090:
vi /usr/local/Cellar/tomcat2/8.0.12/libexec/conf/server.xml #注意这里路径可能不同,需要根据实际tomcat版本确定
找到启动端口并修改如下:
#修改启动端口,从8080 修改为 8085 <Connector port="8085" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
然后启动tomcat。
sh /usr/local/Cellar/tomcat2/8.0.12/libexec/bin/startup.sh #启动tomcat
访问 localhost:8085 查看结果。
同理将tomcat3端口设置为 8090。
下面设置nginx,让前端的访问可以被nginx代理到刚刚设置的两台tomcat上。
修改nginx的配置文件
vi /usr/local/etc/nginx/nginx.conf
修改后完整的nginx.conf文件如下:
worker_processes 2; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } 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; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; upstream localhost { #ip_hash; server localhost:8085; server localhost:8090; } server { listen 80; server_name localhost; charset utf-8; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; proxy_pass http://localhost; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect HOST default; } } }
upstream localhost模块中定义了两台可以路由到的server,即我们前面配置的tomcat2和tomcat3。
server模块的location模块中定义的代理模式 proxy_pass 表示路由到localhost。
此时只要输入localhost,nginx就能自动找到后面的tomcat2或者tomcat3来提供服务。为了测试,此时需要区分一下tomcat2和tomcat3,让我访问时可以知道我这次路由到的是2还是3。
需要知道访问的是不同的tomcat,可以使用tomcat自带的examples,稍作修改既可区别不同的tomcat。
vi /usr/local/Cellar/tomcat2/8.0.12/libexec/webapps/examples/index.html
在index页面的<body>下添加一行:
<h2> Im tomcat2 ==> port 8085 </h2>
同理在tomcat3中也做修改,添加一行
<h2> Im tomcat3 ==> port 8090 </h2>
此时确保tomcat2,tomcat3 以及nginx都处于启动状态(修改过nginx配置需要reload一下nginx)
然后访问不断刷新页面 http://localhost/examples/ 就能看到不同的结果: