Linux 学习笔记(持续更新ing,欢迎大家提出宝贵建议)

  • Linux有什么作用
  • Linux是什么
  • Linux能做什么
  • Linux的学习方法
  • 虚拟机是什么
  • 安装虚拟机
  • 安装虚拟机需要注意什么
  • 虚拟机软件安装CentOS
  • 云服务器的平台
  • 准备工作
  • 认识SSH
  • SSH工具
  • SSH是什么
  • 服务端安装SSH服务
  • 客户端安装SSH工具
  • SSH config讲解
  • SSH config 语法关键字
  • Linux常用命令
  • WebServer
  • Apache基本操作
  • Apache拓展知识
  • Nginx
  • Nginx基本操作
  • Nginx拓展知识
  • 数据库服务MySQL
  • MySQL基本操作
  • MySQL8.0安装
  • MySQL拓展知识
  • MySQL客户端工具
  • 缓存服务Redis和MEMCACHED
  • Memcached基本操作
  • Redis基本操作
  • Redis 安装
  • Redis的启动
  • Java 运行环境配置
  • Git 版本管理工具
  • Git 常用命令


Linux有什么作用

  • 目前互联网90%商业服务器基本是Linux
  • 很多好的开源软件都先支持Linux
  • 大数据分析、机器学习首选Linux
  • 整个互联网的地基都是靠Linux撑起来的

Linux是什么

通过命令对服务器进行操作。(待补充)

Linux能做什么

  • 企业服务器
  • 嵌入式开发

Linux的学习方法

  • 给自己一个Linux环境(给自己电脑装一下Linux操作系统,强制学习)
  • 先自己尝试搜索解决问题(印象深刻)
  • 学会读懂Linux的错误提示
  • 暂时忘掉Windows的所有东西有助于学习,因为Linux系统
  • 没有exe安装程序
  • 大小写要区分
  • 一切皆文件
  • 文件后缀名不是那么重要,只是为了好识别而已

虚拟机是什么

  • 科研解释:虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统
  • 白话解释:通过软件技术,可以在自己的电脑上安装另一个操作系统,而不影响原系统

安装虚拟机

安装虚拟机需要注意什么

  • 电脑支持虚拟化,windows主机在BIOS开启虚拟化支持

虚拟机软件安装CentOS

云服务器的平台

准备工作

  • 查看ip
  • ifconfig
  • ip addr
  • vi /etc/sysconfig/network-scripts/ifcfg-xx
  • yum install net-tools
  • 替换默认源
  • 安装Vim

认识SSH

SSH工具

  • SSH config用法详解
  • 免密码登录方案之SSH Key
  • SSH端口安全
  • 个性化脚本一键登录服务器

SSH是什么

  • SSH:Secure Shell 安全外壳协议
  • 建立在应用层基础上的安全协议
  • 可靠,专为远程登录会话和其他网络服务提供安全性的协议
  • 有效防止远程管理工程中的信息泄露问题
  • SSH客户端适用于多种平台
  • SSH服务端几乎支持所有UNIX平台

服务端安装SSH服务

  • 安装SSH:yum install openssh-server
  • 启动SSH:service sshd start
  • 设置开机运行:chkconfig sshd on

客户端安装SSH工具

  • SSH是典型的客户端和服务端的交互模式,客户端广泛的支持各个平台
  • Windows有很多工具可以支持SSH连接功能,例如:Xshell、Putty、secure CRT
  • Linux平台需要安装客户端软件:yum install openssh-clients

SSH config讲解

  • config为了方便我们批量管理多个ssh
  • config存放在~/.ssh/config
  • config配置语法

SSH config 语法关键字

English

中文

Host

别名

HostName

主机名

Port

端口

User

用户名

IdentityFIle

密钥文件的路径

Linux常用命令

