Java开发所需的Linux环境配置
Linux环境配置
本文主要讲解在Linux环境下的Java开发环境搭建,包含各种常用软件的安装步骤以及基础的Linux知识
安装Centos
因为开发中只需用得到命令行操作,所以只需要安装Minimal版本
进行配置
安装完成后重启即可
重启后来到登录界面,输入账号密码即可登录
Linux基础知识
目录
- 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 递归显示指定目录下的文件清单,即会显示指定目录分支内各子目录中的文件清单。
操作文件命令[重点]
# 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命令
# 常用命令:
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
修改ens33配置文件:
BOOTPROTO=dhcp
ONBOOT=yes
重启启动网路服务加载修改配置生效
systemctl restart network
查看ip地址
ip addr
此时ip已经获取
测试外部网络连通(保证宿主机可以上网前提)
ping www.baidu.com
使用CRT工具连接即可
安装JDK
为了方便使用,在开始配置之前,利用命令yum install vim
安装vim
同样重要的功能,快照
能记录当前虚拟机的状态,以便恢复到记录的时刻防止意外发生
然后利用FTP工具上传JDK安装包到Linux中
安装到usr
目录下
在解压后到jdk的bin
目录下查看java版本
配置环境变量
vim /etc/profile
#在文件末尾加入如下配置
export JAVA_HOME=/usr/jdk1.8.0_202
export PATH=$PATH:$JAVA_HOME/bin
# 加载配置生效
source /etc/profile 加载配置生效
reboot 重启系统
#注意: 以上两个选项选择任意一个即可source可以不用重启立即生效,某些情况下source无法生效时,可以使用重启试试
此时配置成功
也可以使用rpm
命令安装
rpm -ivh jdk-8u202-linux-x64.rpm
#然后搜索rpm的安装位置
whereis java
#或者
find / -name "java"
#默认在/usr/java/下
然后同理于上面tar安装的步骤,配置环境后即可
安装Tomcat
准备工作
同理上传到usr
目录下并解压
启动tomcat
./bin/startup.sh
查看Tomcat是否启动
使用ps
或者jps
两个命令都可以查看
关闭网络防火墙
$ systemctl stop firewalld 关闭网络防火墙
$ systemctl disable firewalld 关闭开机自启动(永久关闭)
访问tomcat
http://172.16.211.4:8080
在/conf/server.xml
下可以修改端口号
显示tomcat实时控制台信息()
进入tomcat的logs目录中使用
tail -f catalina.out 命令实时查看控制台信息
关闭tomcat
在tomcat的bin目录下面使用 ./shutdown.sh
此刻Tomcat已经在Linux部署完毕,来测试一下在Linux部署SpringBoot
需要注意以jsp作为模板时候的问题,但不推荐以jps作为模板使用
安装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,可以发现
开启远程访问
开启授权,让所有机器都可访问,在配置主从机的时候同样适用
已经连接成功
安装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
# 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
# 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/
# 2.下载完整源码包
- redis-4.0.10.tar.gz
# 3.将下载redis资料包上传到Linux中
# 4.解压缩文件
[root@localhost ~]# tar -zxvf redis-4.0.10.tar.gz
[root@localhost ~]# ll
# 5.安装gcc
- yum install -y gcc
# 6.进入解压缩目录执行如下命令
- make MALLOC=libc
# 7.编译完成后执行如下命令
- make install PREFIX=/usr/redis
# 8.进入/usr/redis目录启动redis服务
- ./redis-server
# 9.Redis服务端口默认是 6379
# 10.进入bin目录执行客户端连接操作
- ./redis-cli -h localhost -p 6379
- 因为是本机,所以 ./redis-cli就可以连接
默认在安装redis后,安装目录没有任何配置文件,需要拷贝原码目录中的配置文件redis.conf
到usr下的redis目录下
以加载配置文件的启动
- ./redis-server ../redis.conf
# 11.开启远程连接
- vim redis.conf
重启后生效,连接成功
安装RabbitMQ
准备工作
yum -y update
# Erlang在默认的YUM存储库中不可用,因此您将需要安装EPEL存储库
yum -y install epel-release
yum -y update
# 安装Erlang
yum -y install erlang socat
# 查看安装后Erlang的版本
erl -version
正式安装
上传文件至linux
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/
开启远程访问
默认情况下,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
修改如下配置:
接下来执行如下命令启动 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_server ,base_path、store_path0地址相同,tracker_server 模板有两个地址,我们这里只有一个,配置完成后,记得注释掉另外一个不用的。
配置完成后,执行如下命令启动 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
接下来,回到第一步下载的 nginx 安装文件的解压目录中,执行如下命令,重新配置编译安装:
./configure --add-module=/usr/local/fastdfs-nginx-module-1.22/src
make
make install
安装完成后,修改 nginx 的配置文件,如下:
vi /usr/local/nginx/conf/nginx.conf
在这里配置 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 协议 ,转载请注明出处!