CentOS 7如何搭建基础Java开发环境JDK, Maven, Tomcat, MySQL,Redis

这篇文章主要介绍CentOS 7如何搭建基础Java开发环境JDK, Maven, Tomcat, MySQL,Redis,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、搭建JDK环境

通常情况下CentOS 7自带的JDK为OpenJDK,不同于Oracel SUN JDK,为了与在PC上保持相同的JDK配置方式及使用习惯,可替换为Oracle SUN JDK。

(1)卸载OpenJDK

先通过命令查询Java相关的现有安装:

rpm -qa | grep java

结果如下:

python-javapackages-3.4.1-11.el7.noarch
java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64
tzdata-java-2018e-3.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.171-8.b10.el7_5.x86_64
通过rpm -e xx(xx为上述包)逐个卸载,并再次查看发现已经下载干净,操作过程如下:
[root@centos jvm]# rpm -e java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64
[root@centos jvm]# rpm -e java-1.8.0-openjdk-headless-1.8.0.171-8.b10.el7_5.x86_64
[root@centos jvm]# rpm -e tzdata-java-2018e-3.el7.noarch
[root@centos jvm]# rpm -e javapackages-tools-3.4.1-11.el7.noarch
[root@centos jvm]# rpm -e python-javapackages-3.4.1-11.el7.noarch
[root@centos jvm]# rpm -qa |grep java
[root@centos jvm]# java -version
bash: /usr/bin/java: No such file or directory

(2)下载Oracle SUN JDK

