Java开发所需的Linux环境配置

Linux环境配置

本文主要讲解在Linux环境下的Java开发环境搭建,包含各种常用软件的安装步骤以及基础的Linux知识

安装Centos

因为开发中只需用得到命令行操作,所以只需要安装Minimal版本

image-20210506161400598

进行配置

image-20210506162907224

image-20210506163217156

安装完成后重启即可

image-20210506164209130

重启后来到登录界面,输入账号密码即可登录

image-20210506164333914

Linux基础知识

目录

image-20210506164621687

  • bin (binaries)存放二进制可执行文件 [重点]
  • sbin (super user binaries)存放二进制可执行文件,只有root才能访问
  • etc (etcetera)存放系统配置文件 [重点]
  • usr (unix shared resources)用于存放共享的系统资源 [重点]
  • home 存放用户文件的根目录 [重点]
  • root 超级用户目录 [重点]
  • dev (devices)用于存放设备文件
  • lib (library)存放跟文件系统中的程序运行所需要的共享库及内核模块
  • mnt (mount)系统管理员安装临时文件系统的安装点
  • boot 存放用于系统引导时使用的各种文件
  • tmp (temporary)用于存放各种临时文件 [重点]
  • var (variable)用于存放运行时需要改变数据的文件

常用指令

注意:在linux中命令严格区分大小写

显示文件和目录列表 (list)

#ls 常用参数:  
	-l (long)	 长格式显示文件和目录信息
	-a (all)	 显示所有文件和目录(包含隐藏文件和目录)
	-R         递归显示指定目录下的文件清单,即会显示指定目录分支内各子目录中的文件清单。

3.ls -l长格式说明

操作文件命令[重点]

# 0.cd 用来切换目录
# 1.pwd 显示当前工作目录(print working directory)
# 2.touch 创建空文件		 
# 3.mkdir 创建目录(make directoriy)
			-p 父目录不存在情况下先生成父目录 (parents)            
# 4.cp 复制文件或目录(copy)
      cp  文件名    目录   复制文件到指定目录中
      cp  -r 目录名    目录   复制指定目录到指定目录中
			-r 递归处理,将指定目录下的文件与子目录一并拷贝(recursive)     
# 5.mv 移动文件或目录、文件或目录改名(move)
			mv 文件名    新文件名      文件改名
			mv 文件名    目录名     	文件移动
			mv 目录名    不存在目录名  目录改名   
      mv 目录名	  已存在目录名  目录移动
# 6.rm 删除文件(remove)
			-r 同时删除该目录下的所有文件(recursive)
			-f 强制删除文件或目录(force)
# 7.rmdir 删除空目录(remove directoriy)
# 8.cat 显示文本文件内容 (catenate) 用来展示少量内容
# 9.more、less 分页显示文本文件内容   退出用q退出
# 10.head、tail查看文本中开头或结尾部分的内容
		head  -n  5  a.log 查看a.log文件的前5行
# 11.tail  -f  b.log 循环读取(fellow)
# 12.echo 输出命令
			echo   I love baby								说明:用来向屏幕输出一句话
			echo I Love baby  >>  aa.txt			说明:将这段内容输入到文件中
# 13.查看文件
			find -name xxx	
			whereis xx		显示xx的位置
			which xx			显示xx的完整路径

查看相关命令

# 1.ip addr 查看IP地址
		ip a  简化写法
# 2.ping 测试网络连通性
		ping 192.168.0.1	
# 3.查看Linux中网络系统状态信息
		netstat
# 4.显示内存的使用情况
		free
# 5.显示磁盘的相关信息
		df
# 6.

tar命令

 		-c 建立一个压缩文件的参数指令(create)
		-x 解开一个压缩文件的参数指令(extract)
		-z 是否需要用 gzip 压缩  
		-v 压缩的过程中显示文件(verbose)
		-f 使用档名,在 f 之后要立即接档名(file)

`通常组合使用:`
			tar -cvf aaa.tar file1.txt file2.txt 					将file1和2打包成aaa.tar
			
			tar -zcvf aaa.tar.gz file1.txt file2.txt 			将file1和2打包成aaa.tar并压缩
			tar -zxvf aaa.tar.gz file1.txt file2.txt 			将aaa.tar.gz解压

