文档章节

搭建 Java Web 部署环境

吴伟祥
 吴伟祥
发布于 2018/09/12 21:13
字数 2031
阅读 42
收藏 0

一、查看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,重启后便会生效。

 

© 著作权归作者所有

吴伟祥

吴伟祥

粉丝 34
博文 497
码字总数 285677
作品 0
泉州
后端工程师
私信 提问
阿里云Centos搭建jdk环境

当我们开始了自己的开发,那么云服务器是一定少不了的,当然也有很多同学只是在本地做开发研究。   这里记录一下我自己在阿里云上搭建环境的过程。   趁着优惠的时候,我在阿里云上购买了...

上987432.com
2018/10/30
0
0
Eclipse Maven项目搭建

说明: 本文描述Eclipse环境下基于Maven的项目开发环境的搭建,操作系统为Windows 7 32位中文企业版。 使用的工具列表如下: 1. Oracle JDK 1.6 update 26 2. Eclipse 3.6.2 JavaEE (plugi...

丽天
2011/07/20
1.3W
2
Java web热部署 (Javarebel实现真正高效的tomcat热部署)

Java web开发部署效率浅析 在进行java web程序开发过程中,经常遇到这种问题,修改一个java文件(*.java),需要重启web服务器(如tomcat,weblogic等),部署项目。而起/停服务器浪费了大量的...

coolcooldee
2013/06/04
6K
8
阿里云服务器怎么绑定域名?

购买的JAVA运行环境(CentOS | Nginx | JAVA | Tomcat)镜像,搭建好后部署了自己的web项目,也购买了域名,然后要怎么把该项目和域名绑定,直接访问域名就能访问该项目呢?...

liu13430
2017/06/06
204
0
JSE 、JEE、 JME 的区别

Java SE : java standard edition , JSE。它允许允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的java应用程序。 java SE包含了java Web 服务开发的类,并为java platform ,e...

hellation_
2018/11/14
30
0

没有更多内容

加载失败,请刷新页面

加载更多

Xcode 4 - “存档”是灰色的吗?

我想存档我的应用程序,但存档选项是灰色的。 什么可能导致这个? #1楼 看到图片。 但我必须输入足够的字符才能发布图片。:) #2楼 当其他答案陈述时,您需要选择一个非活动方案,而不是模拟器...

技术盛宴
9分钟前
13
0
jQuery的延迟和承诺-.then()与.done()

我一直在阅读有关jQuery递归和诺言的文章,但看不到使用.then()和.done()进行成功回调的区别。 我知道Eric Hynds提到.done()和.success()映射到相同的功能,但是我猜.success()也是这样.then...

javail
24分钟前
26
0
Day07面向对象,继承,this,super,final

1.代码块概述 * 在Java中,使用{}括起来的代码被称为代码块。 2.常见代码块的应用 * a:局部代码块 * 在方法中出现;限定变量生命周期,及早释放,提高内存利用率 * b:构造代码块 (初始化块)...

Lao鹰
27分钟前
19
0
聊聊artemis的confirmationWindowEnabled

序 本文主要研究一下artemis的confirmationWindowEnabled confirmationWindowEnabled activemq-artemis-2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client......

go4it
今天
82
0
单例模式(饿汉式和懒汉式)

所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。 饿汉式 public class SingletonTest1 { ...

SongAlone
今天
76
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部