搭建 Java Web 部署环境

原创
2018/09/12 21:13
阅读数 52

一、查看linux系统版本

[root@VM_0_14_centos ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[root@VM_0_14_centos ~]# uname -a
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:

yum list java*

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

yum install java-1.8.0-openjdk* -y

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

java -version

三、安装 Tomcat 8

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

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

cd /home/

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

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

3、解压这个文件夹:

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

4、重命名这个文件:

mv apache-tomcat-8.5.34 tomcat8

5、进入 bin 文件夹

cd /home/tomcat8/bin

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

chmod 777 *.sh

7、开启tomcat服务:

./startup.sh

四、安装MySQL5.7

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

cd /home/

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

rpm -qa | grep mysql
yum list installed | grep mysql

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

yum -y remove mysql-libs.x86_64

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

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

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

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

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

mysql-community.repo
mysql-community-source.repo

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

yum install mysql-server

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

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

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

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

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

mysql -u root -p
kkPUi2tnpk%y

然后更改密码

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

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

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

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

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

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

刷新权限使之生效:

flush privileges;

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

注意:

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

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

service mysqld start
service mysqld stop
service mysqld restart
service mysqld status

systemctl start mysqld
service mysqld stop
service mysqld restart
systemctl status mysqld

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

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

vim /etc/my.cnf

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

[client]
default-character-set=utf8

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

character_set_server=utf8

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

show variables like '%character%';

注意:

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

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

报错信息如下:

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

使用如下语句查询可知

select @@sql_mode;

mysql5.7默认设置了

sql_mode=only_full_group_by

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

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

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配置文件的完整配置如下:

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[client]
default-character-set=utf8
[mysqld]
character_set_server=utf8
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

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

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

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

show full columns from servers;

11. 忘记密码时,可用如下方法重置:

service mysqld stop
mysqld_safe --user=root --skip-grant-tables --skip-networking &
mysql -u root

进入MySQL后

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

12.一些文件的存放目录

配置文件

vim /etc/my.cnf

存放数据库文件的目录

cd /var/lib/mysql

日志记录文件

vim /var/log/ mysqld.log

服务启动脚本

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

socket文件

/var/run/mysqld/mysqld.pid

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

lsof -i:3306

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

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

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文件:

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    keystoreFile="conf/www.domain.com.jks"
    keystorePass="changeit"
    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>,也就是倒数第二段里,加上这样一段

<login-config>
    <!-- Authorization setting for SSL -->
    <auth-method>CLIENT-CERT</auth-method>
    <realm-name>Client Cert Users-only Area</realm-name>
    </login-config>
    <security-constraint>
    <!-- Authorization setting for SSL -->
    <web-resource-collection>
    <web-resource-name>SSL</web-resource-name>
    <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
    </security-constraint>

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

<Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="443" />

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

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部