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