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
- CentOS下载:百度网盘地址 密码:v8h3
云服务器的平台
准备工作
- 查看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常用命令
以下只列出部分命令,其他命令可自行去官网或者第三方网站自行查找,例如:菜鸟教程
- 软件操作命令
- 软件包管理器:yum
- 安装软件:yum install xxx
- 卸载软件:yum remove xxx
- 搜索软件:yum search xxx
- 清理缓存:yum clean packages
- 列出已安装:yum list
- 软件包信息:yum info xxx
- 服务器硬件资源和磁盘操作
- 内存:free -m(m是以兆的单位展示)
- 硬盘:df -h
- 负载:w/top
当在1分钟处的值到达1的时候,说明CPU现在是满负荷状态,这个时候要进行检查,查明原因。当超过1的时候,超频运行,随时都可能发生宕机。运维的话,一般情况下,0.6,0.7属于正常值,当大于它们的时候,就会进入危险报警。 - cpu个数和核数:cat /proc/cpuinfo
- 格式化磁盘:fdisk
- 文件和文件夹操作指令
- Linux文件的目录结构
- 根目录:/
- 家目录:/home
- 临时目录:/tmp
- 配置目录:/etc
- 用户程序目录:/usr
- 文件基本操作
令 | 解释 |
ls | 查看目录下的文件 |
touch | 新建文件 |
mkdir(-p) | 新建一个目录(循环创建) |
rmdir(-p) | 删除一个空目录(循环删除) |
cd | 进入目录 |
rm(-rf) | 删除文件和目录(强制删除,不提示) |
cp | 复制 |
mv | 移动 |
pwd | 显示路径 |
- 文本编辑神器Vim
- 在服务器上是没有类Windows的操作界面的,所有GUI界面都无法使用
- Vim是最出名的Linux文本编辑器,可以对文件修改操作
- Vim安装:yum install vim
- Vim编辑文件:(小写字母为小写模式下操作,大写字母为大写模式下操作)
- 开始编辑:i
- 退出编辑:先按Esc,然后顺序按 :wq
- 快速切换光标到首行和尾行:首行(gg),尾行(G)
- 删除光标当前行:dd(恢复上一次操作:u)
- 复制光标当前行:yy
- 插入复制的行:p
- 显示行数::set number
- 文件权限421
- r/w/x:r读4、w写2、x可执行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) |
- 文件压缩和解压
- tar命令
- 系统用户操作命令
命令 | 解释 |
useradd | 添加用户 |
adduser | 添加用户 |
userdel | 删除用户 |
passwd | 设置密码 |
- 防火墙相关设置
- 作用:保护服务器安全
- 设置防火墙规则
- 开放80,22端口
- 关闭防火墙
- 基本命令:
- 安装:yum install firewalld
- 启动:service firewalld start
- 检查状态:service firewalld status
- 关闭或禁用防火墙:service firewalld stop/disable
- 查看是否安装防火墙:yum list | grep firewall
- 查看是否启动防火墙:ps -ef | grep firewall
- 查看版本号:firewall-cmd --version
- 查看状态:firewall-cmd --state
- 查看区域:firewall-cmd --get-zones
- 查看默认区域: firewall-cmd --get-default-zone
- 查看所有区域:firewall-cmd --list-all-zone
- 添加服务:firewall-cmd --add-service=ssh
- 删除服务:firewall-cmd --remove-service=ssh
- 查询有哪些服务:firewall-cmd --list-services
- 查询端口:firewall-cmd --query-port=22/tcp
- 添加端口:firewall-cmd --add-port=22/tcp
- 删除端口:firewall-cmd --remove-port=22/tcp
- 提权操作sudo和文件传输操作
- 提权:sudo
- 输入visudo命令
- 根据图片内容操作
- 注意:在开发过程中不要使用root账号进行操作,不安全。
- 文件下载:wget、curl
- wget http://www.baidu.com
- curl -o baidu.html http://www.baidu.com (baidu.html是保存的文件名)
- 文件上传:scp
- 将本地文件imooc.txt上传到imooc服务器tmp文件夹下:scp imooc.txt imooc@192.168.0.111:/tmp/
- 将服务器上的index.html下载到本地:scp imooc@192.168.0.111:/tmp/index.html ./
- yum install lrzsz
- 从桌面上传文件到服务器:rz
- 从服务器下载文件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拓展知识
- 配置虚拟主机
- 进入到/etc/httpd/conf目录下:cd /etc/httpd/conf
- 编辑conf目录下的httpd.conf文件:vim httpd.conf
- 搜索/virtual,添加如下代码:
- 保存退出后重新启动服务:service httpd restart
- 新建/data/www目录:mkdir -p /data/www
- 切换到www目录下输入命令:ll /data来查看当前目录所属者,如果是root,则输入命令sudo chown -R imooc:imooc /data
- www目录下新建一个index.html,输入一些内容,保存退出。
- 找到自己系统的hosts文件位置(自行百度),在文件中加入192.168.0.111 www.imooc.test
注意:如出现不能保存hosts文件的情况,需要更改文件的权限
右击hosts文件 →属性→安全→编辑→找到当前使用的用户→在权限下勾选完全控制→确定 - 编辑conf目录下的httpd.conf文件:vim httpd.conf
<Directory “/data/www”>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory> - 重启服务器: service httpd restart
- 打开浏览器访问www.imooc.test 如果没有出现index.html中的内容,输入命令setenforce 0,再次访问应该就可以显示了。(setenforce 0可以设置宽松模式,setenforce 1强制模式,此操作是临时的,重启之后恢复默认为强制模式)
- 解决重启后不恢复为默认:
- 编辑目录/etc/selinux下的config文件:vim /etc/selinux/config
- 配置伪静态
- 编辑目录/etc/httpd/conf下的httpd.conf文件:vim /etc/httpd/conf/httpd.conf
- 搜索/LoadModule加入以下代码:
- 在之前配置的地方加入一下代码:
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安装
- CentOS7默认安装mariadb数据库,先将mariadb数据库卸载:yum remove mariadb-libs.x86_64
- 下载Mysql源:点击跳转到下载页面 复制完地址后,在命令窗口进入到/tmp/目录下,进行下载:wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm(此处粘贴你复制的链接地址)
- 安装源:yum localinstall mysql57-community-release-el7-8.noarch.rpm
- 安装MySQL服务:yum install mysql-community-server
- 启动MySQL服务:service mysqld start
- 查看默认密码:cat /var/log/mysqld.log | grep “password”
- 使用密码进行登录Mysql服务:mysql -uroot -prPcy+Qtgx1i2(rPcy+Qtgx1i2为你查看到的密码)
- 重置密码
- 设置复杂密码,例如abc123@xxx,步骤如下
- 编辑文件/etc/my.cnf,在【mysqld】模块添加:skip-grant-tables 保存退出
- 重启MySQL服务:service mysqld restart
- 登录:mysql -u root -p
- 选择数据库mysql:use mysql;
- 将密码置空:update user set authentication_string = ‘’ where user = ‘root’;
- 退出:quit;
- 去掉刚开始加入的skip-grant-tables,然后重启服务,并登录mysql
- 执行ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘abc123@xxx’;
- 设置简单密码,例如123456,需要进行特殊配置,步骤如下
- 在上面设置复杂密码的第7步后面执行两条语句:set global validate_password.policy=0;和set global validate_password.length=1;
- 再执行 ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘123456’;
MySQL拓展知识
- 远程连接
- 登录MySQL:mysql -u root -p 回车输入你的密码
- 使用mysql数据库进行操作,查看user表
- 完成以上步骤后执行命令:flush privileges; 或者重启MySQL服务器
- 打开windows系统下的Navicat客户端新建连接
- 如果连接时将会出现如下错误:“2059 - authentication plugin ‘caching_sha2_password’ cannot be loaded: 乱码”,此时有如下操作:
- ALTER USER ‘root’@’%’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER;(password为root的密码)
- ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘password’;(password为root的密码)
- flush privileges; 或者重启MySQL服务器
- 开启Cenelog
- 作用:查看你当前的操作,可查错
- 开启步骤:
- 登录MySQL服务,然后设置general.log文件的目录:set global general_log_file="/tmp/general.log";
- 设置开启general.log,也可进行关闭:set global general_log=on;
- 新开一个终端,登录当前账号,可查看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
- 新建用户和权限操作
- 新建用户:create user ‘账号’@’%’ identified by ‘密码’; 在这里因为是新建的用户,加密方式为caching_sha2_password,所以此处参加上面的操作进行密码加密方式的修改。
- 权限操作:
- 权限授予:grant all privileges on . to ‘账号’@’%’; 授予该账号所有权限。
- 权限回收:revoke all privileges on . from ‘账号’@’%’;
下图是privilege特权表你只需要把你想要授权的privleges填入语法权限那里就OJBK了。
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 安装
- 首先去Redis官网下载源码包,进入官网,复制下载链接地址。
- 进入到/tmp/目录下执行命令:
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
粘贴上你复制的地址。 - 下载好后进行解压:
tar -xzvf redis-5.0.5.tar.gz
- 进入redis-5.0.5目录执行命令:
make
根据错误提示安装相应的服务。 - 根据错误提示安装gcc,执行命令:
yum install gcc
- 安装好后执行:
make MALLOC=libc
- 最后执行命令进行安装:
make install
Redis的启动
- 进入到/tmp/redis-5.0.5/src/目录下:
cd /tmp/redis-5.0.5/src
- 执行命令
ls
查看目录下所有文件及文件夹,常用工具介绍:
命令 | 简介 |
redis-server | Redis 服务器端启动程序 |
redis-cli | Redis 客户端操作工具,也可以用telnet根据其纯文本协议来操作 |
redis-benchmark | Redis 性能测试工具 |
redis-check-aof | 数据修复工具 |
redis-check-dump | 检查导出工具 |
- 在/src/目录下启动Redis:
./redis-server
- 在/src/目录下打开文本命令行:
./redis-cli
Redis 相关操作语句请点击链接自行学习:Redis 命令 | 菜鸟教程
Java 运行环境配置
- Java 安装
- 命令:
sudo yum -y install java-1.8.0-openjdk*
- 检查是否安装成功:
java -version
- Tomcat 安装
- 去Tomcat官网复制tomcat下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.22/bin/apache-tomcat-9.0.22.tar.gz
- 在命令行执行命令:
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.22/bin/apache-tomcat-9.0.22.tar.gz
- 解压缩刚刚下载的压缩文件:
tar -xzvf apache-tomcat-9.0.6.tar.gz
- 解压完成后进入到bin目录下启动tomcat:
sh startup.sh
- 打开浏览器访问:192.168.0.111:8080 成功会看到一只猫,没成功的话试着关闭防火墙再访问。
- Maven 安装
- Tomcat 和 Nginx 配合
- 实例访问:java.imooc.test
Git 版本管理工具
Git 常用命令
- 安装:
yum install git
- git命令自动补全设置