systemctl 服务命令

 systemctl status|start|stop|restart 服务名  mysqld firewalld(防火墙) network(网络)
systemctl status 服务名          说明:查看某个服务的运行状态
systemctl start 服务名 					说明:启动某个服务
systemctl restart 服务名 				说明:重启某个服务
systemctl stop 服务名 						说明:停止某个服务

进程相关命令

# 1.ps 询在当前控制台上运行的进程
		ps  -aux   说明:查询系统中所有运行的进程,包括后台进程,其中参数a是所有进程,参数x包括不占用控制台的进程,参数u显示用户。
		ps  -ef		 说明:查询系统中所有运行的进程,包括后台进程,而且可以显示出每个进程的父进程号。

    ps -aux|grep 	进程/服务名/关键字/tomcat  [重点]
    
# 2.top	命令  动态显示系统进程

# 3.kill 杀死进程
		kill  3029 说明:上述命令中3029是进程号;一般在执行kill命令之前,先用ps或pstree来查询一下将要被杀掉的进程的进程号。 
		kill  -9  3029 说明:强制终止3029号进程的运行,其中参数-9代表强制的意思,实际上kill命令是向该进程发送信号,该进程接到信号后决定是否停止运行,有些守护进程必须要收到参数9才终止运行。

vi命令

image-20210506185857940

# 常用命令:
		i						在光标前插入
 		I						在光标当前行开始插入
 		a						在光标后插入
 		A						在光标当前行末尾插入
 		o						在光标当前行的下一行插入新行
 		O						在光标当前行的上一行插入新行
 		----------------重点---------------------------
 		:set nu			显示行号
 		:set nonu		取消行号
 		:set paste  粘贴文本
 		dd 					快速删除当前行
 		gg					到文本的第一行
 		G						到文本的最后一行
 		:n					到文本的第n行
 		------------------重点-------------------------
 		u						undo,取消上一步操作
 		Ctrl + r		redo,返回到undo之前
 		
 		-------------------重点------------------------
 		Shift+ zz		保存退出,与“:wq”作用相同
		:q					退出不保存
		:q!					强制退出不保存
		:wq					保存退出
		:wq!				强制保存退出

软件相关命令

# rpm 命令  
	常用参数:
      i:安装应用程序(install)
      e:卸载应用程序(erase)
      vh:显示安装进度;(verbose   hash) 
      U:升级软件包;(update) 
      qa: 显示所有已安装软件包(query all)
	例子:rmp  -ivh  gcc-c++-4.4.7-3.el6.x86_64.rpm

安装 
		rpm -ivh  xxxx.rpm
    rpm -evh  xxxx.rpm
    rpm -Uvh  xxx.rpm
    rpm -qa 
    
# yum 命令
`使用YUM命令必须连接外部网络`
    例子:
    yum  install  gcc-c++
    yum  remove   gcc-c++
    yum  update   gcc-c++
    
    yum install|remove|update  依赖名称

用户和组相关命令

# 1.查看当前用户:whoami
# 2.查看登录用户:who
	-m或am I	只显示运行who命令的用户名、登录终端和登录时间
	-q或--count	只显示用户的登录账号和登录用户的数量
# 3.退出用户:		exit

# 4.添加、删除组账号:groupadd、groupdel
# 5.添加用户账号:useradd
		-g	指定组名称  说明:如果创建用户的时候,不指定组名,那么系统会自动创建一个和用户名一样的组名。
# 6.设置用户密码:passwd [用户名]
# 7.su 切换用户
		su  root

权限相关命令

Linux文件有三种典型的权限,即r读权限、w写权限和x执行权限。在长格式输出中在文件类型的后面有9列权限位,实际上这是针对不同用户而设定的。r=4,w=2,x=1

