爱码士

搭建 Java Web 部署环境

发表于 2018-11-01   |  分类于 默认   |  阅读数:   |  评论数:

一、查看linux系统版本

  1. [root@VM_0_14_centos ~]# cat /etc/redhat-release
  2. CentOS Linux release 7.2.1511 (Core)
  3. [root@VM_0_14_centos ~]# uname -a
  4. Linux VM_0_14_centos 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

二、安装 JDK 8

1、查看一下 yum 源里面的 JDK:

  1. yum list java*

2、选择适合本机的JDK,并安装:

  1. yum install java-1.8.0-openjdk* -y

3、安装完成后,查看是否安装成功:

  1. java -version

三、安装 Tomcat 8

Tomcat 是一个应用服务器,是开发和调试 jsp 程序的首选,可以利用它来响应 HTML 页面的访问请求。

1、进入到要存放安装包的位置

  1. cd /home/

2、到官网找到 Tomcat 的下载链接,并下载到服务器中, 这里提供了一个快速下载 Tomcat 的地址:

  1. wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.tar.gz

3、解压这个文件夹:

  1. tar -zxvf apache-tomcat-8.5.34.tar.gz

4、重命名这个文件:

  1. mv apache-tomcat-8.5.34 tomcat8

5、进入 bin 文件夹

  1. cd /home/tomcat8/bin

6、给这个文件夹下的所有 shell 脚本授予权限:

  1. chmod 777 *.sh

7、开启tomcat服务:

  1. ./startup.sh

四、安装MySQL5.7

1.进入到要存放安装包的位置

  1. cd /home/

2.查看系统中是否已安装 MySQL 服务,以下提供两种方式:

  1. rpm -qa | grep mysql
  2. yum list installed | grep mysql

3.如果已安装则删除 MySQL 及其依赖的包:

  1. yum -y remove mysql-libs.x86_64

4.下载 mysql57-community-release-el7-8.noarch.rpm 的 YUM 源:

  1. wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm

5.安装 mysql57-community-release-el7-8.noarch.rpm:

  1. rpm -ivh mysql57-community-release-el7-8.noarch.rpm

安装完后,得到如下两个包:

  1. mysql-community.repo
  2. mysql-community-source.repo

6.安装 MySQL,出现提示的话,一路 Y 到底

  1. yum install mysql-server

安装完毕后,运行mysql,然后在 /var/log/mysqld.log 文件中会自动生成一个随机的密码,我们需要先取得这个随机密码,以用于登录 MySQL 服务端:

  1. service mysqld start
  2. grep "password" /var/log/mysqld.log

将会返回如下内容,末尾字符串就是密码,把它复制下来:

  1. 2018-10-31T04:36:44.722244Z 1 [Note] A temporary password is generated for root@localhost: kkPUi2tnpk%y

7.登录到 MySQL 服务端并更新用户 root 的密码:

  1. mysql -u root -p
  2. kkPUi2tnpk%y

然后更改密码

注意:由于 MySQL5.7 采用了密码强度验证插件 validate_password,故此我们需要设置一个有一定强度的密码;

  1. SET PASSWORD = PASSWORD('your new password');
  2. ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
  3. flush privileges;

设置用户 root 可以在任意 IP 下被访问:

  1. grant all privileges on *.* to root@"%" identified by "new password";

设置用户 root 可以在本地被访问:

  1. grant all privileges on *.* to root@"localhost" identified by "new password";

刷新权限使之生效:

  1. flush privileges;

OK,输入 exit 后用新密码再次登录看看吧!

注意:

如果用远程工具还是连接不上,试试用 iptables -F 命令来清除防火墙中链中的规则。

如果使用的是云服务器,需要在安全组中配置对应的默认端口3306.
8.MySQL控制命令:启动、停止、重启、查看状态

  1. service mysqld start
  2. service mysqld stop
  3. service mysqld restart
  4. service mysqld status
  5. systemctl start mysqld
  6. service mysqld stop
  7. service mysqld restart
  8. systemctl status mysqld

9.设置 MySQL 的字符集为 UTF-8:

打开 /etc 目录下的 my.cnf 文件(此文件是 MySQL 的主配置文件):

  1. vim /etc/my.cnf

在 [mysqld] 前添加如下代码:

  1. [client]
  2. default-character-set=utf8

在 [mysqld] 后添加如下代码:

  1. character_set_server=utf8

重启mysql后再登录,看看字符集,6个utf8就算OK

  1. show variables like '%character%';

注意:

当前在mysql执行如下查询的时候:

  1. select * from `user` group by `sex`;

