一、目录结构
Linux的目录结构都是从根开始,也就是“/”
- bin:存放二进制可执行文件
- boot:存放系统引导时使用的各种文件
- dev:存放设备文件
- etc:存放系统配置的文件
- home:存放系统用户的文件
- lib:存放程序运行所需的共享库和内核模块
- opt:额外安装的可选应用程序包所放置的位置
- root:超级用户目录
- sbin:存放二进制可执行文件,只有root用户才能访问
- tmp:存放临时文件
- usr:存放系统应用程序
- var:存放运行时需要改变数据的文件,例如日志文件
二、Linux常用命令
2.1 Linux命令初体验
2.1.1几个常用命令
命令 对应英文 作用
ls list 查看当前目录下的内容
pwd print work directory 查看当前所在目录
cd [目录名] change directory 切换目录
touch [文件名] touch 如果文件不存在,新建文件
mkdir [目录名] make directory 创建目录
rm [文件名] remove 删除指定文件
2.1.2 Linux命令使用技巧
- Tab键自动补全
- 连续两次Tab键,给出操作提示
- 使用上下箭头快速调出曾经使用过的命令
- 使用clear命令或者Ctrl+l 实现清屏
2.1.3 Linux命令格式
command {-option} {parameter}
说明:
- command:命令名
- option:选项,可用来对命令进行控制,也可以省略
- parameter:传给命令的参数,可以是零个,一个或多个
2.2 文件目录操作命令
2.2.1 ls
显示指定目录下的内容
语法:ls {-al} {dir}
说明:
- -a 显示所有文件及目录(. 开头的隐藏文件也会列出)
- -l 除文件名称外,同时将文件形态(d表示目录,-表示文件)、权限、拥有者、文件大小等信息详细列出
注意:
由于我们使用ls命令时经常需要加入-l 选项,所以Linux为 ls -l 命令提供了一种简写方式,即 ll
2.2.2 cd
用于切换当前工作目录,即进入指定目录
语法:cd {dirName}
特殊说明:
- ~表示用户的home目录
- . 表示目录所在的目录
- … 表示目前目录位置的上级目录
举例:
- cd … :切换到当前目录的上级目录
- cd ~ :切换到用户的home目录
- cd /usr/local :切换到/usr/local目录
2.2.3 cat
用于显示文件内容
语法:cat {-n} fileName
说明:
- -n :由1开始对所有输出的行数编号
举例:
- cat /etc/profile :查看/etc目录下的profile文件内容
2.2.4 more
以分页的形式显示文件内容
语法:more fileName
操作说明:
- 回车键 向下滚动一行
- 空格键 向下滚动一屏
- b 返回上一屏
- q或者Ctrl+C 退出more
举例:
more /etc/profile :以分页方式显示/etc目录下的prifile文件内容
2.2.5 tail
查看文件末尾的内容
语法:tail {-f} fileName
说明:
- -f:动态读取文件末尾内容并显示,通常用于日志文件的内容输出
举例:
taile /etc/profile :显示/etc目录下的profile文件末尾10行的内容
taile -20 /etc/profile :显示/etc目录下的profile文件末尾20行的内容
taile -f /my.log :动态读取my.log文件末尾内容并显示
2.2.6 mkdir
创建目录
语法:mkdir {-p} dirName
说明:
- -p :确保目录名称存在,不存在就创建一个。通过此选项,可以实现多层目录同时创建
举例:
mkdir itcast :在当前目录下,建立一个名为itcast的子目录
mkdir -p itcast/test :在工作目录下的itcast目录中建立一个名为test的子目录,若itcast目录不存在,则建立一个
2.2.7 rmdir
删除空目录
语法:rmdir {-p} dirName
说明:
- -p :当子目录被删除后使父目录为空目录的话,则一并删除
举例:
rmdir itcast :删除名为itcast的空目录
rmdir -p itcast/test :删除itcast目录中名为test的子目录,若test目录删除后itcast目录变为空目录,则也被删除
rmdir itcast* :删除名称以itcast开始的空目录
2.2.8 rm
删除文件或者目录
语法:rm {-rf} name
说明:
- -r :将目录及目录中所有文件(目录)逐一删除,即递归删除
- -f :无需确认,直接删除
举例:
rm -r itcast/ :删除名为itcast的目录和目录中所有文件,删除前需确认
rm -rf itcast/ :无需确认,直接删除名为itcast的目录和目录中所有文件
rm -f hello.txt :无需确认,直接删除hello.txt文件
2.3 拷贝移动命令
2.3.1 cp
用于复制文件或目录
语法:cp {-r} source dest
说明:
- -r :如果复制的是目录需要使用此选项,此时将复制该目录下所有的子目录和文件
举例:
cp hello.txt itcast/ 将hello.txt复制到itcast目录中
cp hello.txt ./hi.txt :将hello.txt复制到当前目录,并改名为hi.txt
cp -r itcast/ ./itheima/ :将itcast目录和目录下的所有文件复制到itheima目录下
cp -r itcast/* ./itheima/ :将itcast目录下所有文件复制到itheima目录下
2.3.2 mv
为文件或目录改名、或将文件或目录移动到其他位置
语法:mv source dest
举例:
mv hello.txt hi.txt :将hello.txt改名为hi.txt
mv hi.txt itheima/ :将文件hi.txt移动到itheima目录中
mv hi.txt itheima/hello.txt :将hi.txt移动到itheima目录中,并改名为hello.txt
mv itcast/ itheima/ :如果itheima目录不存在,将itcast目录改名为itheima
mv itcast/ itheima/ :如果itheima目录存在,将itcast目录移动到itheima目录中
2.4 打包压缩文件
*tar
对文件进行打包、解包、压缩、解压
语法:tar {-zcxvf} fileName {files}
包文件后缀为.tar 表示只是完成了打包,并没有压缩
包文件后缀为.tar.gz 表示打包的同时还进行了压缩
说明:
- -z :z代表的是gzip,通过gzip命令处理文件,gzip可以对文件压缩或解压
- -c :c代表的是create,即创建新的包文件
- -x :x代表的是extract,实现从包文件中还原文件
- -v :v代表的是verbose,显示命令的执行过程
- -f :f代表的是file,用于指定包文件的名称
举例:
打包
tar -cvf hello.tar ./* :将当前目录下所有文件打包,打包后的文件名为hello.tar
tar -zcvf hello.tar.gz ./* :将当前目录下所有文件打包并压缩,打包后的文件为hello.tar.gz
解包
tar -xvf hello.tar :将hello.tar文件进行解压,并将解包后的文件放在当前目录
tar -zxvf hello.tar.gz :将hello.tar.gz文件进行解压,并将解压后的文件放在当前目录
tar -zxvf hello.tar.gz -C /usr/local :将hello.tar.gz文件进行解压,并将解压后的文件放在/usr/local目录
2.5 文本编辑命令
2.5.1 vi
vi命令时Linux系统提供的一个文本编辑工具,可以对文件内容进行编辑,类似于Windows中的记事本
语法:vi fileName
说明:
- vim是从vi发展来的一个功能更加强大的文本编辑工具,在编辑文件时可以对文本内容进行着色,方便我们对文件进行编辑处理,所以实际工作中vim更加常用
- 要是用vim命令,需要我们自己完成安装。可以使用以下命令完成安装:
yum install vim
2.5.2 vim
对文件内容进行编辑,vim其实就是一个文本编辑器
语法:vim fileName
说明:
- 在使用vim命令编辑文件时,如果指定的文件存在则直接打开此文件。如果不存在则新建文件
- vim在进行文本编辑时共分为三种模式,分别是命令模式,插入模式,底行模式。这三种模式之间可以相互切换。我们在使用vim时一定要注意我们当前所处的是哪种模式
针对三种模式说明如下:
- 命令模式
- 命令模式下可以查看文件内容、移动光标(上下左右箭头、gg、G)
- 通过vim命令打开文件后,默认进入命令模式
- 另外两种模式需要首先进入命令模式,才能好进入彼此
- 插入模式
- 插入模式下可以对文件内容进行编辑
- 在命令模式下按下[i,o,a]任意一个,可以进入插入模式。进入插入模式后,下方会出现[insert]字样
- 在插入模式下按下ESC键,回到命令模式
- 底行模式
- 底行模式下可以通过命令对文件内容进行查找、显示行号、退出等操作
- 在命令模式下按下[:,/]任意一个,可以进入底行模式
- 通过/方式进入底行模式后,可以对文件内容进行查找
- 通过: 方式进入底行模式后,可以输入wq(保存并退出)、q!(不保存退出)、set nu(显示行号)
2.6 查找命令
2.6.1 find
在指定目录下查找文件
语法:find dirName -option fileName
举例:
find . -name “*.java” :在当前目录及其子目录下查找.java文件
find /itcast -name “*.java” :在/itcast目录及其子目录下查找.java结尾的文件
2.6.2 grep
从指定文件中查找指定的文本内容
语法:grep word fileName
举例:
grep Hello HelloWorld.java :查找HelloWorld.java文件中出现的Hello字符串的位置
grep hello *.java :查找当前目录中所有.java结尾的文件中包含hello字符串的位置
三、Linux软件安装
3.1 软件安装方式
- 二进制发布包安装
- 软件已经针对平台编译打包发布,只要解压,修改配置即可
- rpm安装
- 软件已经按照redhat的包管理规范进行打包,使用rpm命令进行安装,不能自行解决库依赖问题
- yum安装
- 一种在线软件安装方式,本质上还是rpm安装,自动下载安装包并安装,安装过程中自动解决库依赖问题
- 源码编译安装
- 软件以源码工程的形式发布,需要自己编译打包
3.2 安装jdk
操作步骤:
- 使用上传工具将二进制发布包上传到Linux,如jdk-8u171-linux-x64.tar.gz
- 解压安装包,命令为tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local
- 配置环境变量,使用vim命令修改/etc/profile文件,在文件末尾加入如下配置
JAVA_HOME=/usr/local/jdk1.8.0.0_171
PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH - 重新加载profile文件,使更改的配置立即生效,命令为source /etc/profile
- 检查安装是否成功,命令为java -version
3.3 安装Tomcat
3.3.1 安装
操作步骤:
- 使用上传工具将二进制包上传到Linux
- 解压安装包
- 进入Tomcat的bin目录启动服务,命令为sh startup.sh 或者./startup.sh
3.3.2 验证是否启动成功
一般有两种方式
- 查看启动日志
- more /usr/local/java/tomcat目录/logs/catalina.out
- tail -50 /usr/local/java/tomcat目录/logs/catalina.out
- more /usr/local/java/tomcat目录/logs/catalina.out
- 查看进程
- ps -ef | grep tomcat
注意:
- ps命令是Linux下非常强大的进程查看命令,通过ps -ef可以查看当前运行的所有进程的详细信息
- “|”在Linux中成为管道符,可以将前面一个命令的结果输出给后一个命令作为输入
- 使用ps命令查看进程时,经常配合管道符和查找grep 一起使用,来查看特定进程
3.3.3 防火墙操作
- 查看防火墙状态
- systemctl status firewalld :信息比较全
- firewall-cmd --state 信息简单
- 暂时关闭防火墙
- systemctl stop firewalld
- 永久关闭防火墙
- systemctl disable firewalld
- 开启防火墙
- systemctl start firewalld
- 开放指定端口
- firewall-cmd --zone=public --add-port=8080/tcp --permanent
- 关闭指定端口
- firewall-cmd --zone=public --remove-port=8080/tcp --permanent
- 立即生效
- firewall-cmd --reload
- 查看开放的端口
- firewall-cmd --zone=public --list-ports
注意:
- systemctl是管理Linux中服务的命令,可以对服务进行启动、停止、重启、查看状态等操作
- firewall-cmd是Linux中专门用于控制防火墙的命令
- 为了保证系统安全,服务器的防火墙不建议关闭
3.3.4 停止Tomcat服务
一般有两种方式
- 运行bin目录中的停止服务的脚本文件
- sh shutdown.sh
- ./shutdown.sh
- 结束Tomcat进程
- ps -ef | grep tomcat :获得进程id
- kill -9 进程id :执行命令结束进程
注意:
kill命令是Linux提供的用于结束进程的 命令,-9表示强制结束
3.4 安装MySQL
3.4.1 检查当前
检查当前系统中是否安装MySQL数据库
rpm -qa :查询当前系统中安装的所有软件
rpm -qa | grep mysql :查询当前系统中安装的名称带mysql 的软件
rpm -qa | grep mariadb :查询当前系统中安装的名称带mariadb的软件
RPM(Red-Hat Package Manager)软件包管理器,是红帽Linux用于管理和安装软件的工具
注意:如果系统已经安装MySQL数据库,安装将失败。CentOS自带mariadb,与MySQL数据库冲突
3.4.2 卸载软件
卸载已经安装的冲突软件
rpm -e --nodeps 软件名称 :卸载软件
3.4.3 安装
一、准备工作
- 下载安装包 下载地址
- 查看系统⾃带的 MARIADB
rpm -qa|grep mariadb - 卸载系统⾃带的 MARIADB(如果有),remove后面加 rpm -qa|grep mariadb 查询出来的路径
yum -y remove
二、解压
- 将 mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz 安装包上传到 /usr/local/ 目录下
- 安装包解压,并重命名为mysql
xz -d mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.26-linux-glibc2.12-x86_64.tar
mv mysql-8.0.26-linux-glibc2.12-x86_64 mysql - 创建MYSQL⽤户和⽤户组
groupadd mysql
useradd -g mysql mysql - 修改MYSQL⽬录的归属⽤户
chown -R mysql:mysql ./ - 准备MYSQL的配置⽂件,编辑 vim /etc/my.conf
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
#设置3306端⼝
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装⽬录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放⽬录
datadir=/usr/local/mysql/data
# 允许最⼤连接数
max_connections=200
# 服务端使⽤的字符集默认为8⽐特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使⽤的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
# binglog配置
server-id = 1
log-bin = mysql-bin
log_bin_index = binlog.index
binlog_format = ROW
# binlog过期清理时间;
expire_logs_days= 7
# binlog每个日志文件大小;
max_binlog_size = 1024m
# binlog缓存大小;
binlog_cache_size = 128m
# 最大binlog缓存大小。
max_binlog_cache_size = 1024m
并且修改权限
mkdir /var/lib/mysql
chmod 777 /var/lib/mysql
三、 安装MySQL
- 进入cd /usr/local/mysql 目录 进行初始化
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data - 执行初始化后,控制台会返回临时密码, 记录临时密码 ,后面会用到
例如:像我的例子在最后一行 A temporary password is generated for root@localhost:kvct:yIy8_qk
我的临时密码就是这个: kvct:yIy8_qk
例子:
2021-09-14T01:30:19.227943Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.26) initializing of server in progress as process 1808
2021-09-14T01:30:19.250431Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2021-09-14T01:30:20.184005Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2021-09-14T01:30:21.140583Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1 is enabled for channel mysql_main
2021-09-14T01:30:21.141148Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1.1 is enabled for channel mysql_main
2021-09-14T01:30:21.341903Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: kvct:yIy8_qk - 复制启动脚本到资源目录
cp ./support-files/mysql.server /etc/init.d/mysqld - 编辑vim /etc/init.d/mysqld,修改 basedir 和 datadir ,为其实际对应的目录
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
四、设置MYSQL服务开机自启
- 增加 mysqld 服务控制脚本执⾏权限
chmod +x /etc/init.d/mysqld - 将 mysqld 服务加⼊到系统服务
chkconfig --add mysqld - 检查 mysqld 服务是否已经⽣效即可
mysqld 0:关 1:关 2:开 3:开 4:开 5:开 6:关
chkconfig --list mysqld - 启动 mysql 服务, 返回 SUCCESS!
service mysqld start
如何停止 mysql 服务
service mysqld stop
五、配置环境变量
- 编辑 vim ~/.bash_profile,在文件末尾添加下面信息
export PATH=$PATH:/usr/local/mysql/bin - 执行下面命令,使环境变量生效
source ~/.bash_profile
六、登录MySQL,并修改密码
- 以 root 账户登录 mysql
mysql -u root -p - 输入刚才记录的 临时密码
- 修改 Root 账户密码,并刷新权限
alter user user() identified by “root”;
flush privileges; - 设置远程主机登录
use mysql;
update user set user.Host=‘%’ where user.User=‘root’;
flush privileges;
七、检查防火墙
-
做完上面步骤,肯能还是远程连接不上,开放端口或者关闭防火墙
-
查看防火墙状态
systemctl status firewalld -
查看开机是否启动防火墙服务
systemctl is-enabled firewalld -
关闭防火墙
systemctl stop firewalld -
禁用防火墙(系统启动时不启动防火墙服务)
systemctl disable firewalld
systemctl is-enabled firewalld -
开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload # 配置立即生效 -
关闭端口
firewall-cmd --zone=public --remove-port=3306/tcp --permanent
firewall-cmd --reload # 配置立即生效 -
查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports -
查看监听的端口
centos7默认没有 netstat 命令,需要安装 net-tools 工具,yum install -y net-tools
netstat -lnpt -
检查端口被哪个进程占用
netstat -lnpt |grep 3306 -
查看进程的详细信息
ps 6832 -
查看包含 mysql 的所有进程
ps -ef | grep mysql -
中止进程
kill -9 6832
四、项目部署
一般有两种:手工部署项目、通过Shell脚本自动部署项目
4.1 手工部署项目
- 将项目打包成jar包
- 将jar包上传到Linux
- 启动程序(java -jar app.jar)
- 检查防火墙,确保8080端口对外开放
- 改为后台运行,并将输出打印到日志文件
- nohup命令:用于不挂断地运行指定命令,退出终端不会影响程序的运行
- 语法格式:nohup Command {Arg …} {&}
- 参数说明
- Command:要执行的命令
- Arg:一些参数,可以指定输出文件
- &:让命令在后台运行
- 举例:nohup java -jar app.jar &>hello.log &
- 后台运行java -jar命令,并将日志输出到hello.log文件
- 停止程序(采用杀死java -jar命令进程)
四、项目部署