Linux下JAVA WEB服务器的搭建一(JDKMYSQLTOMCAT)
Posted 孔子-说
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下JAVA WEB服务器的搭建一(JDKMYSQLTOMCAT)相关的知识,希望对你有一定的参考价值。
目录
要部署普通的java web项目,需要在linux上搭建好web服务器运行环境,包括JDK、tomcat、mysql、redis、nginx等,本文主要介绍相关软件的下载安装配置。linux系统采用的是ubuntu。
如果我们是装了有一段时间的Ubuntu系统了,最好先输入:sudo apt-get update 回车,如果不先运行这条命令,可能在安装的时候会出现需要更新的错误提示信息,所以为了避免麻烦,我们就在一开始先输入这条命令。
1、JDK1.8的安装配置
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
1.1 环境检查
1) 检查系统中的jdk版本
java -version
如果有Command 'java' not found...类似的提示,表示系统之前没有安装jdk或者没有配置环境变量。
2)检查系统是否安装jdk
rpm -qa | grep java
通过以上命令可以检查系统是否安装java软件,如果结果为空,表示系统没有安装jdk(rpm命令用来管理rpm文件 ,-qa 查看安装信息,grep命令用来搜索Linux的一些软件信息)。
- 如果rpm命令不识别,可以使用apt命令(ubuntu) / yum命令(CentOS)安装。
ubuntu的安装命令为: apt install rpm
CentOS的安装命令为: yum install rpm
查询结果为空,表示该linux系统没有安装过java环境。
3)系统已安装JDK
如果系统已安装JDK,且不符合自己的要求,则通过以下命令卸载:
rpm -e --nodeps 要卸载的文件名 (文件名通过rpm -qa | grep java获取)
若卸载的文件有多个版本(rpm -qa | grep java命令返回多个结果),可以通过以下命令卸载。
rpm -e –allmatches 要卸载的文件名
yum卸载命令(CentOS)
yum remove *openjdk*
1.2 JDK1.8的下载
方式一:在线下载JDK安装包,下载到 /usr/local/目录下存jdk压缩包。
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
方式二:网盘下载
jdk:jdk-8u291-linux-x64.tar.gz
链接:https://pan.baidu.com/s/1iwBwwDkUetcQ6c_rioguyw
提取码:8u29
方式三:windows上通过官网下载JDK LINUX安装包(需要登录oracle账户)
1) 访问oracle官网,点击首页的java轮播图上的Get Java Now进入java下载页面。 也可以通过Java Downloads | Oracle直接进入java下载页面。
- 还可以通过 首页下方的Developers链接->Develop页面favorite language下的java链接->java页面Downloads链接下的Java SE链接 进入java下载页面。与上方操作进入的页面一样。
2)进入java下载页面后选择TAB页Java archive。
3)滚动鼠标到页面下方找到Java SE的版本列表,选择适合自己的版本进入。该页面链接Java Archive | Oracle。
4)在选定版本的下载页面选择适合自己操作系统的安装包下载,这里选择适合64位操作系统的tar包。
5)下载,需要登录oracle账号。
1.3 JDK1.8的安装
1) 创建安装目录
linux下安装软件一般都放在/usr目录下,在/usr目录下新建java目录。
2) 安装rz命令
使用rz命令上传jdk安装包到Linux的/usr/java目录,如果不识别rz命令,需要使用 sudo apt install lrzsz 命令安装。(也可以用xftp工具上传)
3) 上传JDK安装包
Linux默认终端Terminal不支持rz和sz命令,可以在远程终端Xshell/CRT中使用rz或者sz命令,或者直接在Xftp中传输文件。使用rz命令时会弹出选择对话框。
切换到root用户,使用rz命令选择上传文件。
4)解压JDK安装包
通过以下命令解压缩tar安装包。
tar -zxvf jdk-8u11-linux-x64.tar.gz
1.4 JDK1.8的配置
1)修改JDK环境变量
修改/etc/profile文件(命令:vi /etc/profile),在文件profile的最后一行加上以下配置,保存并退出(:wq!)。
- 注意:export后面的语句中不要出现空格,尤其是末尾。有空格时刷新配置文件会报错(-bash: export: ` ': not a valid identifier)。
export JAVA_HOME=/usr/java/jdk1.8.0_291
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export JAVA_PATH=$JAVA_HOME/bin:$JRE_HOME/bin
export PATH=$PATH:$JAVA_PATH
2)刷新配置文件
使用source命令刷新配置文件:
source /etc/profile
3)验证JDK是否安装成功
使用java -version命令查看jdk版本,如果有版本信息说明安装成功。
2、MySQL8的安装配置
ubuntu系统中可以通过在终端输入 sudo apt-get install mysql-server 直接安装服务端,也可以连客户端一起安装(sudo apt-get install mysql-server mysql-client)。本文主要介绍如何选择mysql版本下载并安装。
2.1 环境检查
1) 检查是否有mysql服务
在终端里面输入sudo netstat -tap | grep mysql 回车查看mysql安装端口情况,若没有显示结果表示没有安装mysql,若有显示结果表示已安装。已安装过mysql,若版本符合自己的要求一定要清理干净当前的mysql后再安装新版本。下图表示没有安装mysql。
2)检测是否已经安装了mysql
通过以下命令检测命令检测是否已经安装了mysql :service mysql status 。
通过 mysql -uroot -p,如果能够进入数据库,可以证明数据库是已经安装好的。
也可以根据 rpm -qa | grep mysql 查看安装的软件包名称,接着根据 rpm -ql 列出软件包安装的文件。
可以使用 rpm -qal |grep mysql 查看mysql所有安装包的文件存储位置。
- 还可以使用find查找所有包含mysql服务的文件路径,使用which命令通过 PATH环境变量查找可执行文件路径(用于查找指向这个命令所在的文件夹),使用whereis命令通过本地架构好的数据库索引查找。
3)查看mysql安装版本
如果已经安装了mysql,可以通过mysql --version 或 mysql -V 查看已安装mysql的版本号。
2.2 mysql 彻底卸载
如果已安装的mysql版本不符合要求,需要进行彻底的卸载。
1)在终端中查看MySQL的依赖项:dpkg --list|grep mysql
2)通过以下命令卸载
- 卸载命令: sudo apt-get remove mysql-common
- 卸载命令: sudo apt-get autoremove --purge mysql-server-8.0
- 清除残留数据: dpkg -l |grep ^rc|awk 'print $2' |sudo xargs dpkg -P,使用该命令时会提示是否删除数据目录,选择yes。
- 再次查看MySQL的剩余依赖项:dpkg --list|grep mysql
- 继续删除剩余依赖项直至查看剩余依赖项为空,如:sudo apt-get autoremove --purge mysql-apt-config,sudo apt-get autoremove --purge mysql-community-client-core ,sudo apt-get autoremove --purge mysql-community-server-core ,sudo apt-get autoremove --purge mysql-community-server-debug 。
2.3 下载 MySQL8 安装包
1) 查看ubuntu版本
使用cat /proc/version 命令查看ubuntu版本,可以看到ubuntu1~20.04字样。
2)MYSQL官网下载mysql8的安装包
方式一:本地下载完整安装包
去MYSQL官网地址:https://dev.mysql.com/downloads/mysql/ 下载mysql8的安装包,选择对应的系统为Ubuntu Linux,版本为Ubuntu Linux 20.04(x86,64-bit)版本,下载tar包。
进入下载页面点击下载
方式二:本地下载apt 配置安装包
首先访问 https://dev.mysql.com/downloads/repo/apt/ 获取配置包下载地址,点击download进入下载页面;点击 No thanks, just start my download. 进行下载。
方式三:服务器上直接下载apt 配置安装包
首先访问 https://dev.mysql.com/downloads/repo/apt/ 获取配置包下载地址,点击download进入下载页面;在 No thanks, just start my download.右键复制下载地址,这里复制到的地址为https://dev.mysql.com/get/mysql-apt-config_0.8.19-1_all.deb ,在服务器上通过wget命令下载 。
2.4 安装 MySQL8
下面以mysql apt 配置安装包进行mysql8的安装。
1) 创建安装目录
linux下安装软件一般都放在/usr目录下,在/usr目录下新建mysql目录。
2) 上传MYSQL8 apt 配置安装包
上传下载的mysql8 deb安装包到/usr/mysql目录下。可以在远程终端Xshell/CRT中使用rz命令,或者直接在Xftp中传输文件。
- 如果下载的是tar包,上传到服务器上后通过以下命令解压缩会得到一系列的.deb包,解压命令:tar -xvf mysql-server_8.0.20-2ubuntu20.04_amd64.deb-bundle.tar
3)安装MySQL8 APT配置安装包
输入以下命令进行安装:sudo dpkg -i mysql-apt-config_0.8.14-1_all.deb,如果是root用户则不用输入sudo。安装过程中提示选择安装版本,默认安装的就是8.0版本,所以通过上下键直接选择“OK”确认即可。
4)从MYSQL8存储库下载最新的软件包
从所有已配置的存储库(包括新添加的 MySQL 8存储库)中下载最新的软件包信息,命令:sudo apt update
5)安装MYSQL8
通过以下命令安装MYSQL8:sudo apt install mysql-server。
安装过程中会提示设置root密码。按照提示输入2次(密码和确认密码)即可;
输入之后会出现选择加密方式的提示界面,因默认的mysql8.0的加密方式与ubuntu18.04以上版本 不兼容,所以选择5.x的加密方式;建议选择下边的那个:
MYSQL8安装好之后,会创建如下目录:
- 数据库目录:/var/lib/mysql/。
- 配置文件:/usr/share/mysql-8.0(命令及配置文件),/etc/mysql(如my.cnf)。
- 相关命令:/usr/bin(mysqladmin、mysqldump等命令)和/usr/sbin。
- 启动脚本:/etc/init.d/mysql(启动脚本文件mysql的目录)。
6)验证MYSQL8是否安装正确
输入命令:mysql -uroot -p,然后输入上一步中设置的root用户密码,即可进入。
7)查看MySQL服务运行状态
- service mysql status
8)启动/停止MySQL服务
- 启动mysql服务:service mysql start
- 停止mysql服务:service mysql stop
2.5 MySQL8配置
通过以上的APT方式安装好之后,所有的服务、环境变量都会启动和配置好,无须手动配置。
1)查看 MySQL8 的端口
方式一:登录mysql后使用show命令查看
1)登录mysql
[root@localhost ~]# mysql -uroot -p
Enter password: 输入数据库密码;
2)使用show global variables like 'port'; 命令查看端口号,
mysql> show global variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
1 row in set (0.00 sec)
方式二:在/etc/mysql/my.cnf(Linux) 或者my.ini(Windows)中查看port。
方式三:通过linux命令查看
通过 netstat -anp | grep mysql 或 netstat -anp | grep 3306 命令或 netstat -nultp查看端口占用情况。
2)修改 MySQL8 的端口
使用vi/vim命令编辑/etc/mysql/my.cnf文件,添加port=2032,重启mysql,查看端口已变更为2032。
- 注意:需要把配置项放在[mysqld]下方,如果没有该项需添加。
3)MySQL8 常用配置
[mysqld]
#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id=1
#服务端口号 默认3306
port=3306
#mysql安装根目录(default /usr)
#basedir=/usr/local/mysql
#mysql数据文件所在位置
datadir=/var/lib/mysql
#pid
pid-file=/var/run/mysqld/mysqld.pid
#设置socke文件所在目录
socket=/var/lib/mysql/mysql.sock
#设置临时目录
#tmpdir=/tmp
# 用户
user=mysql
# 允许访问的IP网段
bind-address=0.0.0.0
# 跳过密码登录
#skip-grant-tables
#主要用于MyISAM存储引擎,如果多台服务器连接一个数据库则建议注释下面内容
#skip-external-locking
#只能用IP地址检查客户端的登录,不用主机名
#skip_name_resolve=1
#事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
#transaction_isolation=READ-COMMITTED
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server=utf8mb4
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server=utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
#init_connect='SET NAMES utf8mb4'
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
#最大连接数
max_connections=400
#最大错误连接数
max_connect_errors=1000
#TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp=true
#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet=128M
#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout=1800
wait_timeout=1800
#内部内存临时表的最大值 ,设置成128M。
#比如大数据量的group by ,order by时可能用到临时表,
#超过了这个值将写入磁盘,系统IO压力增大
tmp_table_size=134217728
max_heap_table_size=134217728
#禁用mysql的缓存查询结果集功能
#后期根据业务情况测试决定是否开启
#大部分情况下关闭下面两项
#query_cache_size = 0
#query_cache_type = 0
#数据库错误日志文件
#log-error=/var/log/mysqld.log
#慢查询sql日志设置
#slow_query_log=1
#slow_query_log_file=/var/log/mysqld_slow.log
#检查未使用到索引的sql
log_queries_not_using_indexes=1
#针对log_queries_not_using_indexes开启后,记录慢sql的频次、每分钟记录的条数
log_throttle_queries_not_using_indexes=5
#作为从库时生效,从库复制中如何有慢sql也将被记录
log_slow_slave_statements=1
#慢查询执行的秒数,必须达到此值可被记录
long_query_time=8
#检索的行数必须达到此值才可被记为慢查询
min_examined_row_limit=100
#mysql binlog日志文件保存的过期时间,过期后自动删除
#expire_logs_days=5
binlog_expire_logs_seconds=604800
2.6 开启root远程访问
1)登录mysql命令: mysql -uroot –p,输入密码登入。切换到系统数据库mysql:use mysql;
2)查看一下该数据库中的所有的表:show tables; 查看最后一张表“user”,看一下这张表有哪些字段:desc user;
3)查看user表的host,user字段信息:select host,user from user; 在这张表里,我们看到root用户仅仅只能在本地访问MySQL服务,所以我们要把它修改为“%”,意思是无论在哪里root账户都能够访问数据库服务:
4)修改user表中root用户的host信息:update user set host='%' where user='root';
5)开放root账户所有权限:GRANT ALL ON *.* TO 'root'@'%';
6)使各种权限设置立即生效:flush privileges;
- 注意,在真实的生产环境中,并不建议这么修改,因为安全风险太大。建议根据实际情况将root用户的host项修改为某个指定的ip地址,或仍然保持localhost最后一项设置。
另,给普通用户远程连接的权限:
- 1、授权 myuser 用户对指定库的所有表,所有权限并设置远程访问: GRANT ALL ON 指定库.* TO 'myuser'@'%';
- 2、更新 该 用户密码: ALTER USER 'myuser'@'%' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
- 3、刷新权限: FLUSH PRIVILEGES;
2.7 Ubuntu下打开3306防火墙
开启了root远程访问后,还需要打开防火墙3306端口,使其他机器可以访问。通过 sudo ufw status 命令查看防火墙状态,若为开启状态时,需把待开放的普通端口加入到防火墙规则中,开放普通端口命令:sudo ufw allow 端口。
防火墙相关名命令:
- 1)查看防火墙状态 sudo ufw status
- 2)开启防火墙 sudo ufw enable
- 3)关闭防火墙 sudo ufw disable
- 4)重启防火墙 sudo ufw reload
- 5)设置外来访问默认权限 sudo ufw default deny (//拒接所有外来访问,本机能正常访问外部)
防火墙端口相关名命令:
- 1)开放普通端口 sudo ufw allow 端口
- 2)关闭普通端口 sudo ufw delete allow 端口
- 3)开放规定协议的端口 sudo ufw allow 端口/tcp (//指定开放端口的tcp协议)
- 4)关闭指定协议端口 sudo ufw delete allow 端口/tcp
- 5)开放限定ip地址所有端口 sudo ufw allow from 192.168.121.1(指定ip为192.168.121.1的计算机操作所有端口)
- 6)开放限定ip地址指定端口 sudo ufw allow from 192.168.121.2 to any port 3306(// 开放指定ip为192.168.121.2的计算机访问本机的3306端口)
2.8 Centos7打开3306防火墙
Centos7 默认的防火墙是 firewall,替代了以前的 iptables,下面以Centos7为例。
1查看防火墙状态
systemctl status firewalld
2开启防火墙
systemctl start firewalld
3关闭防火墙
systemctl stop firewalld
4其他命令
重启防火墙,重启 firewall 服务 systemctl restart firewalld
查看 firewall 服务是否开机启动 systemctl is-enabled firewalld
开机时自动启动 firewall 服务 systemctl enable firewalld.service
开机时自动禁用 firewall 服务 systemctl disable firewalld.service
上面所说的 firewall 可以看成整个防火墙服务,而 firewall-cmd 可以看成是其中的一个功能,可用来管理端口。
1查看 firewall-cmd 状态
firewall-cmd --state
2 查看已打开的所有端口
firewall-cmd --zone=public --list-ports
3查看想开的端口是否已开
firewall-cmd --query-port=端口/tcp
4开启指定端口
firewall-cmd --zone=public --add-port=端口/tcp --permanent
5开启一个端口,–permanent 永久生效,没有此参数重启后失效
firewall-cmd --reload
必须重新加载才能生效
6关闭指定端口
firewall-cmd --zone=public --remove-port=端口/tcp --permanent
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
2.9 开机自动启动设置
加入到系统服务:chkconfig --add mysql
自动启动:chkconfig mysql on
查询列表:chkconfig
- 说明:都没关闭(off)时是没有自动启动。
3、TOMCAT的安装配置
3.1 tomcat9 的下载
1)打开tomcat官网,选择左侧的Tomcat 9,地址:https://tomcat.apache.org/download-90.cgi 。
2)找到9.0.54版本下的tar.gz,点击下载。也可以在tar.gz上右键复制链接地址后在服务器上通过wget命令下载。(下载地址 https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.54/bin/apache-tomcat-9.0.54.tar.gz)
3)上传tar包到服务器的opt/tomcat目录,或直接通过wget命令下载到服务器。(wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.54/bin/apache-tomcat-9.0.54.tar.gz)
3.2 tomcat9 的安装
在/opt/tomcat目录下解压tomcat 9,或在其他目录下解压完成后,将解压后的目录移动到/opt/tomcat目录下。命令(tar.gz格式):tar -zxvf apache-tomcat-9.0.54.tar.gz,解压后tomcat就安装好了。
3.3 tomcat9 的配置
1)修改启动脚本
进入tomcat的bin目录下:编辑startup.sh文件,添加java和tomcat的环境变量。
在最后一行之前(exec "$PRGDIR"/"$EXECUTABLE" start "$@"
)加入如下信息后保存退出(注意根据自己实际情况修改JAVA_HOME和TOMCAT_HOME):
#set java environment
export JAVA_HOME=/usr/java/jdk1.8.0_291
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:%JAVA_HOME/lib:%JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
#tomcat
export TOMCAT_HOME=/opt/tomcat/apache-tomcat-9.0.54
2)修改关闭脚本shutdown.sh
进入tomcat的bin目录下:编辑shutdown.sh文件,添加java和tomcat的环境变量。
在最后一行之前(exec "$PRGDIR"/"$EXECUTABLE" stop "$@"
)加入如下信息后(与启动脚本中添加的内容相同)保存退出(注意根据自己实际情况修改JAVA_HOME和TOMCAT_HOME):
#set java environment
export JAVA_HOME=/usr/java/jdk1.8.0_291
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:%JAVA_HOME/lib:%JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
#tomcat
export TOMCAT_HOME=/opt/tomcat/apache-tomcat-9.0.54
3.4 tomcat9 的启动
1)启动tomcat
进入tomcat的bin目录下,使用命令 ./startup.sh 启动Tomcat。也可以通过 nohup ./startup.sh & 命令在系统后台不挂断地启动(默认情况下,会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中)。
- nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。最好使用nohup命令启动tomcat服务。
2)查看日志
进入tomcat的日志目录,通过tail命令查看日志信息。
3)查看端口或进程
- 查看端口命令netstat -naptl
- 查看进程命令ps -ef |grep 8080/tcp 或 ps -ef |grep 8080 或 ps -ef |grep tomcat 。
4)通过浏览器访问
浏览器地址栏输入IP地址:端口号的方式查看Tomcat的默认页面。
3.5 tomcat9 的停止
方式一:通过shutdown命令停止服务
进入tomcat的bin目录下,使用命令./shutdown.sh 启动Tomcat。查看tomcat进程,可以看到服务已终止。
方式二:通过kill命令停止服务
通过 kill -9 进程号 命令结束服务进程。
3.5 ubuntu 防火墙开启tomcat端口
如果tomcat的端口不在防火墙启用规则中,需添加进去,执行添加8080端口到防火墙规则命令:sudo ufw allow 8080,然后通过sudo ufo status 可以查看到8080 端口已开放。
以上是关于Linux下JAVA WEB服务器的搭建一(JDKMYSQLTOMCAT)的主要内容,如果未能解决你的问题,请参考以下文章