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

来源:互联网 发布:第六届软件杯 编辑:程序博客网 时间:2024/05/21 17:41

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


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

教程环境为:

CentOS 7.3 mini + Nginx 1.13.7 + JDK1.8.0_151 + Tomcat 9.0.1 + MySql 5.7.20

1.安装Nginx

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

// 安装编译依赖库-y yum install -y gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel// 下载安装Nginxwget -O nginx.tar.gz http://nginx.org/download/nginx-1.13.7.tar.gztar -zxvf nginx.tar.gz// 改名mv nginx-* nginx// 移动在/usr/local下mv nginx /usr/localcd /usr/local/nginx./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module  --conf-path=/usr/local/nginx/nginx.confmake && make install// 查看版本sbin/nginx -v // 配置nginx.confvim nginx.conf#---------请自行参考注释修改----------    server {        #============监听的Nginx端口========        listen       80;        server_name  localhost;        charset utf-8;#默认编码        access_log  logs/host.access.log  combined;        #============对不同请求的处理=============        location ~ \.(jsp|do|action)?$         {               #=============tomcat的资源位置============            root /usr/local/apache-tomcat-9.0.1/webapps/;            index index.jsp index.do;            #==========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;            #=== 如果遇到.jsp .jspx .do .action 的请求就进入该服务器(tomcat)===            proxy_pass http://127.0.0.1:8080;        }    }#---------END----------// 启动/usr/local/nginx/sbin/nginx

其他命令:

/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 jdk-8u151-linux-x64.tar.gzmv jdk1.8.0_151 /usr/local/// 编辑环境变量vim /etc/profile// 追加内容如下:# JDK enviromentexport JAVA_HOME=/usr/local/jdk1.8.0_151export JRE_HOME=/$JAVA_HOME/jreexport CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport 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.1 (beta) Core tar.gz

// 解压下载好的压缩包tar zxvf apache-tomcat-9.0.1.tar.gzmv apache-tomcat-9.0.1 /usr/local/cd /usr/local/apache-tomcat-9.0.1// 配置tomcat服务vim conf/server.xml#----建议配置内容(可选)------#1.将protocol="HTTP/1.1"协议中 添加URI为UTF-8编码。#2.端口也在下面的参数,可以自行修改。<Connector port="8080"  protocol="HTTP/1.1"  connectionTimeout="20000"  redirectPort="8443"  URIEncoding="UTF-8"/>// 启动/usr/local/apache-tomcat-9.0.1/bin/startup.sh

现在就可以打开网页访问了:http://localhost:8080/


附加内容:

给tomcat设置管理用户和密码

// 打开配置,在tomcat目录下操作vim conf/tomcat-users.xml// 修改为如下:<role rolename="admin-gui"/><role rolename="manager-gui"/><user username="admin" password="123456" roles="manager-gui,admin-gui"/>

重启服务,再次访问tomcat管理页面就需要密码了。

4.安装MySql

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

// 查看是否安装MariaDB(如果安装了,请先卸载)rpm -qa | grep mariadb# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64// 解压下载好的压缩包tar xvf mysql-5.7.20-1.el7.x86_64.rpm-bundle.tar// 安装mysql(比较长,请一次性复制,防止依赖问题)rpm -ivh mysql-community-libs-5.7.20-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.20-1.el7.x86_64.rpm mysql-community-common-5.7.20-1.el7.x86_64.rpm mysql-community-client-5.7.20-1.el7.x86_64.rpm mysql-community-server-5.7.20-1.el7.x86_64.rpm mysql-community-devel-5.7.20-1.el7.x86_64.rpm// ----下面是一些初始化配置-----// 关闭启动的表授权(取消验证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=utf8init_connect='SET NAMES utf8'// 重启服务systemctl restart mysqld.service// 进入mysql管理mysql -uroot -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.防火墙设置

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

// 临时关闭SELINUXsetenforce 0// 永久关闭SELINUXvim /etc/selinux/config// 修改如下:(重启机器后生效)SELINUX=enforcing -> SELINUX=disabled// 开放端口firewall-cmd --zone=public --add-port=8080/tcp --permanentfirewall-cmd --zone=public --add-port=80/tcp --permanentfirewall-cmd --zone=public --add-port=22/tcp --permanentfirewall-cmd --zone=public --add-port=3306/tcp --permanentfirewall-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 serverPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/binDESC="nginx daemon"NAME=nginxDAEMON=/usr/local/nginx/sbin/$NAMECONFIGFILE=/usr/local/nginx/$NAME.confPIDFILE=/usr/local/nginx/logs/$NAME.pidSCRIPTNAME=/etc/init.d/$NAMEset -e[ -x "$DAEMON" ] || exit 0do_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 ;;esacexit 0// 给文件添加执行权限chmod +x /etc/init.d/nginx// 添加到自启列表chkconfig --add ningxchkconfig --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/functionselif [ -f /etc/rc.d/init.d/functions ]; then. /etc/rc.d/init.d/functionselseecho -e "\atomcat: unable to locate functions lib. Cannot continue."exit -1fiRETVAL=$?CATALINA_HOME="/usr/local/apache-tomcat-9.0.1" #tomcat安装目录case "$1" instart)if [ -f $CATALINA_HOME/bin/startup.sh ];thenecho $"Starting Tomcat"$CATALINA_HOME/bin/startup.shfi;;stop)if [ -f $CATALINA_HOME/bin/shutdown.sh ];thenecho $"Stopping Tomcat"$CATALINA_HOME/bin/shutdown.shfi;;*)echo $"Usage: $0 {start|stop}"exit 1;;esacexit $RETVAL// 给文件添加执行权限chmod +x /etc/init.d/tomcatd// 添加到自启列表chkconfig --add tomcatdchkconfig --level 2345 tomcatd on

7.部署项目

直接将javaweb项目打war包,然后将导出的war包拷贝到webapps根目录下,随之tomcat的启动,war包可以自动被解析。

8.附录iptables的设置

#查看iptables现有规则iptables -L -n#先允许所有,不然有可能会杯具iptables -P INPUT ACCEPT#清空所有默认规则iptables -F#清空所有自定义规则iptables -X#所有计数器归0iptables -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#允许pingiptables -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
阅读全文
0 0
原创粉丝点击