# chmod 
  all = user + group + other 
  chmod  u+rwx,g+rwx,o+rwx   文件名
	字母法:chmod u/g/o/a +/-/= rwx 文件
	
    [ u/g/o/a ]	含义
    	u	user 					表示该文件的所有者
    	g	group 				表示与该文件的所有者属于同一组( group )者,即用户组
    	o	other 				表示其他以外的人
    	a	all 					表示这三者皆是

    [ +-= ]	含义
    	+								增加权限
    	-								撤销权限
    	=								设定权限

    rwx	含义
    	r				read 表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录的内容。
    	w				write 表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。
    	x				excute 表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。
   
   数字法:   4读 2写  1执行
      chmod 777 文件名

CRT配置

设置linux获取ip地址 (编辑网络配置文件)

vi /etc/sysconfig/network-scripts/ifcfg-ens33

image-20210506194238775

修改ens33配置文件:

BOOTPROTO=dhcp
ONBOOT=yes

重启启动网路服务加载修改配置生效

systemctl restart network

查看ip地址

ip addr

此时ip已经获取

image-20210506194647423

测试外部网络连通(保证宿主机可以上网前提)

    ping www.baidu.com

使用CRT工具连接即可

image-20210506202557475

安装JDK

为了方便使用,在开始配置之前,利用命令yum install vim安装vim

同样重要的功能,快照

image-20210506210740915

能记录当前虚拟机的状态,以便恢复到记录的时刻防止意外发生

然后利用FTP工具上传JDK安装包到Linux中

image-20210506203930036

安装到usr目录下

image-20210506204006667

在解压后到jdk的bin目录下查看java版本

image-20210506204318398

配置环境变量

vim /etc/profile
#在文件末尾加入如下配置
export JAVA_HOME=/usr/jdk1.8.0_202
export PATH=$PATH:$JAVA_HOME/bin
# 加载配置生效
source /etc/profile    加载配置生效
reboot                 重启系统
#注意: 以上两个选项选择任意一个即可source可以不用重启立即生效,某些情况下source无法生效时,可以使用重启试试

此时配置成功

image-20210506205050362

也可以使用rpm命令安装

rpm -ivh jdk-8u202-linux-x64.rpm 
#然后搜索rpm的安装位置
whereis java
#或者
find / -name "java"
#默认在/usr/java/下

然后同理于上面tar安装的步骤,配置环境后即可

安装Tomcat

准备工作

同理上传到usr目录下并解压

image-20210506211109844

启动tomcat

./bin/startup.sh

image-20210506211749770

查看Tomcat是否启动

image-20210506212029242

使用ps或者jps两个命令都可以查看

关闭网络防火墙

$ systemctl stop firewalld	   关闭网络防火墙
$ systemctl disable firewalld  关闭开机自启动(永久关闭)

访问tomcat

http://172.16.211.4:8080

/conf/server.xml下可以修改端口号

image-20210506212608053

显示tomcat实时控制台信息()

进入tomcat的logs目录中使用
tail -f catalina.out 命令实时查看控制台信息

image-20210506212757867

关闭tomcat

在tomcat的bin目录下面使用 ./shutdown.sh

此刻Tomcat已经在Linux部署完毕,来测试一下在Linux部署SpringBoot

需要注意以jsp作为模板时候的问题,但不推荐以jps作为模板使用

11.在linux系统中jar包方式部署springboot

安装MySQL

准备工作

  • 卸载mariadb,否则安装mysql会出现冲突
  • 执行命令rpm -qa | grep mariadb
  • 列出所有被安装的mariadb rpm 包;
  • 执行命令rpm -e --nodeps mariadb-libs-5.5.xx-x.el7.x86_64卸载

开始安装

# 1.添加官方的yum源创建并编辑mysql-community.repo文件
		vi /etc/yum.repos.d/mysql-community.repo
# 2.粘贴以下内容到源文件中
		[mysql56-community]
    name=MySQL 5.6 Community Server
    baseurl=http://repo.mysql.com/yum/mysql-5.6 -community/el/7/$basearch/
    enabled=1
    gpgcheck=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
    
   #注意:如果需要安装mysql5.7只需要将baseurl修改即可 
    	baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/