以下只列出部分命令,其他命令可自行去官网或者第三方网站自行查找,例如:菜鸟教程

  • 软件操作命令
  1. 软件包管理器:yum
  2. 安装软件:yum install xxx
  3. 卸载软件:yum remove xxx
  4. 搜索软件:yum search xxx
  5. 清理缓存:yum clean packages
  6. 列出已安装:yum list
  7. 软件包信息:yum info xxx
  • 服务器硬件资源和磁盘操作
  1. 内存:free -m(m是以兆的单位展示)
  2. 硬盘:df -h
  3. 负载:w/top

    当在1分钟处的值到达1的时候,说明CPU现在是满负荷状态,这个时候要进行检查,查明原因。当超过1的时候,超频运行,随时都可能发生宕机。运维的话,一般情况下,0.6,0.7属于正常值,当大于它们的时候,就会进入危险报警。
  4. cpu个数和核数:cat /proc/cpuinfo
  5. 格式化磁盘:fdisk
  • 文件和文件夹操作指令
  1. Linux文件的目录结构
  1. 根目录:/
  2. 家目录:/home
  3. 临时目录:/tmp
  4. 配置目录:/etc
  5. 用户程序目录:/usr
  1. 文件基本操作


解释

ls

查看目录下的文件

touch

新建文件

mkdir(-p)

新建一个目录(循环创建)

rmdir(-p)

删除一个空目录(循环删除)

cd

进入目录

rm(-rf)

删除文件和目录(强制删除,不提示)

cp

复制

mv

移动

pwd

显示路径

  1. 文本编辑神器Vim
  1. 在服务器上是没有类Windows的操作界面的,所有GUI界面都无法使用
  2. Vim是最出名的Linux文本编辑器,可以对文件修改操作
  3. Vim安装:yum install vim
  4. Vim编辑文件:(小写字母为小写模式下操作,大写字母为大写模式下操作)
  1. 开始编辑:i
  2. 退出编辑:先按Esc,然后顺序按 :wq
  3. 快速切换光标到首行和尾行:首行(gg),尾行(G)
  4. 删除光标当前行:dd(恢复上一次操作:u)
  5. 复制光标当前行:yy
  6. 插入复制的行:p
  7. 显示行数::set number
  1. 文件权限421
  1. r/w/x:r读4、w写2、x可执行1
  1. 文件搜索、查找、读取

命令

解释

语法(imooc 为文件名)

tail

从文件尾部开始读

tail imooc

head

从文件头部读

head imooc

cat

读取整个文件

cat imooc

more

分页读取

more imooc

less

可控分页

less imooc

grep(-n)

搜索关键字(显示当前行)

grep -n “关键字” imooc

find

查找文件

find . -name “名字” / find . -type f(f是文件,d是文件夹)

wc

统计行数

1.cat imooc l wc -l 2.grep “关键字” imooc l wc -l(中间的为竖线(管道),最后面的是小写字母l)

  1. 文件压缩和解压
  1. tar命令
  • 系统用户操作命令

命令

解释

useradd

添加用户

adduser

添加用户

userdel

删除用户

passwd

