Linux知识点复习
Linux简介
- 操作系统(Operating System)是应用程序运行的基础支撑环境
操作系统作用是管理和控制计算机系统的硬件与软件资源
lntel x86架构上常见的操作系统:Windows、Linux、Unix…- Linux是开源的基于Intel x86架构的类Unix多用户操作系统
Linux是目前最主要的服务器端操作系统
互联网大厂都在使用Linux作为服务器主要操作系统
Linux系统目录
- "/“是所有目录的顶点,称为"根目录”
不同目录下的数据可分布在不同磁盘,所有目录按规则组织与命名
Linux也区分绝对路径与相对路径- /: 根目录
/bin: 常用的二进制命令所在目录,例如ls、cp、mkdir…
/boot: Linux内核与系统引导程序目录
/dev: 设备文件的目录,比如声卡、磁盘、光驱…
/etc: yum、rpm方式安装应用程序的默认配置文件路径
/home: 用于存放用户的数据,用户的"家"目录
/var: 系统与软件服务运行日志目录- /lib: 启动系统与运行命令所需的共享库文件与内核模块目录
/proc: 系统运行时,进程信息与内核信息存放在此目录
/root: Linux超级用户目录,类似于windows的administrator
/sbin: 系统管理命令存放目录,是超级用户root可执行命令的存放地
/usr: 存放用户应用程序的目录,包含两个重要子目录
/usr/local: 编译方式安装程序的默认目录
/usr/src: 程序源码目录
SSH客户端
- SSH是专为远程登录和其他网络服务提供的安全性协议
SSH分为两个不兼容版本1.x与2.x,默认通过SSH2.x连接
基于SSH远程连接工具有很多,最常见的是Xshell与SecureCRT
Xshell和Xftp:- Xshell是著名的Linux客户端,常用于在Windows下远程访问
Xshell同时还支持Telent、RLogin、Serial等其他连接方式
Xftp是Xshell配套组件,用于向服务器上传/下载文件
Linux常用操作命令
- cd: 切换目录
pwd: 查看当前目录
ls、ll: 显示目录内容
mkdir: 创建目录
cp: 复制文件与目录
mv: 移动或重命名文件
rm: 删除文件或目录
find: 查找目录或文件
vim文本编辑器
- vi是Linux重要的文字编辑工具,vim是它的增强版
vim用于在远程环境下用命令形式对文本进行在线编辑
用法格式: vim[选项] [文件]- 普通模式:默认模式,文本只读,不可编辑
编辑模式:编辑文本模式,普通模式按i键进入,Esc键退出
命令模式:执行保存、搜索、退出等操作- delete或x: 删除单个字符
dd: 删除整行
/str: 全文查找str字符串,n下一个,N前一个
:% s/old/new/g: 替换文件内所有old字符串为new
u: 撤销最近一次操作
:wq或者:wq!: 退出并保存,只读文件要额外加!
:q!: 强制退出放弃保存- 常用文本命令
echo: 屏幕打印与文本输出, ">"为重写到文件中, ">>"为追加到文件中
cat: 合并文件或查看文件内容
合并文件内容: cat test1.txt test2.txt >> test3.txt
在控制台编辑文件内容: cat > test.txt << EOF, 结束时输入"EOF"来退出
tail: 显示文件内容尾部
显示文件最后的三行: tail -n 3 test.txt
动态监控文件内容变化: tail -f test.txt, 按"Ctrl + C"退出
grep: 文本过滤工具
查找文件中包含"hello"字符串的行: grep hello test.txt
查找文件中不包含"hello"字符串的行: grep -v hello test.txt
查找目录中包含"log"名字的文件: ll | grep log
Linux的打包与压缩
- gzip是Linux系统的文件压缩程序
gzip压缩包文件扩展名.gz
大流量的网站默认都在使用gzip进行数据压缩传输- tar是Linux系统将多个文件打包和压缩的工具
tar本质是打包软件,扩展名.tar
tar可结合gzip或其他压缩工具实现打包压缩,扩展名.tar.gz- 压缩命令: tar zcvf tomcat.tar.gz /usr/local/tomcat
解压缩命令: tar zxvf tomcat.tar.gz -C /usr/local/tomcat- 常用压缩命令
z: 通过gzip压缩或解压
c: 创建新的tar.gz文件
v: 显示执行过程
f: 指定压缩文件名称
x: 解压缩tar.gz文件
-C: 指定解压缩目录
Linux安装应用程序
- rpm安装过程中,需要用户自己解决依赖问题
yum通过引入软件仓库,联网下载rpm包及依赖,并依次自动安装
yum是rpm的前端程序,其目的就是简化rpm的安装过程- yum常用命令
yum search 应用名 #在仓库中查询是否存在指定应用
yum install -y 应用名 #全自动下载安装应用及其依赖
yum info 应用名 #查看应用详细信息
yum list installed 应用名 #查看已安装的应用程序
rpm -ql 应用名 #查看安装后输出的文件清单
yum remove -y 应用名 #全自动卸载指定应用- 编译安装
如yum仓库未提供rpm,往往需要采用编译安装方式
编译安装是指从应用官网下载源码后,对源码进行编译后使用
编译命令: make #使用对应编译器对源码编译生成可执行文件
Linux系统管理命令
- ifconfig查看网卡ip
netstat 查看网络端口号
常用参数: netstat - tulpn 或 netstat -ano
t: 显示tcp传输协议的连接状况
u: 显示udp传输协议的连接状况
I: 显示处于监听状态的网络连接
p: 显示应用PID和程序名称
n: 显示ip地址
a: 显示所有连接
o: 显示计时器
查看进程: ps -ef
杀掉进程: kill -9 PID
应用服务化
- 应用服务化是指让应用程序以服务方式在系统后台运行
Linux系统对服务化应用进行统一管理
服务管理命令: systemctl
start: 启动服务
stop: 停止服务
restart: 重启服务
enable: 设置开机启动
disable: 禁止开启启动
status: 查看服务状态
daemon-reload: 重载服务配置文件
list-unit-files: 列出所有服务- 设置一个应用服务化
- 进入 system文件目录中: cd /usr/lib/systemd/system
- 创建一个配置文件应用名.service: vim redis.service
- 填写配置信息
[Unit]
Description=Redis(描述信息,给开发者提供的信,和注释类似)
After=syslog.target network.target remote-fs.target nss-lookup.target(在这些服务之后启动这个服务,多数情况下为固定写法)
[Service]
Type=forking(设置服务类型forking为后台运行,这项的添加会导致一个应用启动超时的错误,去掉即可)
PIDFile=/run/redis_6379.pid(描述应用进程的PID文件)
ExecStart=/usr/local/redis-4.0.14/src/redis-server /usr/local/redis-4.0.14/redis.conf(应用启动执行的命令,但必须书写完整绝对路径)
ExecStop=/bin/kill -s QUIT $MAINPID(结束应用执行的命令)
PrivateTmp=true(为每一个应用服务添加一个临时的私有文件目录)
[Install]
WantedBy=multi-user.target(将当前应用分配到指定的服务组中,multi-user.target服务组允许组中的所有服务随系统一起启动)- 保存退出文件,执行所有服务重载: systemctl daemon-reload
- 启动服务: systemctl start redis
用户与用户组
- Linux是多用户多任务系统,包含两个概念:用户与用户组
用户与账户是同一概念,用于登录系统与区分资源权限
用户让系统变的更安全,同时也保护了用户的个人数字资产
用户组就是将用户分组,隶属用户自动拥有组权限
一个用户可隶属于多个组,用户可任意切换当前组
用户组的出现让用户权限管理变更轻松- 常用命令:
useradd/adduser: 创建新用户
(1.使用useradd时,如果后面不添加任何参数选项,创建出来的用户将是是没有Home Directory,没有密码,没有系统Shell的。所以通常使用useradd时会在命令后面追加参数以及具体的值。
2.使用adduser时,创建的用户则会将上面所述的都默认进行创建,所以通常在创建完用户之后,都会对密码等信息进行更新操作)
案例: adduser 用户名 / adduser d1
passwd: (新建)修改密码
案例: passwd 用户名 / passwd d1
usermod: 修改用户信息/分配组(覆盖原组) , g: 分配单个组, G: 分配多个组
案例: usermod -g/G 组名 用户名 / usermod -g developer d1 / usermod -G developer d1
groupadd: 创建新的用户组
案例: groupadd 组名 / groupadd developer
groups: 查看当前用户属于哪个用户组
chown: 更改文件的属主或属组
案例: chown 属主:属组 文件名 / chown d1:developer dev-document
chmod: 更改文件的访问权限
案例: chmod 权限数字 / chmod 750
newgrp: 切换用户当前组
案例: newgrp 组名 / newgrp testor- 文件权限代码表:
sudo
- sudo可以让普通用户拥有超级管理员的执行权限
普通用户要进行经过超级管理员授权才能使用
授权命令: visudo
- 输入visudo命令
- 定位到文件的第100行(可以使用100gg命令)
- 添加一行新的权限信息:
用户名 允许那台主机执行=(允许切换的用户) 允许使用的命令 / d1 ALL=(ALL) ALL
4.执行visudo -c 命令检查文件格式
设置每次使用sudo命令不需要输密码: d1 ALL=(ALL) NOPASSWD: ALL
防火墙firewall
- 防火墙是借助硬件和软件对内外部网络环境的保护措施
CentOS7基于firewall实现应用层防火墙,CentOS6基于iptables
firewall-cmd是firewall的核心命令
firewall-cmd --state: 查看防火墙状态
firewall-cmd --list-ports: 查看防火墙放行的端口
firewall-cmd --zone=public(防火墙的区域) --permanent(变更设置永久生效) --add-port=8080/tcp(增加新的端口): 增加新的放行端口
firewall-cmd --reload: 防火墙重载
firewall-cmd --zone=public(防火墙的区域) --permanent(变更设置永久生效) --remove-port=8080/tcp(移除已有端口): 移除已有的端口
firewall-cmd --zone=public(防火墙的区域) --permanent(变更设置永久生效) --add-port=8000-9000/tcp(增加新的端口): 增加批量新的放行端口
Shell脚本
- Shell是一个用c语言编写的脚本解释器,是用户通过代码操作Linux的桥梁
Shell脚本描述要执行的任务,完成系列复杂操作,文件通常以.sh后缀
Shell脚本通过Shell解释器执行,按解释器分类分为多种类型- 常见Shell种类:
Bourne Shell: [解释器]/usr/bin/sh或/bin/sh
Bourne Again Shell: /bin/bash(默认)
C Shell: /usr/bin/csh
K Shell: /usr/bin/ksh
Shell for Root: /sbin/sh- 代码Tomcat自动下载安装脚本
echo "准备下载Tomcat9"
wget --no-check-certificat https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.65/bin/apache-tomcat-9.0.65.tar.gz
echo "正在解压缩Tomcat9"
tar zxf apache-tomcat-9.0.65.tar.gz
echo "防火墙开放8080端口"
firewall-cmd --zone=public --permanent --add-port=8080/tcp
firewall-cmd --reload
echo "启动Tomcat"
cd ./apache-tomcat-9.0.65/bin
./startup.sh
三十步快速部署服务器
- 安装两个新的虚拟机用以部署数据库DB的MySQL和Web的Tomcat服务器应用程序
- 解决安装不带ifconfig命令的问题: 运行yum install -y net-tools.x86_64
- 使用XShell与两个虚拟机建立两个远程连接
- 安装wget命令插件: yum install -y wget
- 关于安装mysql的虚拟机:
- 进入/usr/local/目录下创建一个mysql文件夹: cd /usr/local/ mkdir mysql
- 下载mysql: wget https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
- 装载mysql安装源: yum localinstall -y mysql80-community-release-el7-6.noarch.rpm
- 导入key(rpm 4.1 版本及以上需要这个操作), 详细说明可以查看官方网站https://dev.mysql.com/doc/refman/8.0/en/checking-rpm-signature.html,导入具体命令: rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022(如果调过这个步骤可能会出现"Couldn’t open file /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022"的错误)
- 安装mysql数据库: yum install -y mysql-community-server
- 启动mysql服务: systemctl start mysqld(rpm安装的程序会以服务的形式驻留在系统中, 所以可以使用systemctl命令)
- 进入mysql的日志文件中查找默认的随机密码: vi /var/log/mysqld.log
- 使用默认密码登录mysql数据库: mysql -uroot -p
- 修改mysql默认密码: alter user ‘root’@‘localhost’ identified with mysql_native_password by ‘新密码’;
- 更新root用户登录主机限制: use mysql select host,user from user; update user set host=‘%’ where user=‘root’; flush privileges;
- 修改防火墙放行3306端口: firewall-cmd --zone=public --permanent --add-port=3306/tcp(为了可以从外部进行访问,如使用DataGrip等操作应用)
- 重载防火墙: firewall-cmd --reload
- 关于安装tomcat的虚拟机:
- 安装java jdk: yum install -y java-1.8.0-openjdk
- 下载Tomcat压缩包并使用ftp传输到虚拟机的/usr/local/目录下,进入/usr/local/目录并解压安装包: tar zxf apache-tomcat-9.0.34.tar.gz
- 把应用程序的war包通过ftp传输到虚拟机的/usr/local/目录下,进入/usr/local/目录并解压安装包 tar zxf 应用程序名.war
- 把解压后的应用文件夹移动到Tomcat目录下的webapps文件夹中: mv 应用文件夹 ./apache-tomcat-9.0.34/webapps/
- 安装vim命令: yum install -y vim-common yum install -y vim-enhanced
- 找到应用的mybatis-config.xml配置文件并修改连接字符串和用户名密码: vim ./应用文件夹/WEB-INF/classes/mybatis-config.xml localhost改为数据库虚拟机的ip地址, 用户名密码改为数据库的用户名密码
- 找到Tomcat的server.xml配置文件并修改: vim ./conf/server.xml 把Connector属性内的端口改为"80",在Host标签内的最后一行添加<Context path=“/” docBase=“应用名”/>(作用是把应用映射的上下文路径指向默认的根路径)
- 启动Tomcat服务: ./bin/startup.sh
- 修改防火墙放行80端口: firewall-cmd --zone=public --permanent --add-port=80/tcp
- 重载防火墙: firewall-cmd --reload
- 打开浏览器登录应用检查: 主机名:80/应用页面名.html
- 预防数据库的安全隐患:
- 删掉原有的数据库3306端口: firewall-cmd --zone=public --permanent --remove-port=3306/tcp
- 指定可以访问数据库的主机地址: firewall-cmd --zone=public --permanent --add-rich-rule=“rule family=“ipv4” source address=“应用程序所在的主机的ip地址” port protocol=“tcp” port=“3306” accept”
- 重载防火墙即可,只有服务器应用程序的主机可以访问数据库: firewall-cmd --reload
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。