先明确一下各个安装目录:
Jdk: /usr/local/jdk1.8.0_191
Tomcat: /usr/local/apache-tomcat-8.5.35
Nginx: /usr/local/nginx
环境变量:/etc/profile, 更新环境变量 source /etc/profile
Nginx Conf文件:/usr/local/nginx/conf/nginx.conf
域名以下都用:aaa.bbb.ccc.ddd 来代替
1. 安装centos7 步骤略
2. 设置好ip 步骤略
3.安装jdk
3.1 删除自带jdk
卸载OpenJDK
采用前面的方式安装CentOS7时,默认安装了OpenJDK1.8的,OpenJDK其实就是也是在Java规范上的另一种实现,就如同Mono也是按照微软的.NET规范实现的一样,在一个平台上编译后的文件可以直接在另一个平台上运行,反正几年前我就干过在Windows上用Microsoft Visual Studio编写ASP.NET程序然后放在Linux系统上借助Apache+Mono+xsp运行。
因为后面还有更多内容依赖于Java,所以这里就卸载OpenJDK而安装Oracle JDK了。
检查当前系统是否安装JDK,运行命令:
rpm -qa | grep jdk
得到结果如下:
java-1.8.0-openjdk-headless-1.8.0.131-2.b11.el7_3.x86_64
java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64
copy-jdk-configs-1.2-1.el7.noarch
卸载OpenJDK,运行命令:
1 yum remove java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64
2 yum remove java-1.8.0-openjdk-headless-1.8.0.131-2.b11.el7_3.x86_64
此时如果再运行rpm -qa | grep jdk就会看到java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64被卸载了。
3.2 安装jdk(所有的安装文件下载到"/usr/local/softbak",包括jdk,tomcat等)
3.2.1 安装wget,
yum install wget
3.2.2 下载jdk:
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.tar.gz
3.2.3 解压
tar -zxvf jdk-8u191-linux-x64.tar.gz
生成jdk1.8.0_191
3.2.4 移动
移动jdk1.8.0_191 到"/usr/local"
mv jdk1.8.0_191/ /usr/local/
3.2.5 设置环境变量
配置环境变量(vim没有安装,yum install vim)
vim /etc/profile
新增环境变量:
export JAVA_HOME=/usr/local/jdk1.8.0_191
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
3.2.6 更新环境变量
source /etc/profile
4. 安装Tomcat
4.1 下载
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.35/bin/apache-tomcat-8.5.35.tar.gz
4.2 解压
tar -zxvf apache-tomcat-8.5.35.tar.gz
4.3 移动
mv apache-tomcat-8.5.35.tar.gz ../
4.4 开放端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent(开启8080端口)
firewall-cmd --zone=public --add-port=80/tcp --permanent(开启80端口)
firewall-cmd --zone=public --add-port=443/tcp --permanent(开启443端口,https用)
firewall-cmd --reload
//firewall-cmd --zone= public --remove-port=80/tcp --permanent(关闭端口备用)
4.5 开启tomcat服务
sh /usr/local/apache-tomcat-8.5.35/bin/startup.sh
tail -f /usr/local/apache-tomcat-8.5.35/logs/catalina.out (查看tomcat实时日志)
4.6 测试是否连通
aaa.bbb.ccc.ddd:8080
4.7 关闭tomcat服务
sh /usr/local/apache-tomcat-8.5.35/bin/shutdown.sh
4.8 配置tomcat默认启动项目 (项目名子为Cluster)
改动配置文件server.xml
4.9 添加<Context path="" docBase="Cluster" debug="0" reloadable="true"/>节点,当中docBase为webapps中的项目。注意,<Context>一定要加在<Host>节点中。样例例如以下:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="Cluster" debug="0" reloadable="true"/>
5 安装Nginx
5.1. gcc 安装
安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:
yum install gcc-c++
5.2. PCRE pcre-devel 安装
PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:
yum install -y pcre pcre-devel
5.3. zlib 安装
zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。
yum install -y zlib zlib-devel
5.4. OpenSSL 安装
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。
yum install -y openssl openssl-devel
5.5.下载 https://nginx.org/en/download.html
wget https://nginx.org/download/nginx-1.14.1.tar.gz
5.6.解压,移动
tar -zxvf nginx-1.14.1.tar.gz
mv nginx-1.14.1.tar.gz ../
5.7.编译
i. $ ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module $默认安装在/usr/local/nginx (ssl_module要安装后面要用)
ii. $ make
iii. $ make install
iv. whereis nginx
5.8.启动、停止nginx
cd /usr/local/nginx/sbin/
./nginx (启动)
./nginx -s stop
./nginx -s quit
./nginx -s reload
5.9 访问测试是否成功
aaa.bbb.ccc.ddd:80
6 Nginx+Tomcat代理配置(设置完成后aaa.bbb.ccc.ddd:80会直接跳转到本地127.0.01:8080)
6.1. 使用whereis nginx命令找到nginx所在的目录并进入目录内的conf文件夹找到ngnix.conf配置文件:
upstream aaa.bbb.ccc.ddd { #这里的名称要跟proxy_pass内的名称一致 <br>
server 127.0.0.1:8080 weight=1; #weight:权重,默认是1,数值越大提供服务的次数就越多 <br>
server 127.0.0.1:8081 weight=1; <br>
server 127.0.0.1:8083 down; #down表示当前的服务暂不参于负载<br>
server 127.0.0.1:8084 backup; #backup 其它所有非backup机器down或者忙时,才会请求backup机器。
}
server {
listen 80;
server_name aaa.bbb.ccc.ddd;
access_log logs/aaa.bbb.ccc.ddd.access.log;
error_log logs/aaa.bbb.ccc.ddd.error.log;
#root html;
#index index.html index.htm index.jsp index.php;
location / {
proxy_pass aaa.bbb.ccc.ddd; #这里的aaa.bbb.ccc.ddd与上面的upstream要一样
}
}
6.2. 关闭8080端口,对外只可以通过nginx 80端口转发过来
i. firewall-cmd --zone=public --remove-port=8080/tcp --permanent
ii. firewall-cmd --reload
7 Https Let's Encrypt
7.1. 用certbot-auto安装
1. wget https://dl.eff.org/certbot-auto
2. chmod a+x ./certbot-auto
3. ./certbot-auto
7.2. 生成证书
./certbot-auto certonly --text --agree-tos --email ****@126.com --standalone -d aaa.bbb.ccc.ddd (用的standalone方式)
参考:
生成证书过程中需要鉴权。有多种方式,比如 webroot 、 standalone 、 apache、 nginx 、 manual 等。我使用过前两种。 这两种中,简单一点的是 standalone。不过,这种方式需要把现有的 WebServer 停掉,因为这种方式下 certbot 需要占用 80 端口。
# ./certbot-auto certonly --text --agree-tos --email webmaster@example.com --standalone -d example.com -d www.example.com -d service.example.com
-d 参数指定域名,可多个。一般第一个是主域名。
webroot 方式稍微繁琐一些,但好处是不需要关停现有的 WebServer 。此方法需要在域名对应的根目录下新建 .well-known 目录并写入若干文件供验证服务访问。 因此需要配置 WebServer 允许外部访问 http://example.com/.well-known 路径。配置方法请参考相应 WebServer 的文档。Nginx 的默认配置应该不用修改,Apache 就不知道了。 另外,不同的域名的根路径可能不同,下面的例子中可以看到为不同的域名指定不同的根路径。
# ./certbot-auto certonly --text --agree-tos --email webmaster@excample.com --webroot -w /var/www/example -d example.com -d www.example.com -w /var/service/example -d service.ulefa.com
无论使用那种方式,运行以上命令后都会在 /etc/letsencrypt 生成一堆东西,包括证书。
cert.pem - Apache服务器端证书
chain.pem - Apache根证书和中继证书
fullchain.pem - Nginx所需要ssl_certificate文件
privkey.pem - 安全证书KEY文件
Nginx环境,就只需要用到fullchain.pem和privkey.pem两个证书文件
来自 <https://www.cnblogs.com/ly-radiata/articles/6119374.html>
7.3. 修改Nginx的Conf文件(/usr/local/nginx/conf/nginx.conf:)
7.3.1设置跳转的tomcat地址
7.3.2设置http请求跳转到https请求
7.3.3设置https请求和ssl证书
启动Nginx: /usr/local/nginx/sbin/nginc
启动tomcat: sh /usr/local/apache-tomcat-8.5.35/bin/startup.sh
测试:
访问 aaa.bbb.ccc.ddd 会自动跳转到https://aaa.bbb.ccc.ddd
7.3.4. SSL证书续期
进入 到 /usr/local/softbak,,, 有之前下载的certbot-auto目录
运行 ./certbot-auto renew
由于目前没有过期,所以提示不用renew