JDK 、Tomcat、 Mysql, 安装、配置、优化

一、 JDK Tomcat 安装

1、环境准备

  1. [root@abcdocker ~]# /etc/init.d/iptables stop
  2. [root@abcdocker ~]# getenforce

2、安装JDK Tomcat

  1. 下载
    (JDK) http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
    (Tomcat) http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.81/bin/apache-tomcat-7.0.81.tar.gz

  2. 安装

# mkdir /usr/java
# cp jdk-8u144-linux-x64.tar.gz apache-tomcat-7.0.81.tar.gz /usr/java
# tar –zxvf dk-8u144-linux-x64.tar.gz
# tar –zxvf apache-tomcat-7.0.81.tar.gz
# mv jdk1.8.222.1  jdk1.8
# mv apache-tomcat-7.0.81.tar.gz  tomcat7

3.配置环境变量

# vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8
export JRE_HOME=$JAVA_HOME/jre
export CLASS_PATH=./$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
export CATALINE_HOME=/usr/java/tomcat7
“export JAVA_HOME JRE_HOME CLASS_PATH PATH CATALINE_HOME”
# source /etc/profile

4. 看到如下信息,java环境配置成功

#java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

5. Tomcat 测试

# cd /tomcat7/bin
# 启动startup.sh
# 停止shutdown.sh

访问路径:http://ip:8080 (默认8080端口)

二、 Mysql安装(RHEL7)

从MySQL5.7.4起,以RPM包的方式安装后的MySQL的部署默认是安全的,并且有这些特点:
在大多数情况下,你只需要安装MySQL-server和MySQL-client安装包就可以安装上一个标准功能的MySQL。对于一个标准安装来说,其他的安装包不是必需的。
MySQL的安装程序会创建一个单独的root账户:’root’@’localhost’,并自动为这个账户生成一个初始的随机密码,并将此密码标志为已过期。
对于MySQL5.7.6和更高的版本来说,初始的随机root密码是被写入错误日志的。对于MySQL5.7.4和5.7.5版本来说,密码是被写入以HOME环境变量命名的目录中的.mysql_secret文件中的。根据操作系统,可以使用诸如sudo这样的命令让HOME环境变量的值指向root系统用户的home目录。
不创建MySQL匿名账户。
不创建测试数据库。
重设密码后,如果有创建.mysql_secret文件就把它删除;否则,在你执行mysql_secure_installation这条命令的时候,可能会再次看到那个文件和过期的root密码成为确认安全部署的一部分。

1、 下载安装

https://dev.mysql.com/downloads/mysql/

# tar xvf mysql-8.0.2-0.1.dmr.el7.x86_64.rpm-bundle.tar
#rpm –ivh mysql-community-common、libs、client、devel、server(顺序安装)(--force --nodeps)
//出现冲突(mysql-common文件和mariadb-libs:yum remove mysql-libs(删除))

2、 启动

Systemctl start mysqld   //启动服务
Systemctl status mysqld  //查看壮态
Systemctl enable mysqld  //开机启动

3、 登录

#Cat /var/log/mysqld.log|grep password  //查的默认密码
#Mysql –u root –p “password”
>Set password=password(“Jsz1987%”)    //修改密码为Jsz1987%
>ALTER USER "root"@"localhost" IDENTIFIED  BY "Jsz1987%";//8.0以后修改方法

4、 远程连接

>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Jsz1987%' WITH GRANT OPTION;
>Flush privileges;      //刷新权限
#iptables –F         //关闭防火墙  iptables –vnL //查看

5、忘记密码或密码错误或修改密码

#vim /etc/my.cnf
在[mysqld]后面任意一行添加“skip-grant-tables”
#systemctl restart mysqld
#mysql
use mysql;
update mysql.user set authentication_string=password('root') where user='root';
flush privileges;
去掉:skip-grant-tables

三、 Tomcat配置