设置密码

  • 防火墙相关设置
  1. 作用:保护服务器安全
  2. 设置防火墙规则
  1. 开放80,22端口
  1. 关闭防火墙
  2. 基本命令:
  1. 安装:yum install firewalld
  2. 启动:service firewalld start
  3. 检查状态:service firewalld status
  4. 关闭或禁用防火墙:service firewalld stop/disable
  5. 查看是否安装防火墙:yum list | grep firewall
  6. 查看是否启动防火墙:ps -ef | grep firewall
  7. 查看版本号:firewall-cmd --version
  8. 查看状态:firewall-cmd --state
  9. 查看区域:firewall-cmd --get-zones
  10. 查看默认区域: firewall-cmd --get-default-zone
  11. 查看所有区域:firewall-cmd --list-all-zone
  12. 添加服务:firewall-cmd --add-service=ssh
  13. 删除服务:firewall-cmd --remove-service=ssh
  14. 查询有哪些服务:firewall-cmd --list-services
  15. 查询端口:firewall-cmd --query-port=22/tcp
  16. 添加端口:firewall-cmd --add-port=22/tcp
  17. 删除端口:firewall-cmd --remove-port=22/tcp
  • 提权操作sudo和文件传输操作
  1. 提权:sudo
  1. 输入visudo命令
  2. 根据图片内容操作
  3. 注意:在开发过程中不要使用root账号进行操作,不安全。
  1. 文件下载:wget、curl
  1. wget http://www.baidu.com
  2. curl -o baidu.html http://www.baidu.com (baidu.html是保存的文件名)
  1. 文件上传:scp
  1. 将本地文件imooc.txt上传到imooc服务器tmp文件夹下:scp imooc.txt imooc@192.168.0.111:/tmp/
  2. 将服务器上的index.html下载到本地:scp imooc@192.168.0.111:/tmp/index.html ./
  1. yum install lrzsz
  2. 从桌面上传文件到服务器:rz
  3. 从服务器下载文件imooc.txt到桌面:sz imooc.txt

WebServer

Apache基本操作

解释

命令

安装

yum install httpd(在Ubuntu中叫Apache,在centos中叫httpd)

启动

service httpd start

停止

service httpd stop

查询进程是否存在:ps -ef | grep httpd
  安装好Apache服务后,启动后,打开网页访问你的主机(我的是192.168.0.111)。如果不能访问的话,这个时候关闭防火墙service firewalld stop,再次访问显示Testing123…页面说明Apache服务已经安装好了/

Apache拓展知识

  • 配置虚拟主机
  1. 进入到/etc/httpd/conf目录下:cd /etc/httpd/conf
  2. 编辑conf目录下的httpd.conf文件:vim httpd.conf
  3. 搜索/virtual,添加如下代码:
  4. 保存退出后重新启动服务:service httpd restart
  5. 新建/data/www目录:mkdir -p /data/www
  6. 切换到www目录下输入命令:ll /data来查看当前目录所属者,如果是root,则输入命令sudo chown -R imooc:imooc /data
  7. www目录下新建一个index.html,输入一些内容,保存退出。
  8. 找到自己系统的hosts文件位置(自行百度),在文件中加入192.168.0.111 www.imooc.test
    注意:如出现不能保存hosts文件的情况,需要更改文件的权限
    右击hosts文件 →属性→安全→编辑→找到当前使用的用户→在权限下勾选完全控制→确定
  9. 编辑conf目录下的httpd.conf文件:vim httpd.conf
    <Directory “/data/www”>
      Options Indexes FollowSymLinks
      AllowOverride None
      Require all granted
    </Directory>
  10. 重启服务器: service httpd restart
  11. 打开浏览器访问www.imooc.test 如果没有出现index.html中的内容,输入命令setenforce 0,再次访问应该就可以显示了。(setenforce 0可以设置宽松模式,setenforce 1强制模式,此操作是临时的,重启之后恢复默认为强制模式)
  12. 解决重启后不恢复为默认:
  1. 编辑目录/etc/selinux下的config文件:vim /etc/selinux/config
  • 配置伪静态
  1. 编辑目录/etc/httpd/conf下的httpd.conf文件:vim /etc/httpd/conf/httpd.conf
  2. 搜索/LoadModule加入以下代码:
  3. 在之前配置的地方加入一下代码:

Nginx

Nginx基本操作

解释

命令

安装

yum install nginx

启动

service nginx start

停止

service nginx stop

重载

service nginx reload

Nginx拓展知识

