CentOS 7 搭建Java Web服务(Nginx+Tomcat+MySql)

CentOS 7 搭建Java Web服务(Nginx+Tomcat+MySql)


对于一个扎根Java编程的程序员来说,搭建Java Web服务是一个必备能力,所以在这里总结下,写了个安装教程。

教程环境为:

CentOS 7.4 mini + Nginx 1.13.7 + JDK1.8.0_151 + Tomcat 9.0.8 + MySql 5.7.22

1.安装Nginx

安装Nginx是采用编译再安装的形式,所以要先安装编译库。

# 安装编译依赖库
yum install -y gcc gcc-c++ make kernel-headers glibc-headers zlib-devel openssl openssl-devel pcre-devel
# 下载安装Nginx
wget -O nginx.tar.gz http://nginx.org/download/nginx-1.13.7.tar.gz
tar -zxvf nginx.tar.gz
# 改名
mv nginx-1.13.7 nginx 
# 移动在/usr/local下
mv nginx /usr/local
cd /usr/local/nginx
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --conf-path=/usr/local/nginx/nginx.conf
make && make install

# 查看版本
sbin/nginx -v 

# 配置nginx.conf
vim conf/nginx.conf
#---------请自行参考注释修改----------
    server {
        #============监听的Nginx端口========
        listen       80;
        server_name  localhost;
        charset utf-8; #默认编码
        #access_log  logs/host.access.log  combined;
        root         /usr/local/apache-tomcat/webapps/ROOT;
        #配置Nginx动静分离,定义的静态页面直接从Nginx发布目录读取。
        location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
        {
            expires      7d;
        }

        location ~ .*\.(js|css)$
        {
            expires      1h;
        }
        #============对 java后台(jsp、servlet) 请求的处理=============
        location ~ .*\.^(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma|js|css)$
        {   
            index index.jsp;
            #==========Nginx提供的代理============
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            #=== 如果遇到 非静态 的请求就进入该服务器(tomcat)===
            proxy_pass http://127.0.0.1:8080;
        }
    }
#---------END----------
# 启动
/usr/local/nginx/sbin/nginx

如果要设置https协议,可参考如下:

server {
    listen      80;
    server_name www.kioye.cn;
    # 跳转到https协议
    rewrite ^(.*)$ https://$server_name$1 permanent;
}

