对于云服务器而言,若要部署javaweb,则tomcat是javaweb工程的主要载体,通过该服务可以使自己和其他用户访问自己设计好的网页。另外,mysql作为一款应用最广泛的数据库软件,也是javaweb最不可或缺的组件之一。对于一个到手的全新centos服务器,如何进行基础的部署?
一、部署tomcat
1、安装jdk。jdk是tomcat的前置必备。先查看是否安装了jdk。
java -version
然后采用yum安装的方式安装jdk。这里使用openjdk1.8.0这个版本,测试各种情况下该版本没有出现不兼容情况。
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
安装完成后,在etc/profile这个文件最后加上java的环境变量。
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/jre/lib/ext
export PATH JAVA_HOME CLASSPATH
然后执行以下命令使环境变量生效。
source /etc/profile
2、安装tomcat。这里仍然采用yum安装。先查看是否安装了tomcat:
systemctl status tomcat
若提示服务未被发现,则未安装。接下来进行安装:
yum -y install tomcat
tomcat的默认安装路径是/usr/share/tomcat。可以看到该目录下的文件:
[root@centos /]# cd /usr/share/tomcat
[root@centos tomcat]# ls
bin conf lib logs temp webapps work
其中bin是tomcat的配置文件,与手动安装不同,yum安装的tomcat不需要在bin目录下通过startup.sh或shutdown.sh来进行服务的开关,只需要执行以下命令即可。
systemctl start tomcat
而conf文件下,最重要的是server.xml文件,用户对tomcat的基本配置修改通过更改该文件内容完成。例如更改tomcat默认使用的8080端口号,找到这个代码段,把第一个“8080”改成自己想要的端口即可,第二个8080可不更改。
-->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- A "Connector" using the shared thread pool-->
<!--
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
若要修改tomcat的默认工程目录,在以下代码中间插入一行:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="test1" debug="0" reloadable="true"/> #这里插入一行代码
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
context path指定为" ",即默认在webapps的目录下,docbase="test1",即在webapps的test1为默认工程。每次更改完,要重新启动tomcat使配置文件生效:
systemctl restart tomcat
tomcat下的logs文件保存的tomcat的各种日志信息。其中,catalina.out是tomcat服务的运行日志;localhost_access_log.2000-01-01.txt这类的日志记录了你的tomcat工程的请求收发情况,特别是当调试mysql的时候,查看该日志可以更快定位错误位置。例如,日志中有以下代码:
10.0.2.2 - - [04/Sep/2020:05:37:30 +0000] "POST /UserServlet?action=checkUsername&username=root&nocache=1693805844356 HTTP/1.1" 500 1610
即可知,在04/Sep/2020:05:37:30这个时间点,tomcat发起了一次ajax的post类型http请求,请求目标函数在UserServlet这个包下,名称为checkUsername,但返回值为500(Ajax请求成功时为200),说明,checkUsername这个函数的运行遇到了错误,例如与mysql交互超时等等。
tomcat下的webapps这个文件是你的工程运行的主文件夹,默认里面什么都没有。若你要测试tomcat是否正确运行,可以写一个Helloworld的html代码放在目录下,然后按上面更改完context path和docbase,即可在浏览器输入localhost:8080查看是否正确显示界面文件。每次重启完tomcat,需要等待一段时间才能正确刷新网页。
若浏览器显示不出来,看一下是否设置的是8080端口,进行浏览器访问的主机是否可以ping通tomcat部署的服务器,tomcat工程的默认位置以及工程文件是否存在语法问题。若以上均检查过了没问题,可能是防火墙未放行。查看防火墙状态:
sudo systemctl status firewalld
若状态为running,则可以关闭防火墙(若是自己购买的云服务器,则不推荐,很容易被他人盗用作为挖矿机),或让防火墙放行8080端口:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
然后刷新防火墙:
firewall-cmd --reload
再查看8080端口是否放行:
firewall-cmd --list-port
最后,给tomcat添加开机自启动,即可完成tomcat的部署。
systemctl enable tomcat
二、部署maiadb
mariadb和mysql用法和功能完全相同,但是配置更加简单。仍然使用yum安装。
centos7中默认有mariadb的一个包,先将其删除避免版本冲突。
rpm -qa | grep mariadb
可以看到这么一个包:mariadb-libs-5.5.68-1.el7.x86_64。将其卸载。
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
--nodeps
然后可以开始用yum安装mariadb及其server服务。
yum install mariadb-server mariadb -y
等待完成后,启动并添加开机自启:
systemctl start mariadb
systemctl enable mariadb
然后输入mysql -V查看是否安装成功,出现以下信息即可:
[root@centos /]# mysql -V
mysql Ver 15.1 Distrib 5.5.68-MariaDB, for Linux (x86_64) using readline 5.1
接下来设置mysql的默认密码:
mysqladmin -u root -p password yourpassword
这里的yourpassword改成你自己要设置的密码即可。执行该命令,mysq会让你输入原始密码,安装完成后默认没有密码,直接回车即可。
接下来登录到mysql:
mysql -uroot -pyourpassword
为了让tomcat能通过jdbc远程访问到mysql数据库,还需要进行如下配置:
use mysql;
delete from user where password="";
update user set host="%";
flush privileges;
mysql的常用命令有:(注意每条命令必须以分号 ; 结束),且centos下的mysql区分大小写,注意不要写错。
mysql -uroot -pyourpassword #登录mysql数据库
show databases; #查看已创建的数据库
create database test1; #创建名为test1的数据库
use test1; #进到test1的目录中,接下来可对该数据库进行操作
show tables; #查看数据库下已创建的表
desc table1; #查看名为table1的表的属性
#创建一个名为userinfo的表,第一行表示创建一个UserID列,属性为int(11),
not null表示不可为空,auto_increment表示自增,unique表示该列不可出现相同数据,
最后的'id'为备注,随便填即可,接下来的每个列都进行相关定义,
最后一行的primary key定义UserID这一列为主键。
CREATE TABLE `userinfo`(
`UserID` INT(11) NOT NULL AUTO_INCREMENT UNIQUE COMMENT 'id',
`Username` VARCHAR(20) NOT NULL COMMENT 'username',
`Email` VARCHAR(20) NOT NULL COMMENT 'email',
`Passwd` VARCHAR(20) NOT NULL COMMENT 'password',
`Tel` VARCHAR(15) COMMENT 'teliphone',
`CreatDate` DATE NOT NULL COMMENT 'date',
`Comments` VARCHAR(200) COMMENT 'comment',
PRIMARY KEY (`UserID`)
);
select * from table1; #查看table1表下的所有数据,把*换成列名称可查看某一列的数据
最后,若开启了防火墙,也需要放行mysql默认的3306端口:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
三、问题处理
注意部署时需要关闭selinux,该命令为临时关闭。
setenforce 0
服务器环境下建议不要永久关闭selinux,造成安全性问题。若要关闭,编辑/etc/selinux/config文件,把SELINUX这一项改为disabled。
如果tomcat工程始终连不上mysql,查看系统下tomcat的布尔值:
getsebool -a|grep tomcat
若返回:
tomcat_can_network_connect_db --> off
tomcat_read_rpm_db --> off
tomcat_use_execmem --> off
则需要更改这几个值。
setsebool tomcat_can_network_connect_db=1
setsebool tomcat_read_rpm_db=1
setsebool tomcat_use_execmem=1