Linux学习笔记
Linux
一、Linux
Linux是一套免费使用和自由传播的操作系统。
1.1 Linux是基于unix的
1.2 Linux版本
- 内核版本:在Linux领导下的内核小组开发维护的系统内核版本
发行版:在内核版本基础上扩展出来的版本号
1.3 Linux的应用
Linux广泛应用于服务器、嵌入式系统、桌面系统等领域
二、安装操作系统
2.1 下载contos7的安装镜像
下载地址:https://www.centos.org/download/
2.2 创建一个新的虚拟机
打开 vmmare
选择新建虚拟机
下一步即可。
将centos7的安装镜像挂载到虚拟机的光驱中
在虚拟机的设置中,找到光驱(CD/DVD)选项,将其配置为使用的ISO镜像文件,然后,浏览并选择你之前下载的centos7安装镜像(包含课件中)。
在虚拟机设置中,找到CD/DVD选项
选择使用ISO映像文件
点击浏览,选择centos7的安装镜像文件
启动虚拟机并开始安装centos7
虚拟机启动之后会出现如下界面:
install centos7
Test this media & install centos7
我们将鼠标移入到虚拟机中,并按下键盘中的⬆箭头,选择install 。【软件选择】
选择安装的系统是否包含界面:
选择gnome桌面【配置网络和主机名】
“以太网默认是关闭的”,打开即可。
【设置root】
设置root管理员密码,强弱无所谓。
2.3 查看是否连接网络
查看自带的应用程序性火狐访问百度
查看网卡ens33三、安装远程连接工具
finalshell安装跳过..
四、Linux的常见命令
关机指令 poweroff
重启指令 reboot4.1 Linux的目录结构
linux的目录是一个树形机构
windows系统可以拥有多个盘符,如C盘、D盘、E盘
linux没有盘符这个概念,只有一个根目录/ 所有文件都在它的下面4.2 Linux用户
- root用户(超级管理员):在Linux系统中拥有最大权限的账户为:root
- root目录:超级管理员所在的目录
- home目录:除了超级管理员外的其他用户所在目录
# 身份是普通用户$ 身份是管理员用户
在不同的用户眼中~的位置是不同的
- 普通用户:/home/用户名
管理员用户:/root
以管理员身份登录并运行命令:
sudo 命令如果告知不在sudoers文件中,需要添加到sudoers文件中
普通用户只可以操作自己的家目录下的文件
root可以操作所有文件【添加用户】
adduser 用户名
创建普通用户的时候会同时创建
- 创建用户时,会提示输入密码
- 创建用户家目录(/home/用户名)
- 创建用户组目录(/var/run/user/用户ID)
查看用户的信息
id 用户名
- uid:用户编号(用户名)
- gid:用户组编号(用户原始组名)
组:用户所属的组(默认享受自己的原始组权限)
【删除用户】
userdel 用户名
【修改用户密码】
passwd 用户名
【修改用户所属的组】
usermod -g 组名 用户名 (修改用户的原始组)
usermod -G 组名 用户名 (修改用户的附加组)4.3 tab自动补全
- tab键自动补全
- 连续两次tab键,给出操作提示
使用上下箭头快速调出曾经使用过的命令
4.4 绝对和相对路径
- 绝对路径:从/根目录来说的路径
- 相对路径:相对当前所在目录来说的路径
- 特殊的路径:.. 表示上一级目录
- 特殊的路径:~表示家目录
特殊的路径:-表示上一次所在目录
4.5 文件列表命令
ls:列出文件和目录
ls -l :显示详细信息【常用参数】
- -a 显示所有文件和目录包括隐藏的
-l 显示详细信息(简写ll)
4.6 目录切换命令
- cd + 目录的路径
- cd..:返回上一级目录
- cd~:返回当前登录用户所在的用户目录
- cd/:返回根目录
cd-:返回上一次所在目录
4.7 clear&pwd
- 清屏命令
查看当前目录的绝对路径
history
history:查看历史命令
!数字:执行对应的历史命令
!!:执行上一条历史命令
4.8 创建&删除目录命令
创建目录
- mkdir aa:创建aa目录
- mkdir a b:创建a目录和b目录
mkdir -p aa/bb:创建aa目录下的bb目录
删除目录
- rmdir aa:删除aa目录
rmdir -p aa/bb:删除aa目录下的bb目录
4.9 cp、mv、rm
【文件拷贝cp】
cp 源文件 目标文件名/目标文件名
【文件剪切mv】
mv 源文件 目标目录/目标文件名
【文件删除rm】
- rm 文件名:删除文件之前会询问
- rm -f 删除文件之前不询问
- rm -r 目录名:删除目录之前会询问
rm -rf 文件名/目录名:可以直接删除文件或者文件夹,可以是多层,不询问
4.10 查找符号条件的文件
find / -name文件名: 根据指定路径查找指定文件
4.11 查找文件中符合条件的字符串(内容)
grep 要查找到的字符串 文件名
4.12 创建新的文件
touch 文件名称:创建一个a.txt文本文件
4.13 压缩和解压(面试题)
(1)压缩
tar -zcvf 压缩的文件名 要压缩的目录
(2)解压
tar -zxvf 压缩文件名 -C 指定的目录
4.14 VI和VIM编辑器
vi命令是Linux系统提供的一个文本编辑工具,类似windows中的记事本,可以对文本内容进行编辑。
三种工作模式
进入vi编辑器会进入命令模式,通过命令模式输入键盘指令,进入输入模式,输入模式需要退回到命令模式,然后通过命令可以进入底线命令模式。
【1】命令模式
默认进入命令模式
命令模式下,不能自由进行文本编辑,只能查看。【2】输入模式
按i键进入输入模式
可以对文件内容进行自由编辑。u撤销上一次操作dd剪切光标所在行(前方用[n]限定剪切次数)yy复制光标所在行(前方用[n]限定复制次数)p粘贴复制的内容(前方用[n]限定粘贴次数)【3】底线命令模式
按:wq 保存并退出
用于文件的保存,退出
:set nu 显示行号
:set nonu 取消显示行号
:[任意行] 跳转到指定行
:w 保存文件
:q! 不保存退出
:q 保存并退出
:wq 保存并退出
:wq! 强制保存并退出4.15 系统命令
【ps】查看系统的进程
在Linux中,每一个正在执行的程序都称为一个进程,每个进程都有各自的PID(进程ID)
查看所有用户的进程信息【停止进程】
kill -9 进程号,其中-9表示一种信号,用于强制终止进程
4.16 文件权限
在ls -l下查看文件权限下可以看见9个字符,分别代表不同的权限
- d:目录
- -:普通文件
l:符号链接文件 (快捷方式)
后面的9个字符分为3组,每组3个字符,分别代表不同用户的权限。
- 第一个字符:文件类型(d、-、l)
- 第二个字符:所有者权限(r、w、x)
- 第三个字符:所有组权限(r、w、x)
- 第四个字符:其他用户权限(r、w、x)
简单来说,那些用户可以对文件执行何种操作。每个文件和目录都有三种类型的权限:读(r)、写(w)、执行(x)。这些权限可以分别应用于文件的所有者,所有组,以及其他用户。
在Linux中,文件权限通常以数字的形式表示,每个文件或目录都有3个八进制数字,分别代表所有者,组和其他用户的权限,每个数字的范围0-7:
这个数字的计算方法是:每个权限的权重(r=4,w=2,x=1)相加得到的结果。- 读权限(r)=4
- 写权限(w)=2
- 执行权限(x)=1
- 无权限:(-)=0
缺少r权限:不能用ls查看文件内容,不能读取文件内容。
缺少w权限:不能修改(mkdir,touch,cp,mv,rm)文件内容,不能删除文件。
缺少x权限:不能执行文件,不能进入目录。
root可以无视文件权限,对所有文件进行操作。
Linux使用UGO权限模型进行权限控制
- 赋值法:
chmod 777 文件名 - 权重法:
chmod u+rwx 文件名
注意: - 权限只能是r、w、x,不能同时有多个权限。
- 权限可以组合使用,例如rwx表示读、写、执行权限。
权限值设置到修改的那一层,如果目录中又其他人的文件,那么其他人的文件权限不会改变。
4.17 防火墙命令
【查看防火墙】
systemctl status firewalld
【关闭防火墙】下次会重新启动
systemctl stop firewalld
【禁用防火墙】
systemctl disable firewalld
五、在Liunx中安装软件
5.1 在Linux中安装JDK
- 新建一个文件夹
- 切换到software
- 将JDK文件上传到/usr/local/software目录中
删除Linux中自带的JDK
centos7一般都会带有自己的openJDK,我们使用oralce的jdk,所以要卸载。
查看系统是否以安装JDK
卸载已安装的JDK
验证是否还有JDK
解压安装包
【1】在/usr/local目录下创建名为java的目录
【2】将JDK解压到/usr/local/java目录中
配置JDK环境变量
在etc/profile文件最后加上如下内容:按i进入编辑模式,完成后按esc键,在输入:wq保存退出
内容:复制课件的profile文件即可
修改文件,需要sources命令重新加载
验证是否安装成功5.2 安装tomcat
将tomcat上传到/usr/local/software目录下
将tomcat解压到指定目录
【1】在/usr/local目录下创建tomcat目录
【2】将上传的tomcat解压到/usr/local/tomcat
进入tomcat目录
启动tomcat
【1】切换到bin目录中
【2】启动tomcat
访问tomcat
【1】在Linux系统中使用火狐访问浏览器
http:localhost:8080/
【2】在宿主机中访问tomcat
http:ip:8080/5.3 安装Mysql
在安装mysql数据库之前,先检查一下当前Linux系统中,是否安装由Mysql的服务,如果有,就需要先卸载,然后在进行安装。
通过rpm命令,来查询当前系统中是否存在已安装的mysql软件包
mariadb是centos7中自带,这个数据库和mysql数据库是冲突的,所以想保证mysql安装成功,需要卸载mariadb数据库【上传mysql到Linux并解压】
上传mysql安装包
解压到当前目录
将解压的文件移动到/usr/local目录下,并改名为mysql
配置系统环境变量
配置mysql的环境变量,通过vi编辑器/etc/profile文件中
尾部追加如下内容:
修改此文件后,需要source命令重新加载1
[root@localhost mysql]# source /etc/profile
注册mysql为系统服务
1
2[root@localhost mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
[root@localhost mysql]# chkconfig --add mysql初始化数据库
1
2
3
4
5
6
7
8# 创建一个用户组,组名叫mysql
[root@localhost mysql]# groupadd mysql
# 创建一个系统用户mysql,并归属用于组mysql
[root@localhost mysql]# useradd -r -g mysql -s /bin/false mysql
#初始化mysql
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data执行上述指令时,会输入如下日志。在日志中就会输出mysql中root用户的一个临时密码:
1
2
3
42025-08-05T03:33:25.304900Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.30) initializing of server in progress as process 96881
2025-08-05T03:33:25.316845Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2025-08-05T03:33:26.963945Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2025-08-05T03:33:29.823216Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 6ptfl2zvI*EB【启动mysql】
- 启动mysql服务
1
[root@localhost mysql]# systemctl start mysql
- 通过命令,登录mysql
1
[root@localhost mysql]# mysql -uroot -p6ptfl2zvI*EB
配置mysql
修改root用户的密码1
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
注意:这个root账号仅能够在本机localhost上访问,我们在windows上是无法访问的,如果需要在window上或其他服务器上也能远程访问,需要创建一个账号,用于远程访问。
创建账号,并授权远程访问
1
2
3
4
5create USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '1234';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;语句各个部分说明如下:
- ALL PRIVILEGES表示授予所有可用的权限
- ON . 表示对所有数据库中的所有表进行授权
- TO ‘root’@’%’root是授予权限的用户名,@是分隔符,%允许该用户从任何主机链接到mysql服务
FLUSH PRIVILEGES对用户权限或密码的修改立即生效,无需重启mysql服务。
Nginx
使用yum安装nginx
1 | yum install nginx |
修改nginx配置文件
1 | find / -name nginx.conf |
找到配置文件位置
1 | vi /etc/nginx/nginx.conf |
nginx.conf配置详情
配置中的关键字:
- worker_processes :指定nginx工作进程的数量,默认值为1(2)个。auto表示根据系统CPU核心数自动调整进程数量。
- worker_connections :指定每个工作进程的最大连接数,默认值为1024个。
- events :配置事件模块,包括连接数、事件处理方式等。
- use :指定事件处理方式,默认值为epoll。
- multi_accept :指定是否同时接受多个连接,默认值为off。
- keepalive_timeout :指定keep-alive连接的超时时间,默认值为65秒。
- client_header_timeout :指定客户端请求头的超时时间,默认值为60秒。
- client_body_timeout :指定客户端请求体的超时时间,默认值为60秒。
- send_timeout :指定客户端发送数据的超时时间,默认值为60秒。
- listen :指定监听的端口号,默认值为80端口。
- server_name :指定服务器名称,用于虚拟主机配置。
- location :指定请求的路径匹配规则,用于反向代理、静态文件服务等。
- proxy_pass :指定反向代理的目标地址,用于将请求转发给后端服务器。
- root :指定静态文件的根目录,用于提供静态文件服务。
- index :指定默认的索引文件,用于提供目录索引服务。
- try_files :指定尝试匹配的文件路径,用于提供自定义的404错误页面。
- fastcgi_pass :指定FastCGI服务器的地址,用于处理动态请求。
- fastcgi_param :指定FastCGI参数,用于传递请求参数给FastCGI服务器。
本地代理,正向代理,反向代理实例:
本地代理完整例子:1
2
3
4
5
6location /erp {
proxy_pass http://192.168.1.100:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
或者看下面这种形式的用于读取本地目录
1
2
3
4 location /erp {
root erp;
index index.html;
}
正向代理完整例子:1
2
3
4
5
6location /erp {
proxy_pass http://192.168.1.100:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
正向代理和反向代理的区别:
- 正向代理:客户端发送请求到代理服务器,代理服务器再发送请求到目标服务器,目标服务器返回响应给代理服务器,代理服务器再返回响应给客户端。(转发给目标服务器)
- 反向代理:客户端发送请求到反向代理服务器,反向代理服务器再根据配置将请求转发给后端服务器,后端服务器处理请求后返回响应给反向代理服务器,反向代理服务器再返回响应给客户端。(转发给集群)
反向代理配置完整例子:1
2
3
4
5
6
7location /erp {
proxy_pass http://192.168.1.100:8080;
proxy_pass http://192.168.1.101:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
发现和正向代理的结构类似,但是反向代理是将请求转发给后端服务器,而正向代理是将请求转发给目标服务器。
nginx关键目录
conf :nginx配置文件目录
html :nginx默认的静态文件目录
log :nginx日志目录
sbin :nginx可执行文件目录
nginx负载均衡
nginx负载均衡是指将多个后端服务器组成一个集群,当有请求过来时,nginx根据负载均衡算法将请求分发到不同的后端服务器上,实现负载均衡和高可用。
==服务器集群==
拥有多个后端服务器,每个服务器都有相同的功能和配置,具有高可用,高并发,高性能的特性。
- 高并发:每个服务器都可以处理多个请求,提高系统的并发能力。
- 高可用:当某个服务器发生故障时,其他服务器可以继续提供服务,确保系统的可用性。
- 高性能:每个服务器都有自己的处理能力和资源,能够满足系统的性能需求。
小小吐槽下,虽然可能是在说废话,但是这只是为了别让我闲下来QAQ
首先,我们需要在nginx配置文件中添加负载均衡的配置。1
2
3
4
5
6
7# 负载均衡配置
# 放在server块上方
upstream backend {
server 192.168.1.100:8080;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
}
上述ip为后端的负载服务器ip。
然后再在location块中添加负载均衡的配置。1
2
3
4
5
6
7location / {
proxy_pass http://backend;
# 传递地址池名字
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
如果要给负载机添加权重,只需要在server块中添加weight参数即可。1
2server 192.168.1.100:8080 weight=10;
# 权重为10,默认值为1,权重值越大,负载机会越多。
权重大小:权重值越大,负载机会越多。
负载均衡 + 服务器集群的方案可以实现高可用和高并发,提高系统的性能和稳定性。但是需要注意的是,负载均衡器本身也会成为系统的单点故障,因此需要配置多个负载均衡器组成一个集群,实现高可用。(我们需要保持存活,保持负载均衡器的存活)