Nginx安装

  • 添加CentOS7 Nginx yum资源库,命令:
  • sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
  • sudo yum install nginx
  • 虚拟主机配置,多域名、多端口匹配值
    (修改配置文件后用reload重载就可以加载到修改的配置文件)
  • Nginx的目录结构
  • Nginx主页目录:/usr/share/nginx/html/index.html 可以更改
  • 进入到/etc/nginx/conf.d目录下,复制一份文件:cp default.conf imooc.conf
  • 修改配置文件imooc.conf
  • 伪静态配置
  • 日志格式化配置
  • 编辑/etc/nginx/目录下的nginx.conf文件
  • 根据不同的虚拟主机配置不同的日志文件,编辑/etc/nginx/conf.d/目录下的imooc.conf文件。
  • 反向代理和负载均衡
    反向代理:

    负载均衡:
  • 调试技巧

数据库服务MySQL

MySQL基本操作

解释

命令

安装服务端

yum install mysql-community-server

启动

service mysqld start/restart

停止

service mysqld stop

MySQL8.0安装

  1. CentOS7默认安装mariadb数据库,先将mariadb数据库卸载:yum remove mariadb-libs.x86_64
  2. 下载Mysql源:点击跳转到下载页面 复制完地址后,在命令窗口进入到/tmp/目录下,进行下载:wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm(此处粘贴你复制的链接地址)
  3. 安装源:yum localinstall mysql57-community-release-el7-8.noarch.rpm
  4. 安装MySQL服务:yum install mysql-community-server
  5. 启动MySQL服务:service mysqld start
  6. 查看默认密码:cat /var/log/mysqld.log | grep “password”
  7. 使用密码进行登录Mysql服务:mysql -uroot -prPcy+Qtgx1i2(rPcy+Qtgx1i2为你查看到的密码)
  8. 重置密码
  1. 设置复杂密码,例如abc123@xxx,步骤如下
  1. 编辑文件/etc/my.cnf,在【mysqld】模块添加:skip-grant-tables 保存退出
  2. 重启MySQL服务:service mysqld restart
  3. 登录:mysql -u root -p
  4. 选择数据库mysql:use mysql;
  5. 将密码置空:update user set authentication_string = ‘’ where user = ‘root’;
  6. 退出:quit;
  7. 去掉刚开始加入的skip-grant-tables,然后重启服务,并登录mysql
  8. 执行ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘abc123@xxx’;
  1. 设置简单密码,例如123456,需要进行特殊配置,步骤如下
  1. 在上面设置复杂密码的第7步后面执行两条语句:set global validate_password.policy=0;和set global validate_password.length=1;
  2. 再执行 ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘123456’;

MySQL拓展知识

  1. 远程连接
  1. 登录MySQL:mysql -u root -p 回车输入你的密码
  2. 使用mysql数据库进行操作,查看user表
  3. 完成以上步骤后执行命令:flush privileges; 或者重启MySQL服务器
  4. 打开windows系统下的Navicat客户端新建连接
  5. 如果连接时将会出现如下错误:“2059 - authentication plugin ‘caching_sha2_password’ cannot be loaded: 乱码”,此时有如下操作:
  1. ALTER USER ‘root’@’%’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER;(password为root的密码)
  2. ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘password’;(password为root的密码)
  3. flush privileges; 或者重启MySQL服务器
  1. 开启Cenelog
  1. 作用:查看你当前的操作,可查错
  2. 开启步骤:
  1. 登录MySQL服务,然后设置general.log文件的目录:set global general_log_file="/tmp/general.log";
  2. 设置开启general.log,也可进行关闭:set global general_log=on;
  3. 新开一个终端,登录当前账号,可查看MySQL服务执行的语句:tail -f /tmp/general.log

远程连接总结:
Mysql远程连接报错:authentication plugin caching_sha2

mysql 8.0 默认使用 caching_sha2_password 身份验证机制,从原来的 mysql_native_password 更改为 caching_sha2_password。

从 5.7 升级 8.0 版本的不会改变现有用户的身份验证方法,但新用户会默认使用新的 caching_sha2_password 。

客户端不支持新的加密方式。

方法之一,修改用户的密码和加密方式

ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘密码’;
mysql8.*的新特性 caching_sha2_password 密码加密方式