以下使用的Linux版本为: Redhat Enterprise Linux 7.0 x86_64,Tomcat版本为tomcat-7.0.54.
1. 配置web管理帐号
修改文件conf/tomcat-users.xml,在元素中添加帐号密码,需要指定角色

   # vi /usr/local/tomcat/server/conf/tomcat-users.xml
          <tomcat-users>
             <user name="admin" password="admin" roles="admin-gui,manager-gui" />
  1. 配置web访问端口
    进入cd/usr/local/apache-tomcat-7.0.42/conf/目录下,打开server.xml(sudo vim server.xml)将端口8080 修改为8081。需要重新启动Tomcat服务生效.
   # vi /usr/local/ apache-tomcat-7.0.42/conf/server.xml
           <Connector port="8080"protocol="HTTP/1.1"  
              connectionTimeout="20000"  
               redirectPort="8443"/>  
  1. 虚拟主机的配置
    指定虚拟主机名,修改conf/server.xml,添加元素.

    <host name="hostname.domainname" appBase="/webapps">
    <Context path="/webapp" docBase="/webapps/webapp"/>
    </host>
    例:
    <host name="www.163.com" appBase="/webapps">
    </host>
    <host name="mail.163.com" appBase="/mailapps">
    </host>

    须设置DNS解析(host文件或DNS系统).
  2. web应用和虚拟目录的映射
    可以修改xml配置文件的元素来设置web应用和虚拟目录的映射.
    •conf/server.xml //在元素下添加,需要重新启动Tomcat服务生效,不建议使用.
    •conf/context.xml //添加元素所有web应用有效.
    •conf/[enginename]/[hostname]/context.xml.default //[enginename]
    一般是Catalina,主机[hostname]的所有web应用有效.
    •conf/[enginename]/[hostname]/ //在目录下任意建一个文件(扩展名xml),文件名即为虚拟目录名.多级目录使用#分割.
    //缺省值web应用目录可以定义为ROOT.xml,添加,需重新启动Tomcat服务器.
    •META-INF/context.xml //可以将web应用放在webapps目录下让Tomcat服务器自动映射,适用开发环境,实际运用环境中不用自动映射。
    如没有修改配置文件,web应用目录为ROOT时则为默认web应用。
  3. 配置https安全连接(ssl加密连接)
    https连接需要用到数字证书与数字签名(MD5算法)
    网站https连接首先需要申请数字证书,配置加密连接器,浏览器安装证书.
    •使用java的工具keytool产生数字证书
    # keytool -genkey -alias tomcat -keyalg RSA
    生成文件.keystore
    注意:CN为主机名称,本机可用localhost
    •将文件.keystore放到Tomcat服务器的conf目录下
    # cp .keystore /usr/local/tomcat/server/conf/
    •修改conf/server.xml文件,修改加密连接器,添加keystoreFile与keystorePass
[root@server1 ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):<–初次运行直接回车
OK, successfully used password, moving on…
Setting the root password ensures that nobody can log into the MySQ
root user without the proper authorisation.
Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码
Password updated successfully!
Reloading privilege tables..
… Success!
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] <– 是否删除匿名用户,生产环境建议删除,所以直接回车
… Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] <–是否禁止root远程登录,根据自己的需求选择Y/n并回车,建议禁止
… Success!
By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] <– 是否删除test数据库,直接回车
- Dropping test database…
… Success!
- Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] <– 是否重新加载权限表,直接回车
… Success!
Cleaning up…
All done! If you've completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
[root@server1 ~]#

四、 Tomcat性能优化

1、内存优化:
优化内存,主要是在bin/catalina.bat或bin/catalina.sh 配置文件中进行。linux上,在catalina.sh中添加:
JAVA_OPTS=”-server -Xms1G -Xmx2G -Xss256K -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:MaxPermSize=256m -XX:PermSize=128M -XX:MaxPermSize=256M”
其中:
• -server:启用jdk的server版本。
• -Xms:虚拟机初始化时的最小堆内存。
• -Xmx:虚拟机可使用的最大堆内存。 #-Xms与-Xmx设成一样的值,避免JVM因为频繁的GC导致性能大起大落
(上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。)
• -XX:PermSize:设置非堆内存初始值,默认是物理内存的1/64。
• -XX:MaxNewSize:新生代占整个堆内存的最大值。
• -XX:MaxPermSize:Perm(俗称方法区)占整个堆内存的最大值,也称内存最大永久保留区域。
1)错误提示:java.lang.OutOfMemoryError:Java heap space
Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错误,Outof Memory(系统内存不足)的异常,从而导致客户端显示500错误,一般调整Tomcat的-Xms和-Xmx即可解决问题,通常将-Xms和-Xmx设置成一样,堆的最大值设置为物理可用内存的最大值的80%。
set JAVA_OPTS=-Xms512m-Xmx512m
2)错误提示:java.lang.OutOfMemoryError: PermGenspace
PermGenspace的全称是Permanent Generationspace,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGenspace中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGenspace进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行precompile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。解决方法:
setJAVA_OPTS=-XX:PermSize=128M
3)在使用-Xms和-Xmx调整tomcat的堆大小时,还需要考虑垃圾回收机制。如果系统花费很多的时间收集垃圾,请减小堆大小。一次完全的垃圾收集应该不超过3-5 秒。如果垃圾收集成为瓶颈,那么需要指定代的大小,检查垃圾收集的详细输出,研究垃圾收集参数对性能的影响。一般说来,你应该使用物理内存的 80% 作为堆大小。当增加处理器时,记得增加内存,因为分配可以并行进行,而垃圾收集不是并行的。
2、连接数优化:
#优化连接数,主要是在conf/server.xml配置文件中进行修改。
2.1、优化线程数
找到Connectorport=”8080” protocol=”HTTP/1.1”,增加maxThreads和acceptCount属性(使acceptCount大于等于maxThreads),如下:

yum -y install apr apr-devel

进入tomcat/bin目录,比如:

cd /opt/local/tomcat/bin/
tar xzfv tomcat-native.tar.gz
cd tomcat-native-1.1.32-src/jni/native
./configure --with-apr=/usr/bin/apr-1-config
make && make install

注意最新版本的tomcat自带tomcat-native.war.gz,不过其版本相对于yum安装的apr过高,configure的时候会报错。

解决:yum remove apr apr-devel –y,卸载yum安装的apr和apr-devel,下载最新版本的apr源码包,编译安装;或者下载低版本的tomcat-native编译安装
安装成功后还需要对tomcat设置环境变量,方法是在catalina.sh文件中增加1行:

CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"
#apr下载地址:http://apr.apache.org/download.cgi
#tomcat-native下载地址:http://tomcat.apache.org/download-native.cgi

修改8080端对应的conf/server.xml
protocol="org.apache.coyote.http11.Http11AprProtocol"
<Connector executor="tomcatThreadPool"
port="8080"
protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="20000"
enableLookups="false"
redirectPort="8443"
URIEncoding="UTF-8" />
PS:启动以后查看日志 显示如下表示开启 apr 模式
Sep 19, 2016 3:46:21 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-apr-8081"]

五、Java性能调优工具

为了能准确获得程序的性能信息,需要使用各种辅助工具。以下主要介绍了Linux上关于Java的系统性能分析工具,掌握这些工具,对于性能瓶颈定位、系统故障排查都有帮助。

1、top命令
[root@localhost ~]# top
top - 10:00:05 up 4 days, 22:16,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 211 total,   1 running, 210 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8064684k total,  3277888k used,  4786796k free,   202912k buffers
Swap:  8142844k total,        0k used,  8142844k free,  2503844k cached
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                          
18730 root      20   0 15196 1220  840 R  0.3  0.0   0:00.06 top                                                                                                                               
    1 root      20   0 19408 1576 1252 S  0.0  0.0   0:00.87 init                                                                                                                              
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.08 kthreadd                                                                                                                          
    3 root      20   0     0    0    0 S  0.0  0.0   0:00.31 ksoftirqd/0                                                                                                                       
    5 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 kworker/0:0H                                                                                                                      
7 root      RT   0     0    0    0 S  0.0  0.0   0:00.03 migration/

【释义】
第一行:top - 10:00:05 up 4 days, 22:16, 1 user, load average: 0.00, 0.01, 0.05
任务队列信息:与uptime命令执行结果一样。
10:00:05 up 4 days, 22:16 1 user load average: 0.00, 0.01, 0.05
当前系统时间 系统运行时间,格式为时:分 当前登录用户数 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二行:Tasks: 211 total, 1 running, 210 sleeping, 0 stopped, 0 zombie
进程统计信息:
211 total 1 running 210 sleeping 0 stopped 0 zombie
进程总数 正在运行的进程数 睡眠的进程数 停止的进程数 僵尸进程数
第三行:Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
0.0%us 0.0%sy 0.0%ni 100.0%id 0.0%wa 0.0%hi 0.0%si 0.0%st
用户空间CPU占用率 内核空间CPU占用率 用户进程空间内改变过优先级的进程CPU占用率 空闲CPU占用率 等待输入输出的CPU时间百分比 硬件中断请求 软件中断请求 Steal Time
CPU统计信息:
第四、五行:Mem: 8064684k total, 3277888k used, 4786796k free, 202912k buffers
Swap: 8142844k total, 0k used, 8142844k free, 2503844k cached
内存信息:
Mem 8064684k total 3277888k used 4786796k free 202912k buffers
物理内存总量 已使用的物理内存 空闲物理内存 内核缓存使用量
Swap 8142844k total 0k used 8142844k free 2503844k cached
交换区总量 使用的交换区总量 空闲交换区大小 缓存交换区大小
第六行:PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
进程信息:
PID USER PR NI VIRT RES
进程id 进程所有者的用户id 优先级 nice值。负值表示高优先级,正值表示低优先级 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR S %CPU %MEM TIME+ COMMAND
共享内存大小,单位kb 进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程 上次更新到现在的CPU时间占用百分比 进程使用的物理内存百分比 进程使用的CPU时间总计,单位1/100秒 命令名/命令行
还有其他的一些参数,这里没有列出,了解请查看《Java程序性能优化-让你的Java程序更快、更稳定》这本书的第300页。
另外,top命令还有一些比较使用的交互命令:
f o h k q c M P T 数字1
可以进行列的选择 可以更改列的显示顺序 显示帮组信息 终止一个进程 退出程序 切换显示命令名称和完整命令行 根据驻留内存大小进行排序 根据CPU使用百分比大小进行排序 根据时间/累积时间进行排序 显示所有CPU负载情况

注意:使用top命令可以从宏观上观察系统各个进程对CPU的占用情况以及内存使用情况

2、sar命令
3、vmstat命令
4、iostat命令
5、pidstat命令

猜你喜欢

转载自blog.csdn.net/lurryjing1987/article/details/78153635