本文目录 一、基础环境搭建 二、Tomcat 部署 三、httpd 安装 四、httpd 连接 Tomcat (mod_proxy插件) 五、https 集成(mod_ssl插件) 六、
本文目录
- 一、基础环境搭建
- 二、Tomcat 部署
- 三、httpd 安装
- 四、httpd 连接 Tomcat (mod_proxy插件)
- 五、https 集成(mod_ssl插件)
- 六、签发证书(openssl 工具)
- 七、免密启动httpd
操作系统
Red Hat Enterprise Linux Server release 7.2 (Maipo) x86_64
运行用户:app <sudo 权限>
软件版本
httpd -v
Server version: Apache/2.4.6 (Red Hat Enterprise Linux)
Server built: Jul 12 2016 05:02:54
apache-tomcat-7.0.73
java -version
java version "1.6.0_45"
用户配置
groupadd other
useradd app -g other
passwd app
#添加sudo 权限
chmod u+w /etc/sudoers
vim /etc/sudoers
#这里设置other 整个组都将有sudo权限%other ALL=(ALL) NOPASSWD: ALL
chmod u-w /etc/sudoers
#新建安装目录
mkdir -p /opt/app/
chown -R app:other /opt/app/
一、基础环境搭建<root用户登录>
#hostname 修改
vim /etc/cloud/cloud.cfg
preserve_hostname: true
#设置 hostname
hostnamectl set-hostname HOSTNAME10
reboot
hostname
#JDK 环境搭建
https://my.oschina.net/simplecnst/blog/824352
二、Tomcat 部署<app用户登录>
#建立统一工作目录
cd /opt/app/
mkdir -p server src support/ca
#下载解压
cd src
wget http://apache.website-solution.net/tomcat/tomcat-7/v7.0.73/bin/apache-tomcat-7.0.73.tar.gz
#解压到server目录
tar xzvf apache-tomcat-7.0.73.tar.gz -C ../server/
cd ../server/
mv apache-tomcat-7.0.73 tomcat
#配置(更改端口、连接器等一些参数)
cd tomcat/
vim conf/server.xml
# 启动 停止
./bin/catalina.sh start
./bin/catalina.sh stop
# 注意防火墙
http://[ServerIP]:8080/
三、httpd 安装<app用户登录>
sudo yum install httpd
#重启
sudo systemctl restart httpd
#测试 有显示相关页面ok
http://[ServerIP]
四、httpd 连接 Tomcat (mod_proxy插件)<app用户登录>
apache 2.4 以后自带 mod_proxy
#检测是否有mod_proxy 模块
httpd -D DUMP_MODULES | grep proxy
#此目录是通过yum 安装方式的默认目录
cd /etc/httpd/
#编辑mod_proxy 的配置文件
vim conf.modules.d/balance.conf
A)、Sticky-session (Session 复制模式 PS:并未做测试)
#提供基础的代理功能LoadModule proxy_module modules/mod_proxy.so#提供负载均衡的功能LoadModule proxy_balancer_module modules/mod_proxy_balancer.so#代理http协议LoadModule proxy_http_module modules/mod_proxy_http.so#代理ajp协议LoadModule proxy_ajp_module modules/mod_proxy_ajp.soLoadModule proxy_http_module modules/mod_status.so#负载均衡的算法模块LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.soLoadModule slotmem_shm_module modules/mod_slotmem_shm.so#兼容低版本访问LoadModule access_compat_module modules/mod_access_compat.so#如果访问/lbmanager表示不转发ProxyPass /lbmanager !ProxyPass /status !ProxyRequests OffProxyPreserveHost onProxyPass / balancer://mycluster/ stickysession=JSESSIONID|jsessionid nofailover=OffProxyPassReverse / balancer://cluster/#代理关联配置loadfactor可以分发请求权重,loadfactor越大,权重越大<Proxy balancer://mycluster># BalancerMember http://localhost:8080 loadfactor=1 route=tomcat7_1# BalancerMember http://localhost:8081 loadfactor=1 route=tomcat7_2#使用ajp 方式连接Tomcat BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=tomcat7_1 BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=tomcat7_2#热部署,当着备份服务,当tomcat7_1和tomcat7_2死掉的时候,就自动访问tomcat7_3# BalancerMember ajp://localhost:7009 loadfactor=1 route=tomcat7_3 status=+H#设置代理的算法 ProxySet lbmethod=bybusyness</Proxy>#此配置上生产环境请注释!!! 仅调试#负载均衡控制台,通过http://[ServerIP]/lbmanager 访问<Location /lbmanager> SetHandler balancer-manager Require all granted</location><Location /status> SetHandler server-status Require all granted</location>#此配置上生产环境请注释!!!
B)、No-sticky-session (并未测试)
#提供基础的代理功能LoadModule proxy_module modules/mod_proxy.so#提供负载均衡的功能LoadModule proxy_balancer_module modules/mod_proxy_balancer.so#代理http协议LoadModule proxy_http_module modules/mod_proxy_http.so#代理ajp协议LoadModule proxy_ajp_module modules/mod_proxy_ajp.so#负载均衡的算法模块LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.soLoadModule slotmem_shm_module modules/mod_slotmem_shm.so#兼容低版本访问LoadModule access_compat_module modules/mod_access_compat.so#开启反向代理ProxyRequests OffProxyPass / balancer://mycluster/#代理关联配置loadfactor可以分发请求权重,loadfactor越大,权重越大<Proxy balancer://mycluster># BalancerMember http://localhost:8080 loadfactor=1 route=tomcat7_1# BalancerMember http://localhost:8081 loadfactor=1 route=tomcat7_2 BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=tomcat7_1 BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=tomcat7_2 #热部署,当着备份服务,当tomcat7_1和tomcat7_2死掉的时候,就自动访问tomcat7_3 #BalancerMember http://localhost:9080 loadfactor=1 route=tomcat7_3 status=+H #设置代理的算法#以下可选参数#lbmethod=byrequests 按照请求次数均衡(默认) #lbmethod=bytraffic 按照流量均衡 #lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器) ProxySet lbmethod=bybusyness</Proxy>#此配置上生产环境请注释!!!#负载均衡控制台,通过http://[ServerIP]/lbmanager 访问<Location /lbmanager> SetHandler balancer-manager Require all granted</location><Location /status> SetHandler server-status Require all granted</location>#此配置上生产环境请注释!!!
测试
访问
http://[ServerIP]/lbmanager 查看集群部署情况
五、https 集成(mod_ssl插件)<app用户登录>
#安装
cd /etc/httpd/conf.d
ll
sudo yum -y install mod_ssl
ll
# 你会发现多了ssl.conf
# 测试
https://[ServerIP]
# 开启访问80 端口自动跳转443
#在末尾追加
vim /etc/httpd/conf/httpd.conf
RewriteEngine on#另一种写法:RewriteCond %{SERVER_PORT} 80RewriteCond %{SERVER_PORT} !^443$#301表示永久移走RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
#访问 会自动跳转
http://[ServerIP]
六、签发证书(openssl 工具)<app用户登录>
PS:证书相关知识
x509证书一般会用到三类文,key,csr,crt。
Key 是私用密钥openssl格,通常是rsa算法。
Csr 是证书请求文件,用于申请证书。在制作csr文件的时,必须使用自己的私钥来签署申,还可以设定一个密钥。
crt是CA认证后的证书文,(windows下面的,其实是crt),签署人用自己的key给你签署的凭证。
#建立ca目录
cd
mkdir ca
cd ca
1. key的生成 (密码:password)随后重启httpd 需要输入此密码
openssl genrsa -des3 -out server.key 2048
2. 生成CA的crt
openssl req -new -x509 -key server.key -out ca.crt -days 3650 -subj / "/C=CN/ST=ShangHai/L=PuDong/O=CAS/OU=it/CN=*.cas.cn"
3. csr的生成方法
openssl req -new -key server.key -out server.csr -subj / "/C=CN/ST=ShangHai/L=PuDong/O=CAS/OU=it/CN=*.cas.cn"
4. crt生成方法(此处可以购买证书或者自己签发)
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
5. 证书合并:
cat server.key server.crt > server.pem
#证书配置至httpd
pwd
/home/app/ca
#拷贝证书到工作目录
cd ..
cp -R ca/ /opt/app/support/
#更改配置到我们生成的证书
sudo vim /etc/httpd/conf.d/ssl.conf
#找到一下配置
#默认使用证书# Server Certificate:SSLCertificateFile /etc/pki/tls/certs/localhost.crt# Server Private Key:SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
#更改后,指向我们生成的证书
# Server Certificate:SSLCertificateFile /opt/app/support/ca/server.crt# Server Private Key:SSLCertificateKeyFile /opt/app/support/ca/server.key
#重启httpd
sudo systemctl restart httpd
键入我们生成key 的密码:
#访问 会自动跳转
http://[ServerIP]
七、免密启动httpd
vim /etc/httpd/conf.d/ssl.conf
# 更改一下
SSLPassPhraseDialog exec:conf/ssl_pass.sh
vim /etc/httpd/conf/ssl_pass.sh
#加入一个echo语句
#!/bin/shecho "password"
#然后让它有执行权限
chmod +x conf/ssl_pass.sh
重启测试