以前版本的mysql密码加密使用的是 mysql_native_password,新添加的用户密码默认使用的 caching_sha2_password。
如果在以前mysql基础上升级的 就得用户使用的密码加密使用的是 mysql_native_password。如果使用以前的密码加密方式,就修改文件 /etc/my.cnf

  1. 新建用户和权限操作
  1. 新建用户:create user ‘账号’@’%’ identified by ‘密码’; 在这里因为是新建的用户,加密方式为caching_sha2_password,所以此处参加上面的操作进行密码加密方式的修改。
  2. 权限操作:
  1. 权限授予:grant all privileges on . to ‘账号’@’%’; 授予该账号所有权限。
  2. 权限回收:revoke all privileges on . from ‘账号’@’%’;

下图是privilege特权表你只需要把你想要授权的privleges填入语法权限那里就OJBK了。

欧拉系统安装mysql 3306 33060_ooc


5. 忘记root密码怎么办:参照上面的重置密码方式,重新设置密码。

MySQL客户端工具

  • SQLyog
  • Navicat
  • HeidiSQL
  • Sequal Pro
  • phpMyadmin

缓存服务Redis和MEMCACHED

Memcached基本操作

解释

命令

安装

yum install memcached

启动

memcached -d -l -m -p等等,可通过man memcached命令查看

停止

kill pid

使用telnet命令可以测试某服务是否能连接:
telnet 127.0.0.1 80 telnet命令详情请点击链接:Linux | telnet命令 菜鸟教程

Redis基本操作

解释

命令

安装

源码编译安装

启动

redis-server start/restart

停止

redis-server stop

客户端

redis-client

Redis 安装

  1. 首先去Redis官网下载源码包,进入官网,复制下载链接地址。
  2. 进入到/tmp/目录下执行命令:wget http://download.redis.io/releases/redis-5.0.5.tar.gz 粘贴上你复制的地址。
  3. 下载好后进行解压:tar -xzvf redis-5.0.5.tar.gz
  4. 进入redis-5.0.5目录执行命令:make 根据错误提示安装相应的服务。
  5. 根据错误提示安装gcc,执行命令:yum install gcc
  6. 安装好后执行:make MALLOC=libc
  7. 最后执行命令进行安装:make install

Redis的启动

  1. 进入到/tmp/redis-5.0.5/src/目录下:cd /tmp/redis-5.0.5/src
  2. 执行命令ls查看目录下所有文件及文件夹,常用工具介绍:

命令

简介

redis-server

Redis 服务器端启动程序

redis-cli

Redis 客户端操作工具,也可以用telnet根据其纯文本协议来操作

redis-benchmark

Redis 性能测试工具

redis-check-aof

数据修复工具

redis-check-dump

检查导出工具

  1. 在/src/目录下启动Redis:./redis-server
  2. 在/src/目录下打开文本命令行:./redis-cli Redis 相关操作语句请点击链接自行学习:Redis 命令 | 菜鸟教程

Java 运行环境配置

  • Java 安装
  1. 命令:sudo yum -y install java-1.8.0-openjdk*
  2. 检查是否安装成功:java -version
  • Tomcat 安装
  1. 去Tomcat官网复制tomcat下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.22/bin/apache-tomcat-9.0.22.tar.gz
  2. 在命令行执行命令:wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.22/bin/apache-tomcat-9.0.22.tar.gz
  3. 解压缩刚刚下载的压缩文件:tar -xzvf apache-tomcat-9.0.6.tar.gz
  4. 解压完成后进入到bin目录下启动tomcat:sh startup.sh
  5. 打开浏览器访问:192.168.0.111:8080 成功会看到一只猫,没成功的话试着关闭防火墙再访问。
  • Maven 安装
  • Tomcat 和 Nginx 配合
  • 实例访问:java.imooc.test

Git 版本管理工具

Git 常用命令

  • 安装:yum install git
  • git命令自动补全设置