复习
- linux常用目录
- / 根目录
- /root root用户的home目录
- /bin 基本命令
- /tmp 临时目录
- /home 非root用户的home目录
- /etc 配置文件
- profile 环境变量
- yum.repos.d
- vi sysconfig/network-scripts/ifcfg-ens33
- /opt 安装软件
- /var /var/log 日志
- /usr
- /boot
- /dev
- /sbin
- 命令的结构 选项 参数
- 命令
- ls 列出内容
- -a 所有文件
- -t 按照时间排序
- -l 详细信息
- cd
- touch 创建文件
- nohup 不挂线
- cat 查看文件内容
- less 查看
- j 下 k上 gg头 G尾 q退出 /搜索 n下一处 N上一处
- cp 复制 cp {from} {to}
- rm -rf 强制删除文件或者文件夹
- tar
- -cvf 压缩
- -xvf 解压
- -C 指定目录
- -tvf 查看
- firewall-cmd
- —add-port 添加端口 =8080/tcp
- —reload 重载
- —remove-port 删除端口
- —list-port 查看
- —permanent 持久化
- rz 上传
- kill 杀死进程
- yum 安装软件
- systemctl 系统管理
- stop start status restart reload enable(开机启动)
- ps aux 查看系统进程
- mv 移动、重命名
- tail -5f 查看文件尾部,并跟随
- head 查看文件头部
- | 管道
- grep 搜索关键字
- echo 输出内容
- man 查看帮助
- ip addr 查看ip
- pwd 当前路径
- mkdir 创建文件夹
- rpm 安装rpm包
- sl 小火车
- cowsay 奶牛说
- source 使profile立即生效
- curl 访问地址
- make 编译安装
- tree 以树形方式展示目录
- wget 下载
- clear 清理
- vi 编辑器
- 模式: 命令模式 | 编辑模式 | 视图模式
- 模式切换:
- 命令 -> 编辑模式
i
o
O
a
s
c
- 编辑 -> 命令
esc
- 命令 -> 编辑模式
- 退出:
:q!
:wq
:q
:x
- 导航 hjkl
- 编辑
- d 删除
- p 粘贴
- y 复制 y5y yG文章末尾 y0行首
- ls 列出内容
补充
- 网络如何配置
- 编辑配置文件
- vi sysconfig/network-scripts/ifcfg-ens33
- 重启network服务 systemctl restart network
- nmtui / 改完重启网络服务
- bash 与 alias
配置文件 /etc/bashrc 每次进入shell时都会source以下bashrc,配置生效
alias 别名 给一个命令取一个别名,方便记忆和使用
alias sysout='cowsay -f turtle'
alias chkps='ps aux | grep'
----
source /etc/bashrc
alias cd=’rm -rf’
nginx
http://nginx.org/en/download.html
轻量级高性能的http服务器,将资源发布为网络资源,俄罗斯
安装步骤
添加仓库,在/etc/yum.repos.d路径下,创建文件 nginx.repo,内容如下:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
yum install -y nginx
- nginx命令启动
- 配置文件
- /etc/nginx nginx.conf
- /usr/share/nginx html的位置
- /var/log/nginx/ 日志
反向代理
反向代理:
- 隐藏内部结构
- 提供高性能的http服务,在tomcat出错,得到友好的提示
- 负载均衡服务
步骤:
- 关闭selinux,防止403问题
- 修改/etc/selinux/config文件,将enforcing改为disabled;
- 重启电脑 shutdown -r / halt / reboot
配置nginx vim /etc/nginx/default.d/default.conf
location / {
proxy_pass http://localhost:8080;
# 转发原始IP和header
proxy_set_header X-real-ip $remote_addr;
proxy_set_header Host $http_host;
}
修改nginx.conf
#root /usr/share/nginx/html;
启动nginx,重新加载配置
nginx -s reload
- 启动 spring-boot项目
负载均衡
单机问题:
- 出现故障,导致服务不可用
- 单机性能有上限,无法永远支撑服务规模扩张
冷备(主机,备机,备机不开机) 热备(主机备机开着,但只有主机提供服务,浪费)
集群:
负载均衡问题:将请求均衡的分发给所有参与服务的服务器
如何具体分发请求的策略称为:负载均衡策略
- 轮询
- 加权轮询
- 随机
- IP hash,对请求的IP进行hash计算,保证同一个IP的请求被分发给同一台服务器处理
- …
- 编写一个测试用的spring-boot项目
- 配置一个随机端口 server.port=${random.int(8000,8010)}
- 开发一个返回端口的接口 ```java package com.woniuxy.simple;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;
@RestController public class GetPortController {
@Autowired
private Environment environment;
@GetMapping("getPort")
public String getPort(){
//获得当前应用端口
return environment.getProperty("local.server.port");
}
}
2. 部署两次,获得两个端口
2. 配置nginx
nginx.conf
```nginx
# 配置一个集群
upstream woniu_cluster{
server 127.0.0.1:8001 weight=1;
server 127.0.0.1:8009 weight=2;
}
default.conf
location / {
proxy_pass http://woniu_cluster;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header Host $http_host;
}
- 重载nginx
nginx -s reload
- 在服务器外部,访问 http://192.168.60.179/getPort
两个版本
- 我的版本 nginx.conf + /etc/nginx/default.d/default.conf
- 另一个那本 nginx.conf + /etc/nginx/config.d/default.conf
修改default.conf 里的location 的配置
upstream也是配在default.conf
Docker
容器 vs 虚拟机
虚拟机: 虚拟一个完整地操作系统;传输,封装效率很低;大小一般在若干G
容器:复用宿主机的操作系统;内部包含了一个完整地操作系统;大小在几十上百M
- windows版本的docker与linux版本的docker的容器不相通的
容器可以理解为轻量级虚拟机
原理:复用宿主机系统,并且进行了各种资源隔离;
Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。由于容器是进程级别的,相比虚拟机有很多优势。
- 启动快
- 资源占用少
- 体积小
安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
修改docker的镜像源为国内源
/etc/docker/daemon.json
{
"registry-mirrors": [
"https://ustc-edu-cn.mirror.aliyuncs.com",
"https://hub-mirror.c.163.com"
]
}
启动docker : systemctl start docker
docker info ==>
Registry Mirrors:
https://ustc-edu-cn.mirror.aliyuncs.com/
https://hub-mirror.c.163.com/
测试: docker run hello-world
docker的概念
client: docker客户端
deamon: docker守护线程
registry: 仓库 https://hub.docker.com/search?q=&type=image
container: 容器
image: 镜像文件
封装镜像文件 ——> 发布到仓库(registry)——> 下载镜像文件———> 创建容器(在宿主机上运行的一个程序)
centos+wnmysql
镜像:文件,类似Java类
容器:程序,类似Java的对象
nginx
docker pull 拉取镜像 docker pull nginx
docker run 创建并运行一个容器 docker run nginx 创建并运行一个nginx的容器
docker images 查看本地镜像
docker container ls -a 查看所有容器 简写为 docker ps -a
docker run ubuntu:latest 直接创建容器,并运行,并退出
docker run -itd ubuntu 运行并保持容器不关闭
docker rm id/名字 删除
docker ps -aq | xargs docker rm 删除全部容器,删除之前需要先关闭
docker run -itd —name=myubtu ubuntu
进入容器中,并打开一个bash终端
docker exec -t -i myubtu /bin/bash
docker run -itd —name=jdk openjdk
安装mysql
- docker run -itd —name=mysql5 -e MYSQL_ROOT_PASSWORD=root123 -p 3307:3306 mysql:5
- -itd 后台运行
- —name 名字
- -e 环境变量,设置的root用户密码
- mysql:5 镜像名:标签
- -p 端口映射 {宿主机端口}:{容器端口}
下载一个mysql:5镜像,并且创建容器,运行该容器
- 进入容器,操作mysql docker exec -it mysql5 /bin/bash
> mysql -uroot -proot123 # 进入mysql
> grant all privileges on . to root@’%’identified by ‘root123’; #授权,外部也可以访问
> FLUSH PRIVILEGES;
> exit; # 退出mysql
exit 退出容器
- 测试
systemctl stop firewalld 关闭防火墙,便于测试
在window上通过navicat访问3307端口,测试连接
作业
- 在centos上安装maven,不使用docker
- docker安装运行nginx,
-v
选项 (注意,防火墙firewalld必须打开)