server {
    listen 443; 
    server_name www.kioye.cn; 
    #root html;
    charset utf-8;#默认编码 
    # index index.html index.htm;
    ssl on;

    # HTTPS server
    ssl_certificate /data/release/www.kioye.cn/Nginx/1_www.kioye.cn_bundle.crt; #
    ssl_certificate_key /data/release/www.kioye.cn/Nginx/2_www.kioye.cn.key; #server {
    ssl_session_timeout 5m; # listen 443 ssl;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # server_name localhost;
    ssl_ciphers 
ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;
    ssl_session_cache shared:SSL:50m; # ssl_certificate cert.pem;
    ssl_prefer_server_ciphers on; # ssl_certificate_key cert.key;

    #    ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m;
    location / {
        root /usr/local/apache-tomcat/webapps/ROOT;
        index index.jsp index.do; # ssl_prefer_server_ciphers on;
        #==========Nginx提供的代理============
        proxy_set_header X-Forwarded-Host $host; 
        proxy_set_header X-Forwarded-Server $host; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

提示:访问出现403,则需要设置文件chown -R centos:centos html
以及chmod -R 755 html

其他命令:

/usr/local/nginx/sbin/nginx -s stop #停止
/usr/local/nginx/sbin/nginx -s reload #重新载入配置文件
/usr/local/nginx/sbin/nginx -s reopen #重启

2.安装JDK

因为CentOS中下载大的安装包容易失败,故所有需要的安装包都是提前下载好再烤到CentOS系统内的。


JDK网址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
这里选择下载的是:jdk-8u151-linux-x64.tar.gz

# 查看是否存在其它版本的Java环境(如果有请先卸载!)
rpm -qa|grep java
# rpm -e --nodeps <package>

# 解压下载好的压缩包
tar zxvf jdk-8u151-linux-x64.tar.gz
mv jdk1.8.0_151 /usr/local/

# 编辑环境变量
vim /etc/profile
# 追加内容如下:
# JDK enviroment
export JAVA_HOME=/usr/local/jdk1.8.0_151
export JRE_HOME=/$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

# 更新生效
source /etc/profile

# 查看当前环境
java -version
# 显示如下为安装成功
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

3.安装Tomcat

Tomcat网址:https://tomcat.apache.org/download-90.cgi
这里选择下载的是:9.0.8(beta) Core tar.gz

wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.8/bin/apache-tomcat-9.0.8.tar.gz
# 解压下载好的压缩包
tar zxvf apache-tomcat-9.0.8.tar.gz
mv apache-tomcat-9.0.8 /usr/local/apache-tomcat
cd /usr/local/apache-tomcat

# 配置tomcat服务
vim conf/server.xml
#----建议配置内容(可选)------
#将protocol="HTTP/1.1"协议中 添加 URIEncoding 为 UTF-8 编码。端口也在下面的参数,可以自行修改。
<Connector port="8080"  protocol="HTTP/1.1"  connectionTimeout="20000"  redirectPort="8443"  URIEncoding="UTF-8"/>

附加内容:

给tomcat设置管理用户和密码

# 打开配置,在tomcat目录下操作
vim conf/tomcat-users.xml
# 添加如下内容:(访问tomcat管理页面的密码)
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="admin" password="0000" roles="manager-gui,admin-gui"/>
# 附录:请求限制设置参考(可选)
#1.只允许127.0.0.1访问:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1" deny=""/>
#2.根据主机名进行限制:
<Valve className="org.apache.catalina.valves.RemoteHostValve" allow="localhost" deny=""/>

重启服务/usr/local/apache-tomcat/bin/startup.sh
现在就可以打开网页访问了:http://127.0.0.1:8080/

4.安装MySql(这里提供两种方法安装mysql)

方法一: 先安装mysql的rpm源,再用yum安装mysql

// 查看是否安装MariaDB(如果安装了,请先卸载)
rpm -qa | grep mariadb
# rpm -e --nodeps mariadb-libs

# 进入相应目录
cd /usr/local/src
# 下载mysql的rpm安装源
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
# 安装rpm源
rpm -ivh mysql57-community-release-el7-8.noarch.rpm 
# 直接安装mysql-server(默认最新版)
yum -y install mysql-server

安装完成了,配置部分请参考下面的 rpm安装mysql

方法二: 通过下载mysql的rpm安装包,再用rpm安装mysql

MySql网址:https://dev.mysql.com/downloads/mysql/
这里选择下载的是:mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar

// 查看是否安装MariaDB(如果安装了,请先卸载)
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs

// 安装依赖
yum install -y numactl
// 解压下载好的压缩包
tar xvf mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar
// 安装mysql(比较长,请一次性复制,防止依赖问题)
rpm -ivh  mysql-community-common-5.7.22-1.el7.x86_64.rpm mysql-community-devel-5.7.22-1.el7.x86_64.rpm mysql-community-libs-5.7.22-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.22-1.el7.x86_64.rpm mysql-community-server-5.7.22-1.el7.x86_64.rpm mysql-community-client-5.7.22-1.el7.x86_64.rpm 

配置Mysql


// ----下面是一些初始化配置-----
// 关闭启动的表授权(取消验证root密码)
vim /etc/my.cnf
# 添加一条语句:
skip-grant-tables

// 启动服务
systemctl start mysqld.service
// 进入mysql管理
mysql -u root

# ------以下为mysql命令界面------
# 选择表
use mysql;
# 修改密码
update mysql.user set authentication_string=password('0000') where user='root';
# 更新权限
flush privileges;
# 退出
exit;

// 开启表授权验证
vim /etc/my.cnf
# 删除刚刚添加的语句
skip-grant-tables

// (接上)配置默认编码为utf8
# 在[mysqld]下添加编码配置,如下内容
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'

// 重启服务
systemctl restart mysqld.service

// 进入mysql管理
mysql -u root -p

# ------以下为mysql命令界面------
# 设置关闭密码策略
set global validate_password_policy=0;
# 设置关闭有效密码最短长度
set global validate_password_length=3;
# 设置密码
set PASSWORD = PASSWORD('0000');
# 设置用户永不过期
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
# 生效
flush privileges;

# 查看 MySQL 的字符集:
show variables like '%character%';

# 为root开启远程登录
use mysql;
update user set host='%' where user='root' and host='localhost';
# (可选)新建一个开启远程登录用户(用户remote密码0000)
# GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%' IDENTIFIED BY '0000' WITH GRANT OPTION;

# 生效
flush privileges;
quit;

好了现在mysql已经可以正常工作了。
添加自启操作是:systemctl enable mysqld.service

5.防火墙设置

对于非本地访问则需要配置一下防火墙,下面是一些开启访问权限的操作。

// 临时关闭SELINUX
setenforce 0

// 永久关闭SELINUX
vim /etc/selinux/config
// 修改如下:(重启机器后生效)
SELINUX=enforcing -> SELINUX=disabled

// 开放端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

6.设置自启

由于有些服务是第三方编译安装的,并不会加入系统管理中,故需要自行编写控制脚本,在添加到自启动列表中。

6.1) nginx自启配置

// 编写nginx控制脚本
vim /etc/init.d/nginx

#! /bin/sh
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="nginx daemon"
NAME=nginx
DAEMON=/usr/local/nginx/sbin/$NAME
CONFIGFILE=/usr/local/nginx/$NAME.conf
PIDFILE=/usr/local/nginx/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

set -e
[ -x "$DAEMON" ] || exit 0

do_start() {
 $DAEMON -c $CONFIGFILE || echo -n "nginx already running"
}

do_stop() {
 kill -INT `cat $PIDFILE` || echo -n "nginx not running"
}

do_reload() {
 kill -HUP `cat $PIDFILE` || echo -n "nginx can't reload"
}

case "$1" in
 start)
 echo -n "Starting $DESC: $NAME"
 do_start
 echo "."
 ;;
 stop)
 echo -n "Stopping $DESC: $NAME"
 do_stop
 echo "."
 ;;
 reload|graceful)
 echo -n "Reloading $DESC configuration..."
 do_reload
 echo "."
 ;;
 restart)
 echo -n "Restarting $DESC: $NAME"
 do_stop
 do_start
 echo "."
 ;;
 *)
 echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
 exit 3
 ;;