报错信息如下:

  1. [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'i

使用如下语句查询可知

  1. select @@sql_mode;

mysql5.7默认设置了

  1. sql_mode=only_full_group_by

only_full_group_by :使用这个就是使用和oracle一样的group 规则, select的列都要在group中,或者本身是聚合列(SUM,AVG,MAX,MIN) 才行,其实这个配置目前个人感觉和distinct差不多的,所以去掉就好

解决方式,直接在mysql配置文件的[mysqld]下添加如下代码:

  1. sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

到此mysql配置文件的完整配置如下:

  1. # For advice on how to change settings please see
  2. # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
  3. [client]
  4. default-character-set=utf8
  5. [mysqld]
  6. character_set_server=utf8
  7. sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  8. #
  9. # Remove leading # and set to the amount of RAM for the most important data
  10. # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
  11. # innodb_buffer_pool_size = 128M
  12. #
  13. # Remove leading # to turn on a very important data integrity option: logging
  14. # changes to the binary log between backups.
  15. # log_bin
  16. #
  17. # Remove leading # to set options mainly useful for reporting servers.
  18. # The server defaults are faster for transactions and fast SELECTs.
  19. # Adjust sizes as needed, experiment to find the optimal values.
  20. # join_buffer_size = 128M
  21. # sort_buffer_size = 2M
  22. # read_rnd_buffer_size = 2M
  23. datadir=/var/lib/mysql
  24. socket=/var/lib/mysql/mysql.sock
  25. # Disabling symbolic-links is recommended to prevent assorted security risks
  26. symbolic-links=0
  27. log-error=/var/log/mysqld.log
  28. pid-file=/var/run/mysqld/mysqld.pid

10.查看指定的数据库中指定数据表的字符集,如查看 mysql 数据库中 servers 表的字符集:

  1. show table status from mysql like '%servers%';

查看指定数据库中指定表的全部列的字符集,如查看 mysql 数据库中 servers 表的全部的列的字符集:

  1. show full columns from servers;
  1. 忘记密码时,可用如下方法重置:
  1. service mysqld stop
  2. mysqld_safe --user=root --skip-grant-tables --skip-networking &
  3. mysql -u root

进入MySQL后

  1. use mysql;
  2. update user set password=password("new_password") where user="root";
  3. flush privileges;

12.一些文件的存放目录

配置文件

  1. vim /etc/my.cnf

存放数据库文件的目录

  1. cd /var/lib/mysql

日志记录文件

  1. vim /var/log/ mysqld.log

服务启动脚本

  1. /usr/lib/systemd/system/mysqld.service

socket文件

  1. /var/run/mysqld/mysqld.pid

13.MySQL 采用的 TCP/IP 协议传输数据,默认端口号为 3306,我们可以通过如下命令查看:

  1. lsof -i:3306

至此,恭喜!您已经掌握如何搭建 Java Web 开发环境的方法。

四、Linux系统上传下载命令rz和sz

1、安装方法

  1. yum install lrzsz -y

五、SSL证书安装指引

Tomcat 证书部署

1 获取证书

如果申请证书时有填写私钥密码,下载可获得Tomcat文件夹,其中有密钥库 www.domain.com.jks;
如果没有填写私钥密码,证书下载包的Tomcat文件夹中包括密钥库文件www.domain.com.jks 与密钥库密码文件keystorePass.txt
当用户选择粘贴CSR时,不提供Tomcat证书文件的下载,需要用户手动转换格式生成,操作方法如下:

可以通过 Nginx 文件夹内证书文件和私钥文件生成jks格式证书
转换工具:https://www.trustasia.com/tools/cert-converter.htm
使用工具时注意填写 密钥库密码 ,安装证书时配置文件中需要填写。

2 证书安装

配置SSL连接器,将www.domain.com.jks文件存放到conf目录下,然后配置同目录下的server.xml文件:

  1. <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
  2. maxThreads="150" scheme="https" secure="true"
  3. keystoreFile="conf/www.domain.com.jks"
  4. keystorePass="changeit"
  5. clientAuth="false" sslProtocol="TLS" />

注:

配置文件参数说明
clientAuth如果设为true,表示Tomcat要求所有的SSL客户出示安全证书,对SSL客户进行身份验证
keystoreFile指定keystore文件的存放位置,可以指定绝对路径,也可以指定相对于 (Tomcat安装目录)环境变量的相对路径。如果此项没有设定,默认情况下,Tomcat将从当前操作系统用户的用户目录下读取名为 “.keystore”的文件。
keystorePass密钥库密码,指定keystore的密码。(如果申请证书时有填写私钥密码,密钥库密码即私钥密码,否则填写密钥库密码文件中的密码)
sslProtocol指定套接字(Socket)使用的加密/解密协议,默认值为TLS

3.http自动跳转https的安全配置

到conf目录下的web.xml。在</welcome-file-list>后面,</web-app>,也就是倒数第二段里,加上这样一段

  1. <login-config>
  2. <!-- Authorization setting for SSL -->
  3. <auth-method>CLIENT-CERT</auth-method>
  4. <realm-name>Client Cert Users-only Area</realm-name>
  5. </login-config>
  6. <security-constraint>
  7. <!-- Authorization setting for SSL -->
  8. <web-resource-collection>
  9. <web-resource-name>SSL</web-resource-name>
  10. <url-pattern>/*</url-pattern>
  11. </web-resource-collection>
  12. <user-data-constraint>
  13. <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  14. </user-data-constraint>
  15. </security-constraint>

这步目的是让非ssl的connector跳转到ssl的connector去。所以还需要前往server.xml进行配置:

  1. <Connector port="8080" protocol="HTTP/1.1"
  2. connectionTimeout="20000"
  3. redirectPort="443" />

redirectPort改成ssl的connector的端口443,重启后便会生效。

分享