# 3.安装mysql
	sudo yum install -y mysql-community-server

启动与登录

# 1.启动mysql数据库
systemctl start mysqld

# 2.修改mysql数据库密码
mysqladmin -u root -p password 回车 输入原始密码 在输入新的密码

#注意:5.7之前版本安装完成之后没有密码,mysql5.7之后的版本的初始密码是随机生成的,放在了 /var/log/mysqld.log
#使用命令 grep ‘temporary password’ /var/log/mysqld.log 读出来即可

# 5.7开始mysql不支持简单密码,使用Root!123

# 3.登录mysql
mysql -u root -p

目录

数据库文件的存放路径在/var/lib/mysql

5.7版本的配置文件在/usr/etc/my.cnf

相关命令目录在/usr/bin

配置文件

my.cnf下添加

# 修改字符集
[mysqld]
character-set-server=utf8 
[client]
default-character-set=utf8 
[mysql]
default-character-set=utf8

重启mysql,可以发现

image-20210508172907727

开启远程访问

开启授权,让所有机器都可访问,在配置主从机的时候同样适用

image-20210507160110862

image-20210507160339587

已经连接成功

image-20210507160436771

安装MyCat

实现读写分离的中间件,也是MySQL常用的软件

准备工作

# 1.下载mycat
	http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

# 2.解压mycat
	tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

image-20191014225929256

# 3.查看解压之后目录]
	[root@localhost mycat]# ls
	总用量 12
	drwxr-xr-x. 2 root root  190 10月 14 22:58 bin
	drwxrwxrwx. 2 root root    6 3月   1 2016 catlet
	drwxrwxrwx. 4 root root 4096 10月 14 22:58 conf
	drwxr-xr-x. 2 root root 4096 10月 14 22:58 lib
	drwxrwxrwx. 2 root root    6 10月 28 2016 logs
	-rwxrwxrwx. 1 root root  217 10月 28 2016 version.txt

image-20191014230002014

# 4.移动到/usr目录
	mv mycat/ /usr/

# 5.配置mycat中conf下的配置schema.xml
		先删除原有的内容,加入以下配置
<!--定义MyCat的逻辑库  dataNode表示映射的真实节点-->   
    <schema name="test_schema" checkSQLschema="false" sqlMaxLimit="100" dataNode="testNode"></schema> 
<!--定义MyCat的数据节点 name与dataNode一致,dataHost映射真实主机,database映射真实的库-->
    <dataNode name="testNode" dataHost="dtHost" database="test" />
<!--定义数据主机 name和dataHost一致   -->
   							<dataHost name="dtHost" maxCon="1000" minCon="10" balance="1"     		writeType="0" dbType="mysql" dbDriver="native" switchType="-1" 			    slaveThreshold="100">  
<!--心跳配置   -->  
  <heartbeat>select user()</heartbeat>
                <!--写节点-->
 		<writeHost host="hostM1" url="192.168.28.128:3306" user="root"password="root">
                 <!--从节点-->
 	<readHost host="hostS1" url="192.168.28.129:3306" user="root" password="root"/>
  	</writeHost>
  							</dataHost>
# 6.配置登陆mycat的权限server.xml
<system>
  <!-- 这里配置的都是一些系统属性,可以自己查看mycat文档-->
  <property name="defaultSqlParser">druidparser</property>
  <!--5.xx必须是utf-8,8.xx为utf8mb4   -->  
  <property name="charset">utf8</property>
</system>
<!--配置用户信息-->  
<user name="root">
  <property name="password">root</property>
  <!--指定可以操作的逻辑库--> 
  <property name="schemas">test_schema</property>
</user>
# 7.在bin目录下启动mycat
	 ./mycat console

# 8.查看日志
	tail -f ../logs/mycat.log

# 9.数据库连接配置,测试

安装Nginx

# 下载Nginx
   wget http://nginx.org/download/nginx-1.17.0.tar.gz

# 然后解压下载的目录,进入解压目录中,在编译安装之前,需要安装两个依赖:
	 yum -y install pcre-devel
	 yum -y install openssl openssl-devel

