Linux 学习笔记(持续更新ing,欢迎大家提出宝贵建议)
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
- 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命令
- Linux文件的目录结构
-
系统用户操作命令
命令 | 解释 |
---|---|
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
- 提权:sudo
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/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
- Nginx的目录结构
-
伪静态配置
-
日志格式化配置
- 编辑/etc/nginx/目录下的nginx.conf文件
- 根据不同的虚拟主机配置不同的日志文件,编辑/etc/nginx/conf.d/目录下的imooc.conf文件。
- 编辑/etc/nginx/目录下的nginx.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’;
- 设置复杂密码,例如abc123@xxx,步骤如下
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命令自动补全设置
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
- 全新的界面设计 ,将会带来全新的写作体验;
- 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
- 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的 KaTeX数学公式 语法;
- 增加了支持甘特图的mermaid语法1 功能;
- 增加了 多屏幕编辑 Markdown文章功能;
- 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了 检查列表 功能。
功能快捷键
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
合理的创建标题,有助于目录的生成
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
如何改变文本的样式
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
插入链接与图片
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
设定内容居中、居左、居右
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' | ‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" | “Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash | – is en-dash, — is em-dash |
创建一个自定义列表
-
Markdown
- Text-to- HTML conversion tool Authors
- John
- Luke
如何创建一个注脚
一个具有注脚的文本。2
注释也是必不可少的
Markdown将文本转换为 HTML。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
新的甘特图功能,丰富你的文章
- 关于 甘特图 语法,参考 这儿,
UML 图表
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::
这将产生一个流程图。:
- 关于 Mermaid 语法,参考 这儿,
FLowchart流程图
我们依旧会支持flowchart的流程图:
- 关于 Flowchart流程图 语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
注脚的解释 ↩︎