Linux - 凡论人心,观事传,不可不熟,不可不深
Linux
学习目标
Linux简介
Linux系统版本
Linux系统版本-发行版
- ubuntu:以桌面应用为主
- RedHat:应用最广泛、收费
- centOS:RedHat的社区版、免费
- openSUSE:对个人完全免费、图形界面华丽
- Fedora:功能完备、快速更新、免费
- 红旗Linux:北京中科红旗软件技术有限公司开发
Linux安装(centOS7)
安装方式介绍
- 物理机安装:直接将操作系统安装到服务器硬件上。
虚拟机安装:通过虚拟机软件安装。
- 虚拟机指通过软件模拟的具有完整硬件系统功能、运行在完全隔离环境中的完整计算机系统。
- VMware Workstation16 密钥:ZF3R0-FHED2-M80TY-8QYGC-NPKYF
安装Linux
root密码
网卡设置
修改网络初始化配置,设定网卡在系统启动时初始化
改最后一项ONBOOT
测试
安装SSH连接工具
- SSH,建立在应用层基础上的安全协议。
常用的SSH连接工具:
- putty
- secureCRT
- xshell
- finalshell
- 通过SSH连接工具就可以实现从本地连接到远程的Linux服务器
finalshell SSH连接centos
Linux和Windows目录结构对比
Linux目录介绍
bin
存放二进制可执行文件boot
存放系统引导时使用的各种文件dev
存放设备文件etc存放系统配置文件home
存放系统用户的文件·lib
存放程序运行所需的共享库和内核模块opt
额外安装的可选应用程序包所放置的位置root
超级用户目录sbin
存放二进制可执行文件,只有root用户才能访问tmp
存放临时文件usr
存放系统应用程序var
存放运行时需要改变数据的文件,例如日志文件
Linux常用命令
Linux命令初体验
- 注意事项:在执行Linux命令时,提示信息如果显示为乱码,这是由于编码问题导致,只需要修改Linux的编码即可。
- 命令如下:
echo 'LANG="en_US.UTF-8"' >> /etc/profile
source /etc/profile
Linux命令初体验
Linux命令使用技巧
- Tab键自动补全
- 连续两次Tab键,给出操作提示
- 使用上下箭头快速调出曾经使用过的命令
- 使用
clear命令
或者Ctrl+l快捷键
实现清屏
Linux命令格式
文件目录操作命令
ls
显示指定目录下的内容
简写“ll”=“ls -l”
cd
切换当前工作目录,即进入指定目录
cat
显示文件内容
例1:cat /etc/profile
例2:cat -n /etc/profile
more
以分页的形式显示文件内容
例:more /etc/profile
tail
查看文件末尾的内容
例:tail -f /my/my.log
mkdir
创建目录
举例
rmdir
删除空目录
举例
rm
删除文件或者目录
举例
拷贝移动命令
CP
用于复制文件或目录
举例① —— 将cpdd01.txt复制到cpdd目录中
举例② —— 将cpdd01.txt复制到当前目录,并改名为cpdd02.txt
举例③ —— 将cpdd目录和目录下所有文件复制到ps目录下
举例④ —— 将hei目录下所有文件复制到ps目录下
mv
为文件或目录改名、或将文件或目录移动到其它位置
① 将tiktok.txt改名为dou.txt
② 将文件dou.txt移动到ps目录中
③ 将dou.txt移动到cp9目录中,并改名为yin.txt
④ 如果mv1目录不存在,将mv1目录改名为mv2;如果mv1目录存在,将mv1目录移动到mv2目录中
打包压缩命令
tar
对文件进行打包、解包、压缩、解压
① 建包 -cvf
② 打包压缩 -zvcf
③ 解包 -xvf
④ 解压 -zxvf
举例(打包、解包)
解包 - 解压到根目录
文本编辑命令
vi/vim
安装vim
vim
针对vim中的三种模式说明如下:
1、命令模式
- 命令模式下可以查看文件内容、移动光标(上下左右箭头、gg、G)。
- 通过vim命令打开文件后,默认进入命令模式。
- 另外两种模式需要首先进入命令模式,才能进入彼此。
2、插入模式
- 插入模式下可以对文件内容进行编辑。
- 在命令模式下按下[i,a,o]任意一个,可以进入插入模式。
- 进入插入模式后,下方会出现【insert】字样。
- 在插入模式下按下ESC键,回到命令模式。
3、底行模式
- 底行模式下可以通过命令对文件内容进行查找、显示行号、退出等操作。
- 在命令模式下按下[:,/]任意一个,可以进入底行模式。
- 通过/方式进入底行模式后,可以对文件内容进行查找。
- 通过:方式进入底行模式后,可以输入wq(保存并退出)、q!(不保存退出)、set nu(显示行号)。
查找命令
find
在指定目录下查找文件
在当前目录及其子目录下查找.java结尾文件
在/root目录及其子目录下查找.java结尾的文件
grep
从指定文件中查找指定的文本内容
查找Hello.java文件中出现的Hello字符串的位置
查找当前目录中所有.java结尾的文件中包含hello字符串的位置
Linux软件安装
软件安装方式
二进制发布包安装
- 软件已经针对具体平台编译打包发布,只要解压,修改配置即可。
rpm安装
- 软件已经按照redhat的包管理规范进行打包,使用rpm命令进行安装,不能自行解决库依赖问题。
yum安装
- 一种在线软件安装方式,本质上还是rpm安装,自动下载安装包并安装,安装过程中自动解决库。
依赖问题源码编译安装
- 软件以源码工程的形式发布,需要自己编译打包。
安装jdk
上传jdk文件
解压jdk
配置环境变量
vim /etc/profile
shift + g
定位到文件末尾- 点击
i键
进入插入模式 - 输入以下两行变量:
JAVA_HOME=/usr/local/jdk1.8.0_171
PATH=$JAVA_HOME/bin:$PATH
安装Tomcat
上传和解压tomcat
进入Tomcat的bin目录启动服务
验证Tomcat启动是否成功
查看启动日志
- 先回到tomcat文件夹根目录下,再
cd logs/
more /usr/local/apache-tomcat-7.0.57/logs/catalina.out
无异常信息,出现端口号则为运行成功
- 也可以用
tail -50 /usr/local/apache-tomcat-7.0.57/logs/catalina.out
查看进程 ps -ef|grep tomcat
防火墙操作
- 查看防火墙状态(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中专门用于控制防火墙的命令。
- 为了保证系统安全,服务器的防火墙不建议关闭。
暂时关闭防火墙
systemctl stop firewalld
输入域名http://192.168.206.130:8080/,能访问成功:
开放指定端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
立即生效:
firewall-cmd --reload
输入域名http://192.168.206.130:8080/,能访问成功:
查看开放的端口
停止tomcat服务
运行Tomcat的bin目录中提供的停止服务的脚本文件shutdown.sh
结束Tomcat进程 —— 查看Tomcat进程,获得进程id
安装MySQL
rpm -qa | grep mysql
rpm -qa | grep mariadb
卸载已经安装的冲突软件 —— 移除mariadb
将资料中提供的MySQL安装包上传到Linux并解压
按照顺序安装rpm软件包
* rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm
* rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm
* rpm -ivh mysql-community-devel-5.7.25-1.el7.x86_64.rpm
* rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
* rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm
* yum install net-tools
* rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm
* yum update --通过指令升级现有软件及系统内核
启动mysql
查看mysql服务状态
启动mysql服务
开机启动mysql服务
systemctl enable mysqld
查看已经启动的服务
查看mysql进程
登录MySQL数据库,查阅临时密码
登录MySQL,修改密码,开放访问权限
- set global validate_password_length=4;
- set global validate_password_policy=LOW;
- set password = password('root');
grant all on *.* to 'root'@'%' identified by 'root';
flush privileges;
外部连接数据库(Navicat)
连接成功
安装lrzsz —— 文件上传、下载
rz
—— “选择上传文件”
项目部署
手工部署项目
① 在IDEA中开发SpringBoot项目并打成jar包
② 将jar包上传到Linux服务器
mkdir /usr/local/app --创建目录,将项目jar包放到此目录
③ 启动SpringBoot程序
java -jar hello.jar
④ 检查防火墙,确保8080端口对外开放,访问SpringBoot项目
⑤ 改为后台运行SpringBoot程序,并将日志输出到日志文件
⑥ 停止SpringBoot程序
通过Shell脚本自动部署项目
- 在Linux中安装Git
- 在Linux中安装maven
- 编写Shell脚本(拉取代码、编译、打包、启动)
- 为用户授予执行Shell脚本的权限
- 执行Shell脚本
① 在Linux中安装Git
yum list git --列出git安装包
yum install git --在线安装git
② 使用Git克隆代码
cd /usr/local/
git clone https://gitee.com/xxxxxxx/xxxxx.git
③ 将资料中提供的maven安装包上传到Linux,在Linux中安装maven
tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local
vim /etc/profile
export MAVEN_HOME=/usr/local/apache-maven-3.5.4
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
source /etc/profile
mvn -version
vim /usr/local/apache-maven-3.5.4/conf/settings.xml
<localRepository>/usr/local/repo</localRepository>
④ 将资料中提供的Shell脚本文件复制到Linux —— bootstart.sh
- Shell脚本(shell script),是一种Linux系统中的脚本程序。
- 使用Shell脚本编程跟JavaScript、 Java编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
bootstart.sh
#!/bin/sh
echo =================================
echo 自动化部署脚本启动
echo =================================
echo 停止原来运行中的工程
APP_NAME=helloworld
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Stop Process...'
kill -15 $tpid
fi
sleep 2
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Kill Process!'
kill -9 $tpid
else
echo 'Stop Success!'
fi
echo 准备从Git仓库拉取最新代码
cd /usr/local/helloworld
echo 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成
echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`
cd target
echo 启动项目
nohup java -jar helloworld-1.0-SNAPSHOT.jar &> helloworld.log &
echo 项目启动完成
新建脚本
⑤ 为用户授权
- chmod(change mode)命令是控制用户对文件的权限的命令。
- Linux中的权限分为:读(r)、写(w)、执行(x)三种权限。
- Linux的文件调用权限分为三级:文件所有者(Owner)、用户组(Group)、其它用户(Other users)。
- 只有文件的所有者和超级用户可以修改文件或目录的权限。
- 要执行Shell脚本需要有对此脚本文件的执行权限,如果没有则不能执行。
chmod命令可以使用八进制数来指定权限
⑥ 设置静态ip
BOOTPROTo="static" # 使用静态IP地址,默认为dhcp
IPADDR="192.168.138.100" # 设置的静态IP地址
NETMASK="255.255.255.0" # 子网掩码
GATEWAY="192.168.138.2" # 网关地址
DNS1="192.168.138.2" # DNS服务器
Comments | NOTHING