# 然后开始编译安装:
	./configure
	make
	make install

# 装好之后,默认安装位置在:
	/usr/local/nginx/sbin/nginx

# 启动nginx,进入nginx安装目录的sbin目录中执行:
	./nginx
	ps -aux|grep nginx
	
# 浏览器访问,可以看到nginx欢迎页面:
	http://172.16.211.4:80/
		注意:关闭网络防火墙
		
# 关闭nginx,进入nginx安装目录的sbin目录中执行:
	./nginx -s stop

# 1nginx配置文件在nginx安装目录的conf目录中:
	[root@localhost conf]# ls -l
	总用量 60
	-rw-r--r--. 1 root root 2656 10月 14 21:17 nginx.conf
	.......
	注意:nginx.conf为nginx的配置文件,可以在nginx.conf修改nginx默认配置

安装Redis

# 0.准备环境
- vmware15.x+
- centos7.x+

# 1.下载redis源码包
- https://redis.io/

image-20200623121621195

# 2.下载完整源码包
- redis-4.0.10.tar.gz

image-20200623123918876

# 3.将下载redis资料包上传到Linux中

image-20210511115817995

# 4.解压缩文件
[root@localhost ~]# tar -zxvf redis-4.0.10.tar.gz
[root@localhost ~]# ll

image-20210511115856761

# 5.安装gcc  
- yum install -y gcc

# 6.进入解压缩目录执行如下命令
- make MALLOC=libc

# 7.编译完成后执行如下命令
- make install PREFIX=/usr/redis

# 8.进入/usr/redis目录启动redis服务 
- ./redis-server

image-20210511120413476

# 9.Redis服务端口默认是 6379

# 10.进入bin目录执行客户端连接操作
-  ./redis-cli -h localhost -p 6379 
-  因为是本机,所以 ./redis-cli就可以连接

image-20210511120701317

默认在安装redis后,安装目录没有任何配置文件,需要拷贝原码目录中的配置文件redis.conf到usr下的redis目录下

image-20210511121238577

以加载配置文件的启动

- ./redis-server ../redis.conf
# 11.开启远程连接
-  vim redis.conf

image-20210512102805521

重启后生效,连接成功

image-20210512103002519

安装RabbitMQ

准备工作

yum -y update
# Erlang在默认的YUM存储库中不可用,因此您将需要安装EPEL存储库
yum -y install epel-release
yum -y update
# 安装Erlang
yum -y install erlang socat
# 查看安装后Erlang的版本
erl -version

image-20210526115805077

正式安装

上传文件至linux

image-20210526120554574

yum install rabbitmq-server-3.6.10-1.el7.noarch.rpm

使用命令

# 运行
systemctl start rabbitmq-server
# 自启动
systemctl enable rabbitmq-server
# 查看状态
systemctl status rabbitmq-server

用户相关

默认账号密码都是guest

# 查看用户
sudo rabbitmqctl list_users
# 添加用户
rabbitmqctl add_user username password
rabbitmqctl set_user_tags username administrator
# 赋予用户默认的全部操作权限
rabbitmqctl set_permissions -p / username “.*” “.*” “.*”

开启web控制台

# 启动RabbitMQ Web管理控制台
rabbitmq-plugins enable rabbitmq_management
# 将RabbitMQ文件的所有权提供给RabbitMQ用户
chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/
# url
http://Your_Server_IP:15672/

image-20210526122044856

开启远程访问

默认情况下,RabbitMQ的默认的guest用户只允许本机访问, 如果想让guest用户能够远程访问的话,只需要将配置文件中的loopback_users列表置为空即可

cd /etc/rabbitmq/
# 默认是没有配置文件的,需要自己创建
vim rabbitmq.config
# 在文件中添加如下
[{rabbit, [{loopback_users, []}]}]
# 重启服务即可

安装FastDFS

主要分为两部分

  • Tracker 安装
  • Storage 安装

Tracker 安装

由于 FastDFS 采用 C 语言开发,所以在安装之前,如果没有 gcc 环境,需要先安装,安装命令如下:

yum install gcc-c++