esac

exit 0

// 给文件添加执行权限
chmod +x /etc/init.d/nginx

// 添加到自启列表
chkconfig --add ningx
chkconfig --level nginx 2345 on

6.2) Tomcat自启配置

// 编写tomcatd控制脚本
vim /etc/init.d/tomcatd

#!/bin/bash
#
# /etc/rc.d/init.d/tomcat
# init script for tomcat precesses
#
# processname: tomcat
# description: tomcat is a j2se server
# chkconfig: 2345 86 16
# description: Start up the Tomcat servlet engine.

if [ -f /etc/init.d/functions ]; then
. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ]; then
. /etc/rc.d/init.d/functions
else
echo -e "\atomcat: unable to locate functions lib. Cannot continue."
exit -1
fi
RETVAL=$?
CATALINA_HOME="/usr/local/apache-tomcat-9.0.1" #tomcat安装目录

case "$1" in
start)
if [ -f $CATALINA_HOME/bin/startup.sh ];
then
echo $"Starting Tomcat"
$CATALINA_HOME/bin/startup.sh
fi
;;
stop)
if [ -f $CATALINA_HOME/bin/shutdown.sh ];
then
echo $"Stopping Tomcat"
$CATALINA_HOME/bin/shutdown.sh
fi
;;
*)
echo $"Usage: $0 {start|stop}"
exit 1
;;
esac
exit $RETVAL

// 给文件添加执行权限
chmod +x /etc/init.d/tomcatd

// 添加到自启列表
chkconfig --add tomcatd
chkconfig --level 2345 tomcatd on

7.部署项目

7.1 通过Idea自带sftp发布工具

这里写图片描述

这里写图片描述

设置完后就可以直接通过Upload to 名称 上传发布的项目到服务器

8.附录iptables的设置

#查看iptables现有规则
iptables -L -n
#先允许所有,不然有可能会杯具
iptables -P INPUT ACCEPT
#清空所有默认规则
iptables -F
#清空所有自定义规则
iptables -X
#所有计数器归0
iptables -Z
#允许来自于lo接口的数据包(本地访问)
iptables -A INPUT -i lo -j ACCEPT
#开放22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#开放21端口(FTP)
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
#开放80端口(Nginx)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#开放8080端口(TOMCAT)
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
#开放443端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#允许ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#允许接受本机请求之后的返回数据 RELATED,是为FTP设置的
iptables -A INPUT -m state --state  RELATED,ESTABLISHED -j ACCEPT
#其他入站一律丢弃
iptables -P INPUT DROP
#所有出站一律绿灯
iptables -P OUTPUT ACCEPT
#所有转发一律丢弃
iptables -P FORWARD DROP

猜你喜欢

转载自blog.csdn.net/kxwinxp/article/details/78626417