到Oracle网站下载JDK(https://www.oracle.com/technetwork/java/javase/downloads/index.html),对CentOS 7选择相应版本的RPM安装包即可;

例如:jdk-8u171-linux-x64.rpm

(3)安装Oracle SUN JDK

root权限下,将下载后的版本通过rpm命令安装即可,命令示例:

rpm -ivh jdk-8u171-linux-x64.rpm

(4)验证安装

输入命令java -version即可,另外可通过ls /usr/java查看默认安装路径下的java安装版本,操作过程如下:

[root@centos_vm2 tools]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
[root@centos_vm2 tools]# ls /usr/java
default  jdk1.8.0_171-amd64  latest

(5)修改环境变量配置文件

在/etc/profile文件中添加如下几行:

#java environment
 export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
 export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
 export PATH=$PATH:${JAVA_HOME}/bin

后执行source /etc/profile命令使得配置生效;在其他某些Linux环境(例如Deepin)下可以通过修改/etc/bash.bashrc实现同样的效果;

二、搭建Maven开发环境

(1)下载Maven安装包

到apache网站下载maven(http://maven.apache.org/download.cgi) ,选择所需版本并下载

(2)安装Maven

建议安装目录:/usr/local/maven/,需root权限下先创建好该目录:

mkdir /usr/local/maven

先将下载的安装包解压的某个目录(笔者的安装包、安装包解压均在/var/ftp/tools/目录下):

tar -zxvf apache-maven-3.5.4-bin.tar.gz

然后复制目录到安装目录:

cp -r apache-maven-3.5.4/* /usr/local/maven/

之后可查看安装目录下的文件、目录列表:

[root@centos_vm2 tools]# ls /usr/local/maven
bin  boot  conf  lib  LICENSE  NOTICE  README.txt

(3)修改环境变量配置文件:

在/etc/profile文件中添加环境变量MAVEN_HOME,并添加到PATH中,结合上面JAVA环境变量引起的变更,合计如下:

#java environment
 export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
 export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
 export MAVEN_HOME=/usr/local/maven
 export PATH=$PATH:${JAVA_HOME}/bin:${MAVEN_HOME}/bin

执行如下命令使得配置文件生效

source /etc/profile

(4)验证安装

执行mvn -v查看版本,执行echo $MAVEN_HOME查看环境变量,过程如下:

[root@centos tools]# mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/maven
Java version: 1.8.0_171, vendor: Oracle Corporation, runtime: /usr/java/jdk1.8.0_171-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix"
[root@centos tools]# echo $MAVEN_HOME
/usr/local/maven

三、搭建Tomcat环境

(1)下载Tomcat安装包

到apache网站下载Tomcat(http://tomcat.apache.org/) ,选择所需版本并下载

(2)安装Tomcat

建议安装目录/usr/local/tomcat,解压压缩包:

tar -zxvf apache-tomcat-9.0.10.tar.gz

之后将解压后的目录复制到/usr/local/tomcat,操作过程如下:

[root@centos usr]# su root
[root@centos usr]# cd /usr/local
[root@centos local]# mkdir tomcat
[root@centos local]# cd /var/ftp/tools
[root@centos tools]# cp -r apache-tomcat-9.0.10/* /usr/local/tomcat/

(3)开放Tomcat的8080服务端口

执行如下命令开放8080端口:

firewall-cmd --zone=public --add-port=8080/tcp --permanent

上述命令中的参数含义:
--zone #作用域
--add-port=8080/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效

然后重启防火墙:

firewall-cmd --reload

之后在/usr/local/tomcat/bin下,如需启动Tomcat服务则执行

./startup.sh

如需停止Tomcat服务则执行:

./shutdown.sh

四、将Tomcat服务化(可选步骤)

将Tomcat服务化管理在许多时候比较方便,通常包含如下几个步骤:

(1)设置环境变量、用户及组:

环境变量可以通过/etc/profile设置,也可以通过在tomcat/bin/setenv.sh进行设置:

例如,在/etc/profile中设置相关路径:

export CLASS_PATH=.:$JAVA_HOME/lib
export CATALINA_HOME=/usr/local/tomcat
export CATALINA_BASE=/usr/local/tomcat
export PATH=$PATH:${JAVA_HOME}/bin:${CATALINA_HOME}/bin

然后通过/usr/local/tomcat/bin/setenv.sh 设置运行参数,文件内容如下:

#add tomcat pid 
CATALINA_PID="$CATALINA_BASE/tomcat.pid" 
#add java opts 
JAVA_OPTS="-server -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=1024m -Xms512M -Xmx1024M -XX:MaxNewSize=256m"

可配置tomcat服务运行时的用户及组,并赋予相应的权限:

[root@snails ~]# getent group tomcat || groupadd -r tomcat 
[root@snails ~]# getent passwd tomcat || useradd -r -d /opt -s /bin/nologin -g tomcat tomcat 
[root@snails ~]# chown -R tomcat:tomcat /usr/local/tomcat
[root@snails ~]# chmod a+rwx -R /usr/local/tomcat/logs

上述命令getent用于查询,如果没有查询到则执行||之后的命令;groupadd或者useradd之后的参数-r表示的是系统群组、系统用户;useradd之后的参数-s /bin/nologin表示该用户无法直接登录,只用于系统作业使用;

注:本部分来源参考自:https://www.jianshu.com/p/29ecd624046f

(1)服务描述文件:

用service或systemctl管理服务的时候,需先在服务管理目录(即/usr/lib/systemd/system目录,或者/lib/systemd/system目录,后者是前者的软连接)创建一个脚本文件,

vim /usr/lib/systemd/system/tomcat.service

来管理服务的启动和停止,内容示例如下:

[Unit] 
Description=Apache Tomcat 9
After=network.target  
[Service]
Type=forking
PIDFile=/usr/local/tomcat/tomcat.pid
ExecStart=/usr/local/tomcat/bin/startup.sh  
ExecReload=/bin/kill -s HUP $MAINPID 
ExecStop=/bin/kill -s QUIT $MAINPID 
PrivateTmp=true 
User=tomcat
Group=tomcat  
[Install]
WantedBy=multi-user.target

上述内容中的参数说明如下:

  • [Unit]:服务的说明

       Description:描述服务

       Documentation  (可选):服务文档      

       After:描述服务类别

  • [Service]服务运行参数的设置

      Type=forking是后台运行的形式,取值有:simple、forking、oneshot、notify、dbus,其中:
      > simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。
      > forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。
      > oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。
      > notify:与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。
      > dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。

     PIDFile: 进程ID文件路径,对于上述tomcat的配置,相应的tomat/bin/catalina.sh需加入CATALINA_PID参数,参考方式是在脚本一开始的# OS specific support.行之前添加变更,示例如下:

# -----------------------------------------------------------------------------
CATALINA_PID=/usr/local/tomcat/tomcat.pid
# OS specific support.  $var _must_ be set to either true or false.

      ExecStartPre (可选):启动前要做什么

      ExecStart:为服务的具体运行命令
      ExecReload:为重启命令,kill命令-s参数为向进程发送信号,HUP为重新运行的信号
      ExecStop:为停止命令,kill命令-s参数为向进程发送信号,QUIT为退出程序的信号

      User、Group(可选):为运行时所使用的用户、群组,如果没有将tomcat目录绑定到该用户,则这两个参数不要在配置中出现
      PrivateTmp=True表示给服务分配独立的临时空间
      注意:[Service]的启动、重启、停止命令全部要求使用绝对路径,User、Group不指定则默认为root

  • [Install]服务安装的相关设置,可设置为多用户

注:本部分参考自:https://blog.csdn.net/younger_china/article/details/52539522

然后执行systemctl enable tomcat设置为开机自动启动,或者先通过tomcat/bin子目录下的shutdown.sh停掉当前运行的tomcat,然后执行systemctl start tomcat运行即可;

(2)启动阻塞超时的问题:

全新的tomcat环境,在没有运行过的情况下,tomcat/logs子目录下是没有日志文件的,第一次运行后将产生日志文件,最常见的是根据catalina.out日志文件定位问题。

Tomcat启动有时因为超时导致启动失败,常见的原因是安全随机数耗时的问题,从启动日志中看到类似如下的告警:

19-Jul-2018 22:43:02.156 WARNING [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [149,396] milliseconds.
19-Jul-2018 22:43:02.174 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/ROOT] has finished in [149,652] ms

这是由于在服务器环境下,系统的随机数参考环境变量比较少导致计算比较慢,解决方式有两种:

方式一:可以通过配置 JRE 使用非阻塞的 Entropy Source:

在 catalina.sh 中加入这么一行:

-Djava.security.egd=file:/dev/./urandom

例如:

# Make the umask available when using the org.apache.catalina.security.SecurityListener
JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/urandom  -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"

方式二:打开 $JAVA_HOME/jre/lib/security/java.security (本安装中是这个文件,找到下面的内容:

securerandom.source=file:/dev/random

替换为:

securerandom.source=file:/dev/./urandom

注:路径中间的点号是在某些版本中securerandom.source 设置为 /dev/urandom 它也仍然使用的 /dev/random,因此用了变通的方式,如果所用版本测试验证直接用securerandom.source=file:/dev/urandom能正常工作,则无需用带点号的路径;

(3)Tomcat停止时原线程、IP端口释放不彻底的问题

某些Tomcat web工程版本开发调测时发现用tomcat/bin下的shutdown.sh关闭不彻底,这时需要手工用kill 进程号才能彻底关闭掉,通常这类问题是开启的非守护线程并没有停止掉造成的,可借助几个步骤:

第一步:查看Tomcat进程号

ps -ef|grep tomcat

第二步:用JDK自带的jstack工具分析活动线程

$JAVA_HOME/bin/jstack  <pid>

<pid>为具体的进程号

第三步:找到主线程main、自建线程检查是否是守护线程,如果不是,修改相应的Java代码,在类似于new Thread()的动作之后注意设置为守护线程,再重新发布版本验证;

第四步:对于IP端口号未及时释放的,为了不影响调测,临时可通过kill强制关闭进程:

kill <pid>

后续需检查自行占用端口的代码在程序退出时释放及时释放端口资源;

第五步:多个tomcat目录的实例运行,关闭失败,需要记录各个实例的进程ID,在相应的tomcat/bin/catalina.sh代码前面添加如下操作:

#############
if [ -z "$CATALINA_PID" ]; then
    CATALINA_PID=$PRGDIR/CATALINA_PID
    cat $CATALINA_PID
fi############

在相应的tomcat/bin/shutdown.sh中:

exec "$PRGDIR"/"$EXECUTABLE" stop "$@"

添加强制停止的参数,即:

exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@"

五、创建基于web项目的Maven多模块工程

大量的Java工程都是web项目,对于企业应用,这些项目通常都是多模块项目。为了便于管理,通常对项目进行分层,顶层是一个parent项目,parent下包含多个子模块,单个子模块可以是某个公共包、库的集合,也可以按功能划分子模块,或者为了便于生成一个具体生产环境所需的配套包、或者测试环境的测试包也单独开辟一个子模块用户生成所需的打包文件;以下以创建一个基础的web项目的多模块工程为样例例进行说明。

(1)创建顶层工程parent

假设顶层工程名为sample-parent,进入到所在的父目录后,输入如下命令:

mvn archetype:generate -DgroupId=com.sample -DartifactId=sample-parent -DarchetypeArtifactId=maven-archetype-quickstart

注意:示例中groupId为com.sample,工程名sample-parent,命令最后还可以加一个参数-DinteractiveMode=false表示无需在进行交互式确认,本示例中未加该参数,执行过程中可以再次确认版本等信息,如无需更改直接回车即可;

上述命令执行完成后,顶层工程就创建好了,工程默认的打包结果为jar,但我们用顶层工程的目的只是用来管理多个模块不在顶层输出jar包,为此,进入到sample-parent目录,将src文件夹删除,然后修改pom.xml文件,将<packaging>jar</packaging>修改为<packaging>pom</packaging>

(2)创建子工程common

将一些最常用的公共类、包等放在一个可被依赖的子模块中,非常利于团队中的代码共享,为此先进入到sample-parent目录,然后创建sample-common子工程,这样创建出来的子工程自动成为sample-parent的一个子模块,输入的命令如下:

mvn archetype:generate -DgroupId=com.sample -DartifactId=sample-common -DarchetypeArtifactId=maven-archetype-quickstart

命令执行完成之后可以看到在sample-parent目录中生成了sample-common,里面包含src目录和pom.xml文件。同时,在sample-parent目录中的pom.xml文件自动添加了如下内容:
   

<modules>
    <module>sample-common</module>
</modules>

修改sample-common目录中的pom.xml文件,把<groupId>sample-common</groupId>和<version>1.0-SNAPSHOT</version>去掉,加上<packaging>jar</packaging>,
因为groupId和version会继承sample-parent中的groupId和version,packaging设置打包方式为jar;

(3)创建子工程web

假定需要发布一个能在Tomcat中运行的war包,这个可发布的包位于一个子模块sample-web中,在进入sample-parent目录后,可执行如下命令创建web工程:

mvn archetype:generate -DgroupId=com.sample -DartifactId=sample-web -DarchetypeArtifactId=maven-archetype-webapp

注意:参数-DarchetypeArtifactId=maven-archetype-webapp表示这是创建web工程,默认打包为war包

(4)添加依赖继承、依赖

在父工程的pom.xml中通过properties标签内容罗列依赖的版本号,然后通过<dependencyManagement>罗列依赖的各种jar包、模块,再在子工程的<dependencies>添加该子工程所需要的依赖时可以继承父工程已经声明的包、模块,无需再指明具体的版本号;类似的机制适用于在父工程中通过<pluginManagement>声明build所需的maven插件,在子工程的<plugins>中再添加所需的maven插件,无需再指明具体的版本号;

六、搭建MySQL环境

(1)下载MySQL

从MySQL官方网站下载页面(https://dev.mysql.com/downloads/mysql/)下载社区版MySQL(MySQL Community Server),例如选择下载:MySQL Community Server 5.7
安装说明文档(Installation structions)也可在该页面找到;根据配套的服务器操作系统版本CentOS7,本次下载的是:
Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit), RPM Bundle 5.7.22 570.3M
(mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar)

(2)上传版本到CentOS服务器,解压安装包
可借助客户端工具例如MobaXterm上传版本到服务器的一个目录,例如:/var/ftp/tools
然后执行解压命令:

tar -xvf mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar

(3)安装MySQL Server

在解压目录下,依次执行如下命令安装各个rpm包:

rpm -ivh mysql-community-common-5.7.22-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.22-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.22-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.22-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.22-1.el7.x86_64.rpm

注意:如果系统之前安装了其他的MySQL、MariaDB,可能由于冲突导致安装失败,应先卸载之前的安装,可通过rpm -qa|grep mysql查询之前安装的rpm包,然后通过rpm -e xxx卸载之前的rpm包;

(4)启动MySQL

执行如下命令:(注意在CentOS下MySQL的服务名为mysqld,在SUSE Linux下为mysql)

service mysqld start

或者

systemctl start mysqld

安装完成后mysqld位于/usr/sbin/mysqld,reboot重启系统后:
 > 可通过systemctl status mysqld查看运行状态
 > 可通过ps -ef | grep ^mysql查看进程号
 > 可通过netstat -anpl |grep mysql查看网络服务
 > 可通过mysqladmin --version查看版本号

(5)配置root用户密码
MySQL在初始安装的时候,会生成安装日志(位于/var/log/mysqld.log),其中记录了一个随机的初始密码,以root用户及此初始密码登录,然后修改root密码;
例如:vi /var/log/mysqld.log,找到如下行

2018-07-15T16:11:30.955449Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-07-15T16:11:30.956742Z 1 [Note] A temporary password is generated for root@localhost: /yBner_jl6Ii

以用户root初始密码/yBner_j16Ii登陆:

mysql -uroot -p/yBner_jl6Ii

操作过程如下:

mysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor.  
Commands end with ; or \g.Your MySQL connection id is 8Server version: 5.7.22
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> set password=password('11211');
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> set password=password('127212yZp');ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> set password=password('121132@MySQL');Query OK, 0 rows affected, 1 warning (0.00 sec)

(6)配置远程登录权限
登录MySQL后,修改root的登录权限,在其中依次执行如下两步
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '121132@MySQL' WITH GRANT OPTION;
flush privileges;

注意:命令中BY后面的121132@MySQL为root的密码,实际操作时请输入实际的密码;

(7)使用PC客户端工具连接MySQL

例如HedisSQL工具;

(8)忘记root密码时补救办法

第一步:修改配置文件/etc/my.cnf在[mysqld]后新增一行,内容为skip-grant-tables,用于方通MySQL的密码检查

第二步:重启MySQL,例如执行:service mysqld restart 或 systemctl restart mysqld

第三步:以root用户登录MySQL,执行登录MySQL:mysql -uroot -p (直接回车,密码为空)

然后在MySQL命令行中依次执行:

update user set authentication_string=password('123456') where user='root';
flush privileges;

注意:上述123456为新的密码,实际操作时以请输入具体的密码;

然后执行quit退出MySQL命令行;

第四步:恢复配置文件/etc/my.cnf,去掉第一步中加的skip-grant-tables,重启MySQL(参考第二步)

(9)root密码过于简单导致设置密码失败

登录MySQL后,在MySQL命令行下,输入命令:

set global validate_password_policy=0;

可设置密码校验复杂度为0;

输入命令:

set global validate_password_length=0

可设置密码最小长度为4;

之后,可输入命令查看密码相关的参数:

SHOW VARIABLES LIKE 'validate_password%';

七、搭建Redis环境

(1)下载Redis

从Redis官方网站(https://redis.io/download ) 下载Redis的安装包,其中包含源码;将安装包复制的服务器的一个目录下并解压,例如:

tar zxvf redis-5.0.0.tar.gz

(2)进入解压后的目录,例如:

cd redis-5.0.0/

(3)编译程序

在编译之前请确保系统以及安装了gcc,如果没有安装,请先安装gcc(例如执行yum install gcc);之后依次执行如下命令:

make
cd src
make install PREFIX=/usr/local/redis

注:上述PREFIX=/usr/local/redis表示安装到/usr/local/redis目录下

如果因为之前没有安装gcc导致编译失败,请先删除刚刚解压的redis目录,重新解压,重新进入解压目录后再重新编译;

(4)复制配置文件到安装目录下

依次执行如下命令:

cd..
mkdir /usr/local/redis/etc
cp redis.conf /usr/local/redis/etc/

(5)常用配置参数

配置参数存放在redis.conf文件中,需编辑该文件进行配置,例如:

vim /usr/local/redis/etc/redis.conf

daemonize:如需要在后台运行,把该项的值改为yes

pdifile:把pid文件放在/var/run/redis.pid,可以配置到其他地址

bind:指定redis只接收来自该IP的请求,如果不设置,那么将处理所有请求,在生产环节中最好设置该项

port:监听端口,默认为6379

timeout:设置客户端连接时的超时时间,单位为秒

loglevel:等级分为4级,debug,revbose,notice和warning。生产环境下一般开启notice

logfile:配置log文件地址,默认使用标准输出,即打印在命令行终端的端口上

database:设置数据库的个数,默认使用的数据库是0

save:设置redis进行数据库镜像的频率

rdbcompression:在进行镜像备份时,是否进行压缩

dbfilename:镜像备份文件的文件名

dir:数据库镜像备份的文件放置的路径

slaveof:设置该数据库为其他数据库的从数据库

masterauth:当主数据库连接需要密码验证时,在这里设定

requirepass:设置客户端连接后进行任何其他指定前需要使用的密码

maxclients:限制同时连接的客户端数量

maxmemory:设置redis能够使用的最大内存

appendonly:开启appendonly模式后,redis会把每一次所接收到的写操作都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态

appendfsync:设置appendonly.aof文件进行同步的频率

vm_enabled:是否开启虚拟内存支持

vm_swap_file:设置虚拟内存的交换文件的路径

vm_max_momery:设置开启虚拟内存后,redis将使用的最大物理内存的大小,默认为0

vm_page_size:设置虚拟内存页的大小

vm_pages:设置交换文件的总的page数量

vm_max_thrrads:设置vm IO同时使用的线程数量

(5)配置redis为后台启动

编辑redis.conf文件:

vi /usr/local/redis/etc/redis.conf

将文件中daemonize no 改成daemonize yes

(6)可选步骤一:将redis加入到开机启动,编辑/etc/rc.local文件:

vi /etc/rc.local

在里面添加内容即可:

/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf 

注:上述内容即开机时调用命令redis-server,配置文件为redis.conf,该行命令也可用于手工启动redis服务;

(7)可选步骤二:常用操作

手工停掉redis,可执行如下命令:

pkill redis-server

或者

/usr/local/redis/bin/redis-cli shutdown

卸载redis,可在停止redis后,删除上述安装目录即可:

rm -rf /usr/local/redis

执行客户端连接redis

/usr/local/redis/bin/redis-cli

 (8)将redis配置为可通过systemctl管理的服务

参考上述tomcat服务的配置文件,类似的编写一个描述redis服务的文件(配置参数的含义参考上述tomcat服务配置文件中对参数的解释),先创建服务描述文件并进行编辑:

vim /usr/lib/systemd/system/redis.service

文件内容示例如下:

[Unit]
Description=Redis
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
#PID Should be the same as redis.conf
PIDFile=/var/run/redis_6379.pid
#For start: redis-server path and redis.conf path
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
#For restart
ExecReload=/bin/kill -s HUP $MAINPID
#For stop
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
#System startup mode
WantedBy=multi-user.target

之后执行刷新系统服务配置

systemctl daemon-reload

再执行激活开机自动启动redis服务

systemctl enable redis

其后:可通过如下命令查看redis服务状态

systemctl status redis

通过如下命令手工停止redis服务

systemctl stop redis

通过如下命令手工启动redis

systemctl start redis

通过如下命令手工重启redis服务

system restart redis

以上是“CentOS 7如何搭建基础Java开发环境JDK, Maven, Tomcat, MySQL,Redis”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程之家行业资讯频道!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


在正式开始之前,我们先来看下 MySQL 服务器的配置和版本号信息,如下图所示: “兵马未动粮草先行”,看完了相关的配置之后,我们先来创建一张测试表和一些测试数据。 -- 如果存在 person 表先删除 DROP TABLE IF EXISTS person; -- 创建 person 表,其中
&gt; [合辑地址:MySQL全面瓦解](https://www.cnblogs.com/wzh2010/category/1859594.html &quot;合辑地址:MySQL全面瓦解&quot;) # 1 为什么需要数据库备份 - 灾难恢复:当发生数据灾难的时候,需要对损坏的数据进行恢复和
物理服务机的CPU、内存、存储设备、连接数等资源有限,某个时段大量连接同时执行操作,会导致数据库在处理上遇到性能瓶颈。为了解决这个问题,行业先驱门充分发扬了分而治之的思想,对大库表进行分割,&#xA;然后实施更好的控制和管理,同时使用多台机器的CPU、内存、存储,提供更好的性能。而分治有两种实现方式:垂直拆
1 回顾 上一节我们详细讲解了如何对数据库进行分区操作,包括了 垂直拆分(Scale Up 纵向扩展)和&#160;水平拆分(Scale Out 横向扩展) ,同时简要整理了水平分区的几种策略,现在来回顾一下。 2 水平分区的5种策略 2.1 Hash(哈希) 这种策略是通过对表的一个或多个列的Ha
navicat查看某个表的所有字段的详细信息 navicat设计表只能一次查看一个字段的备注信息,那怎么才能做到一次性查询表的信息呢?SELECT COLUMN_NAME,COLUMN_COMMENT,COLUMN_TYPE,COLUMN_KEY FROM information_schema.CO
文章浏览阅读4.3k次。转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52768613前言:数据库每天的数据不断增多,自动删除机制总体风险太大,想保留更多历史性的数据供查询,于是从小的hbase换到大的hbase上,势在必行。今天记录下这次数据仓库迁移。看下Agenda:彻底卸载MySQL安装MySQL_linux服务器进行数据迁移
文章浏览阅读488次。恢复步骤概要备份frm、ibd文件如果mysql版本发生变化,安装回原本的mysql版本创建和原本库名一致新库,字符集都要保持一样通过frm获取到原先的表结构,通过的得到的表结构创建一个和原先结构一样的空表。使用“ALTER TABLE DISCARD TABLESPACE;”命令卸载掉表空间将原先的ibd拷贝到mysql的仓库下添加用户权限 “chown . .ibd”,如果是操作和mysql的使用权限一致可以跳过通过“ALTER TABLE IMPORT TABLESPACE;”命令恢_alter table discard tablespace
文章浏览阅读225次。当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:字段尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNEDVARCHAR的长度只分配_开发项目 浏览记录表 过大怎么办
文章浏览阅读1.5k次。Mysql创建、删除用户MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束):1.新建用户登录MYSQL:@>mysql -u root -p@>密码创建用户:mysql> insert into mysql.user(Host,User,Password) values("localhost_删除mysql用户组
MySQL是一种开源的关系型数据库管理系统,被广泛应用于各类应用程序的开发中。对于MySQL中的字段,我们需要进行数据类型以及默认值的设置,这对于数据的存储和使用至关重要。其中,有一个非常重要的概念就是MySQL字段默认字符串。 CREATE TABLE `my_...
MySQL是一个流行的开源关系型数据库管理系统,广泛应用于Web应用程序开发、数据存储和管理。在使用MySQL时,正确设置字符集非常重要,以确保数据的正确性和可靠性。 在MySQL中,字符集表示为一系列字符和字母的集合。MySQL支持多种字符集,包括ASCII、UTF...
MySQL存储函数 n以内偶数 MySQL存储函数能够帮助用户简化操作,提高效率,常常被用于计算和处理数据。下面我们就来了解一下如何使用MySQL存储函数计算n以内的偶数。 定义存储函数 首先,我们需要定义一个MySQL存储函数,以计算n以内的偶数。下...
MySQL是一个流行的关系型数据库管理系统,基于客户机-服务器模式,可在各种操作系统上运行。 MySQL支持多种字符集,不同的字符集包括不同的字符,如字母、数字、符号等,并提供不同的排序规则,以满足不同语言环境的需求。 //查看MySQL支持的字符集与校对规...
在MySQL数据库中,我们有时需要对特定的字符串进行截取并进行分组统计。这种操作对于数据分析和报表制作有着重要的应用。下面我们将讲解一些基本的字符串截取和分组统计的方法。 首先,我们可以使用substring函数对字段中的字符串进行截取。假设我们有一张表stude...
MySQL提供了多种字符串的查找函数。下面我们就一一介绍。 1. LIKE函数 SELECT * FROM mytable WHERE mycolumn LIKE 'apple%'; 其中"apple%"表示以apple开头的字符串,%表示任意多个字符...
MySQL 是一种关系型数据库管理系统,广泛应用于各种不同规模和类型的应用程序中。在 MySQL 中,处理字符串数据是很常见的任务。有时候,我们需要在字符串的开头添加一定数量的 0 ,以达到一定的位数。比如,我们可能需要将一个数字转换为 4 位或 5 位的字符串,不足的...
MySQL是一种流行的关系型数据库管理系统,支持多种数据类型。以下是MySQL所支持的数据类型: 1. 数值型数据类型: - TINYINT 保存-128到127范围内的整数 - SMALLINT 保存-32768到32767范围内的整数 - MEDIU...
MySQL中存储Emoji表情字段类型 在现代互联网生态中,表情符号已经成为人们展示情感和思想的重要方式之一,因此将表情符号存储到数据库中是一个经常出现的问题。MySQL作为最流行的开源关系型数据库管理系统之一,也需要能够存储和管理这些表情符号的字段类型。 UT...
MySQL是一种关系型数据库管理系统。在MySQL数据库中,有多种不同的数据类型。而其中,最常见的数据类型之一就是字符串类型。在MySQL中,字符串类型的数据通常会被存储为TEXT或VARCHAR类型。 首先,让我们来看一下VARCHAR类型。VARCHAR是My...
MySQL字符串取整知识详解 MySQL是一种开源的关系型数据库管理系统,广泛应用于各个领域。在使用MySQL过程当中,我们经常需要对数据进行取整操作。本文将介绍如何使用MySQL字符串取整来处理数据取整问题。 什么是MySQL字符串取整? MySQL...