再来看两个库,由于 FastDFS 依赖 libevent 库,安装命令如下:

yum -y install libevent

另一个库是 libfastcommon,这是 FastDFS 官方提供的,它包含了 FastDFS 运行所需要的一些基础库。

libfastcommon 下载地址:https://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz

将下载好的 libfastcommon 拷贝至 /usr/local/ 目录下,然后依次执行如下命令:

cd /usr/local
tar -zxvf V1.0.43.tar.gz
cd libfastcommon-1.0.43/
./make.sh
./make.sh install

接下来下载 Tracker,注意,由于 Tracker 和 Storage 是相同的安装包,所以下载一次即可

安装文件可以从 FastDFS 的 GitHub 仓库上下载,下载地址:https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz

下载成功后,将下载文件拷贝到 /usr/local 目录下,然后依次执行如下命令安装:

cd /usr/local
tar -zxvf V6.06.tar.gz
cd fastdfs-6.06/
./make.sh
./make.sh install

安装成功后,执行如下命令,将安装目录内 conf 目录下的配置文件拷贝到 /etc/fdfs 目录下:

cd conf/
cp ./* /etc/fdfs/

接下来进入 /etc/fdfs/ 目录下进行配置

打开 tracker.conf 文件:

vi tracker.conf

修改如下配置:

image-20210712152953238

image-20210712153240483

接下来执行如下命令启动 Tracker:

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start

如此之后,我们的 Tracker 就算安装成功了。

Storage 安装

Storage 安装也需要 libevent 和 libfastcommon,这两个库的安装参考上文

Storage 本身的安装,也和 Tracker 一致,执行命令也都一样,因为我这里将 Tracker 和 Storage 安装在同一台服务器上,所以不用再执行安装命令了(相当于安装 Tracker 时已经安装了 Storage 了)

唯一要做的,就是进入到 /etc/fdfs 目录下,配置 Storage:

vi storage.conf

这里一共配置三个地方,分别是 base_path、store_path0 以及 tracker_serverbase_path、store_path0地址相同,tracker_server 模板有两个地址,我们这里只有一个,配置完成后,记得注释掉另外一个不用的。

image-20210712153654415

image-20210712153829253

配置完成后,执行如下命令启动 Storage:

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start

这两个启动完成后,现在就可以做文件的上传了,但是一般如果是图片文件,我们还需要提供一个图片的访问功能,目前来说最佳方案当然是 Nginx ,所以我们这里连同 Nginx 一起配置好,再来做测试。

fastdfs-nginx-module

图片上传我们一般使用 FastDFS,图片上传成功之后,接下来的图片访问我们一般采用 Nginx,Nginx安装已经完成,现在开始安装下载 fastdfs-nginx-module,下载地址:https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz

下载完成后,将下载的文件拷贝到 /usr/local 目录下。然后进入 /usr/local 目录,分别执行如下命令:

cd /usr/local
tar -zxvf V1.22.tar.gz

然后将 /usr/local/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf 文件拷贝到 /etc/fdfs/ 目录下,并修改该文件的内容:

vi /etc/fdfs/mod_fastdfs.conf

image-20210712155658437

接下来,回到第一步下载的 nginx 安装文件的解压目录中,执行如下命令,重新配置编译安装:

./configure --add-module=/usr/local/fastdfs-nginx-module-1.22/src
make
make install

安装完成后,修改 nginx 的配置文件,如下:

vi /usr/local/nginx/conf/nginx.conf

image-20210712163039593

在这里配置 nginx 请求转发。

配置完成后,启动 nginx,看到如下日志,表示 nginx 启动成功:

ngx_http_fastdfs_set pid=9908

疑问:fastdfs-nginx-module 有啥用

到头来还是 nginx 本身直接找到了图片文件目录,fastdfs-nginx-module 到底有啥用?

前面我们说过,Storage 由很多组构成,每个组又是一个小的集群,在每一个组里边,数据会进行同步,但是如果数据还没同步,这个时候就有请求发来了,该怎么办?此时fastdfs-nginx-module 会帮助我们直接从源 Storage 上获取文件。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!