在Liunx环境中安装jdk
一 linux软件安装常用的方式对比
Linux下的软件安装,主要有如下三种,“正规”程度依次递减:
1、使用标准的yum/apt/yast包管理程序安装
2、使用标准rpm/deb或厂商自己的安装包(比如nVidia的显卡驱动用的bin包)安装
3、直接解压软件开发者的tar.gz包
其中:
这种安装方式相当于苹果/安卓平台上的“应用商店”安装,是最安全可靠的安装模式。
通过这种方式安装的软件,不仅完全契合你的操作系统本身,而且可以保证和系统其他软件包的相容性,一般来说是不可能遇到冲突的。yum并不是一种包,它是安装包的一个软件,在CentOS中是软件包的管理器,yum也对依赖关系进行管理,但是必须要在联网的情况下完成。
Linux有很多发行版;其中一些面对服务器的版本会非常保守,里面的每一个软件都会经过连续多年的测试,稳定度极高。但相应的,这里面的软件就会老旧一些。
优点:安装方便,稳定度极高,与系统兼容性好
缺点:需要联网,有些软件版本老旧或没有
rpm包安装几乎在所有Linux平台上都支持,它就像Windows下的exe安装文件一样,各种文件已经编译好,并打包,哪个文件在哪个文件夹里面都已经被指定好,所以很方便。但可能会因为你用了过新/过旧的安装包而和系统其他部分产生相容性问题——比如系统用python2.4你到网上拖了个python3或python1.5、又强行把它装上去还附加到路径最前,那么很可能就会造成其他依赖python的软件出现混乱。
优点:安装方便
缺点:兼容性没有yum方式好
这种类似于Windows的“免安装绿色版”软件。
你可以把它解压到你自己的用户目录,然后在自己的bash.rc之类配置文件中,用export把它加入path——这样你才可以直接在shell中敲它提供的新命令。
优点:文档齐全
因为可以定位到代码,所以debug方便
本机兼容性最好(由于是本机编译的,只要编译通过,就没有各种库的依赖的问题)
缺点:编译麻烦
缺乏自动依赖管理,软件升级麻烦
Author:呆萌老师 QQ:2398779723 微信 it_daimeng
注:yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。
基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum常用命令
1.列出所有可更新的软件清单命令:yum check-update
2.更新所有软件命令:yum update
3.仅安装指定的软件命令:
yum install <package_name> 找到安装包之后,询问你Is this OK[y/d/N],需要你手动进行选择
yum -y install <package_name> 如果加上参数-y,就会自动选择y,不需要你再手动选择
4.仅更新指定的软件命令:yum update <package_name>
5.列出所有可安裝的软件清单命令:yum list
6.删除软件包命令:yum remove <package_name>
7.查找软件包 命令:yum search <keyword>
8.清除缓存命令:
yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers
列举匹配已安装的java的软件包:yum list installed | grep java
或者yum list installed | grep jdk (比如用rpm安装的jdk,需要搜索jdk才能找到)
也可以用 rpm -qa | grep java 或 rpm -qa | grep jdk
卸载安装的jdk:yum -y remove java-1.8.0-openjdk*
当结果出现了完毕!,就表示卸载成功。
推荐第二种
优点:安装方便,不需要配置环境变量
缺点: 只能安装yum库中自带的openjdk版本,不能安装sun公司的jdk版本
查看yum库中的java安装包 :yum -y list java*
安装需要的jdk版本的所有java程序:yum -y install java-1.8.0-openjdk*
当结果出现了完毕!即安装完成。
查看java版本:java -version
优点:安装方便,不需配置环境变量,不需安装相关依赖(依赖自动安装)
1、官网下载jdk的rpm文件(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
2、到该文件所在目录执行命令,我这里是存放在/data文件夹中
先卸载之前装的所有jdk版本(卸载方式见上文)
然后通过rpm命令安装
rpm -ivh jdk-8u251-linux-x64.rpm
"rpm命令"是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。
3、默认安装在/usr/java/jdk1.8.0_251-amd64目录下
4、检查是否成功
java -version
5.配置环境变量(如果后续要使用tomcat,则需要配置环境变量,只用jdk不需要配置)
1)利用vi /etc/profile编辑profile文件
2)加入如下内容(jdk文件夹名称根据实际的填写)
#set java environment
JAVA_HOME=/usr/java/jdk1.8.0_251-amd64
JRE_HOME=/usr/java/jdk1.8.0_251-amd64/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
3)利用source /etc/profile让配置生效(无需该操作也可完成配置)。
4)配置完成输入java -version
只用jdk,rpm方式不需要配置环境变量的原因
通过RPM方式安装时,是严格遵照Linux对环境变量的路径的要求,比如:
/usr/bin 可执行的命令安装目录
/usr/lib 程序所使用的库函数保存位置
/usr/share/doc 基本的软件使用手册保存位置
/usr/share/man 帮助文件保存位置
举例来说,我使用RPM安装的jdk1.8,安装完成后,没做任何配置,即可全局使用java命令,本以为安装过程自动在~/.bash_profile或者/etc/profile中做了环境配置,但是查看后并没有,通过$PATH也查看不到jdk的路径。
但是在 /usr/bin中看到了Java,javac命令
也就是说,将jdk安装目录下的bin下的java、javac等命令“复制”到了这里,当然这不是简单的复制,但道理就是那个道理。所以,也就是说,当我们在任意的位置执行java相关命令时,系统会到/usr/bin中来执行。
所以就可以理解为:/usr/bin是针对RPM安装的软件的profile文件,RPM安装过程会自动将一些可执行文件添加到/usr/bin里,从而“配置了环境”,而不需我们配置路径到profile里。
查看/usr/lib后也可以发现其中有jdk安装目录下的lib中的相关包,查看/usr/share/man后也可以发下其中有jdk安装目录下的man中的相关文档。
所以,说到这里,应该可以理解为什么RPM不需配置环境了。
使用Xftp将下载好的jdk-8u251-linux-x64.tar.gz上传到CentOs上去
先将之前安装的jdk卸载掉(如果没有安装过可跳过此步骤)
1、复制安装包到/usr/java目录中(目录可以自己选):
cp jdk-8u251-linux-x64.tar.gz /usr/java/jdk-8u251-linux-x64.tar.gz
2、切换到/usr/java目录下:cd /usr/java
3、解压缩包:tar -zxvf jdk-8u251-linux-x64.tar.gz
解压成功(表式JDK已安装成功,可查看jdk的文件夹)
此时java -version命令还不能使用:
4、配置环境变量
使用vi /etc/profile 编辑profile文件 输入: vi /etc/profile
向文件里面追加以下内容:
#set java environment
JAVA_HOME=/usr/java/jdk1.8.0_251
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
注释:
JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径,此路径下包括lib,bin,jre等文件夹(tomcat,Eclipse的运行都需要依靠此变量)。
CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设:.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib。CLASSPATH变量值中的.表示当前目录
PATH使得系统可以在任何路径下识别java命令,设为:$JAVA_HOME/bin:$JRE_HOME/bin。
特别注意:环境变量值的结尾没有任何符号,不同值之间用:隔开(windows中用;)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LzzpPpfi-1668843626115)(pic/10.png)]
5、使配置文件生效:source /etc/profile
6、测试配置是否成功: java -version
7、源码编译的方式安装的jdk如何下载
卸载:
用java -version命令判断jdk是否安装(显示版本号等信息,说明已经安装)
which java(查看JDK的安装路径)
rm -rf JDK地址(卸载JDK)
rm -rf /usr/java/jdk/jdk1.8.0_251/
java -version查看是否卸载完毕
vi命令编辑文件profile vi /etc/profile
删除配置的环境变量,至此JDK卸载完毕
下载tomcat,从tomcat官网下载tomcat的压缩包。
2.1 将官网下载的apache-tomcat-8.5.57.tar.gz通过xftp上传到服务器中(我是放在根目录下的自建的data文件夹)
2.2 解压(进入到你的文件所在的目录)
tar -zxvf apache-tomcat-8.5.57.tar.gz 解压
2.3 重命名
mv apache-tomcat-8.5.57 tomcat8.5 重命名,非必须
2.4 复制tomcat8.5文件夹到usr/local下
一般习惯将程序安装到local文件夹下.类似windows下的program files
mv tomcat8.5 /usr/local/tomcat8.5
2.5 进入/usr/local/tomcat8.5/bin目录
cd /usr/local/tomcat8.5/bin
./startup.sh 启动Tomcat
./shutdown.sh 关闭Tomcat
curl http://192.168.1.4:8080/
查询已安装的mysql(可能没有)
yum list installed | grep mysql
如果存在已安装的,则卸载
yum -y remove mysql-community-*
*在这里匹配任意字符,可以一次卸载多个。
卸载完成
由于CentOS 的yum源中没有mysql,需要到mysql的官网下载rpm文件或者配置 repo文件去镜像下载。
mysql 镜像之一:https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/
如何配置 repo文件:
[root@localhost ~]# vim /etc/yum.repos.d/mysql.repo
添加
[mysql5]
name=mysql57
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
gpgcheck=0
[root@localhost ~]# yum install mysql-community-server-5.7.14 -y
yum list installed | grep mysql
service mysqld start
如何设置跳过登录验证
6.1 编辑my.cnf文件: vim /etc/my.cnf
在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程
6.2保存文档并退出
6.3重新启动mysql
6.4 登录
mysql5.7开始 密码字段不再是password而是authentication_string:
update mysql.user set authentication_string=password(‘新密码’) where user=‘root’ and Host = ‘localhost’;
先退出: quit
启动mysql
service mysqld start
登录
出现Mysql> 代表登录成功.
现在有密码了,需要取消“跳过登录验证”,不然可以无密码登录
1.输入quit;退出mysql
2.编辑my.cnf文件
vim /etc/my.cnf
删除刚加入的“skip-grant-tables”,保存退出
3.重新启动mysql
1.第一次安装完mysql不管是用临时密码登入还是通过免密方式修改密码登入之后,如果没有马上修改密码,而有其他的对数据库的操作动作都会报错,要求先修改密码。
2.这个时候需要修改密码
如果密码格式简单(比如只有小写字母和数字),会报错
alter user user() identified by ‘daimenglaoshi666’
如果密码格式复杂(有大写字母,小写字母,数字,特殊符号),则成功
alter user user() identified by ‘Daimeng666=’;
原因分析:
这个其实与validate_password_policy的值有关。
validate_password_policy有以下取值:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CQeNR8s4-1668843626128)(pic/20180226165346246)]
强度为LOW,LOW代表什么?代表密码任意,但长度在8位或以上。
强度为MEDIUM,这个强度代表什么?代表密码包括:数字、大写字母、小写字母、特殊符号、长度8位以上。
强度为STRONG,这个时候必须先满足0,1的要求,然后它还追加了一个,对于密码中任意连续4个(或4个让上)字符不得是字典中的单词。
查看默认的密码策略会发现是 1 。
select @@validate_password_policy
可以通过命令自己修改策略。
set global validate_password_policy=0;
再修改密码,则简单密码也可以通过,一般开发时还是建议设置复杂一点的密码。
3 密码修改好以后,可以正常操作数据库了
MySQL默认是没有开启远程控制的,必须添加远程访问的用户,即默认是只能自己访问,别的机器是访问不了的。
1.1、连接服务器: mysql -u root -p
1.2、看当前所有数据库:show databases;
1.3、进入mysql数据库:use mysql;
1.4、查看mysql数据库中所有的表:show tables;
1.5、查看user表中的数据:select Host, User from user;
1.6、修改user表中的Host: update user set Host=‘%’ where User=‘root’;
说明: % 代表任意的客户端,可替换成具体IP地址。
1.7、最后刷新一下:flush privileges;
注意:一定要记得在写sql的时候要在语句完成后加上" ; "
使用 grant 命令添加远程访问权限
grant all privileges on *.* to root@"%" identified by "Daimeng666=";
或
grant all privileges on *.* to root@"192.168.1.4" identified by "Daimeng666=";
格式说明
grant all privileges on 数据库名.表名|*.* to 创建的用户名(root)@"%|ip" identified by "密码";
@ 后面是访问mysql的客户端IP地址(或是 主机名) % 代表任意的客户端,如果填写 localhost 为本地访问(那此用户就不能远程访问该mysql数据库了)
如果要移除允许远程访问的权限:
1.进入mysql数据库:use mysql;查询user表会发现表中新增了一条记录
2.删除刚添加的权限记录
delete from user where host=‘%’ and user=‘root’;
3. 刷新一下:flush privileges;让权限生效
service mysqld stop
service mysqld restart
service mysqld status
service mysqld enable
service mysqld disable
vi /etc/my.cnf #添加 [mysqld] character_set_server=utf8 init_connect=‘SET NAMES utf8’
其他默认配置文件路径:
配置文件:/etc/my.cnf
日志文件:/var/log//var/log/mysqld.log
服务启动脚本:/usr/lib/systemd/system/mysqld.service socket
文件:/var/run/mysqld/mysqld.pid
select version();