这篇教程是我折腾Linux服务器的部分汇总。我即将步入大三退站,只能算个半吊子前端,前端经验并不是很丰富......对服务器的运维倒是折腾的比较多。走之前想要给学弟学妹们最后再留点什么,经过再三考虑,就决定留下这份Linux入门笔记,当成内部Linux学习教程。
Linux是什么及其分类特点
在开始正式的介绍之前,肯定要先介绍一些什么是Linux,Linux的特点。
Linux是一种自由和开放源码的类UNIX操作系统。与Windows等操作系统一样,是一种得到广泛使用的操作系统,主要用于服务器环境,相对较少应用于桌面环境。
如果按照包管理器(软件包的打包方式)来分类,Linux有三大分支:Debian分支、Red Hat分支、Slackware分支,每个分支中都有很多发行版,使用的时候尽量选择较为主流的发行版,或者是按需选择。
其中:
Debian分支中比较常见发行版的有Debian GNU、Ubuntu、Deepin(深度操作系统)等;
Red Hat分支中比较常见的发行版有Red Hat Enterprise Linux,CentOS等;
Slackware分支发行版比较少,使用者也比较少。除此之外,还有一些以其他方式打包的Linux,比如Archlinux。
在服务器环境下使用比较多的是CentOS,其特点是维护时间长、软件包版本更新相对保守稳定,因此适合在服务器上应用。网站的服务器使用的系统就是CentOS 7,官方将维护这个系统直到2025年。
Linux的设计哲学是“一切皆文件,或者文件夹”。“一切皆文件”,指的是,对所有文件(目录、字符设备、块设备、套接字、打印机、进程、线程、管道等)操作,读写都可用fopen()/fclose()/fwrite()/fread()等函数进行处理。它屏蔽了硬件的区别,所有设备都抽象成文件,提供统一的接口给用户。虽然类型各不相同,但是对其提供的却是同一套操作界面。更进一步,对文件的操作也可以跨文件系统执行。
与Windows不一样,Linux中的根目录并不是磁盘的根目录,Linux的根目录是虚拟的,硬盘通常会挂在在/mnt文件夹下,根目录下各个文件夹的作用如下:
boot:引导目录
etc:配置文件目录
home:用户的家目录,相当于Windows中的“我的文档”
mnt:挂载驱动器(硬盘,U盘等)的文件夹
opt:第三方软件的一个安装位置
proc:存储了所有的虚文件(如CPU、分区、内存等)。这个应该是最能体现一切皆文件精髓的文件夹
root:root的家——没错,root的家目录并不是
/home/root/
tmp:临时文件
usr:存储了所有命令、程序库、文档以及诸如帮助文档等其他文件
var:存储运行时不断变化的文件
关于那个目录中存放着那些网站运行的数据,后面的章节中我们会讲到。
连接到Linux服务器
不同于常用的Windows桌面,Linux服务器通常没有图形界面,自始至终都要面对一个黑色的窗口,通过这个窗口服务器输入命令来执行。本地连接到远程的Linux服务器通常主要使用SSH终端连接的方式来进行。本地用到的命令行就是普通的Shell。
Unix shell,一种壳层与命令行界面,是UNIX操作系统下传统的用户和计算机的交互界面。第一个用户直接输入命令来执行各种各样的任务。
Secure Shell(安全外壳协议,简称SSH)是一种强加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。通常使用22端口来进行通信,但是为了安全,暴露在公网的服务器最好更换22端口至10000+的高位端口,并且使用私钥登录的方式来防止恶意爆破。
使用SSH协议主要使用XShell、putty等软件进行连接。
除了输入命令,有时候还需要向服务器传输文件,这时要用到FTP协议。
文件传输协议(File Transfer Protocol,缩写:FTP)是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议。FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。
我们有时还要对服务器上的数据库进行管理,通常使用Navicat或服务器上的phpMyAdmin。MySQL使用的端口是3306,但是如果服务器对外网开启3306端口,很容易被攻击爆破,因此如果使用Navicat进行管理,一般使用SSH通道连接数据库。
Linux基本命令
下面是一些Linux系统的常用命令,能记住就尽量记住,用的多了就自然而然的记住了哦~
cd 命令
cd命令用于进入文件夹,命令为:cd [目标文件夹路径]
,绝对路径相对路径均可。
cd /
即代表进入Linux的根目录,cd /usr/local/nginx
代表进入根目录下的user文件夹下的local文件夹下的nginx文件夹。这两个都是带有绝对路径的命令。
cd usr
代表进入当前目录下的usr文件夹,cd usr/local
表示进入当前路径下的usr文件夹下的local文件夹。这两个命令是带有相对路径的命令。
cd ..
代表进入当前文件夹的父文件夹,即上一层目录。cd ../..
代表进入当前文件夹的上两层目录。
mv命令
mv命令用于移动文件及文件夹,重命名文件或文件夹。命令为:mv [源文件的位置] [移动后的位置]
移动文件
mv config.json ../config.json
将当前目录中的config.json文件移动到上一级目录中
mv config.json /usr/local/config.json
将当前目录中的config.json文件移动到根目录下的的local文件夹中的local文件夹中
重命名文件
mv config.json config.json.bak
将config.json重命名为config.json.bak
mv config configbackup
将config文件夹重命名为configbackup
移动 重命名同时进行
移动操作和重命名操作可以同时进行。
mv config.json ../config.json.bak 将config.json移动到上一级目录中并将其重命名为config.json.b
ak
rf命令
rf命令用于删除文件或文件夹。
注意!Linux没有Windows等系统中的回收站,因此被删除的文件为永久删除,无法找回。因此此命令有一定危险性,执行前请再三检查!尤其是路径,千万不要写错。
rm config.json
删除当前文件夹中的config.json文件。输入完命令回车后系统会询问你是否确定删除,按y键回车确认删除,其他按键则取消删除。如果不想让系统确认,直接强制删除,则执行rf -f config.json
进行强制删除,其中的-f代表force,强制的。
rm -r config
删除当前目录中的config文件夹,-r代表递归删除,即删除当前文件夹中的所有文件,同样需要确认。如果不想让系统确认,直接强制删除文件夹,则执行rm -rf config
rm -rf *
删除当前文件夹中的所有文件,而且不经过确认。这个命令也可以用rm -rf ./*
代替,但强烈不推荐,因为很容易把点落下,打成rm -rf /*
,酿成大错。
rm -rf /*
这个命令非常危险!会删除整个系统中的所有文件!千万不要执行。
ls命令
ls命令,就是 list 的缩写,通过 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。
常用参数搭配:
-a 列出目录所有文件,包含以.开始的隐藏文件
-A 列出除.及..的其它文件
-r 反序排列
-t 以文件修改时间排序
-S 以文件大小排序
-h 以易读大小显示
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
pwd命令
输出当前操作目录的绝对路径。
zip命令
Linux zip 命令用于压缩文件。在传输大量的小文件到服务器上时,在本地先进行压缩,然后再到服务器端解压缩能节省大量的时间。
常用语法:zip -r 文件名.zip 要被压缩的文件1 要被压缩的文件2 要被压缩的文件夹
-r表示递归操作。
其他参数详见https://www.runoob.com/linux/linux-comm-zip.html,平常比较少用到
解压使用unzip 如 unzip zip.zip
其他详细参数见https://www.runoob.com/linux/linux-comm-unzip.html
chmod命令
chmod命令通常用来修改用户或文件夹的权限。Linux中文件权限非常重要,权限设置错误可能会导致各种各样的问题。
赋予一个文件所有人均可以读、写、执行的命令为:chmod 777 filename
其中的777是用数字表示的权限使用格式。在这种使用方式中,首先我们需要了解数字如何表示权限。 首先,我们规定 数字 4 、2 和 1表示读、写、执行权限,即 r=4,w=2,x=1 。此时其他的权限组合也可以用其他的八进制数字表示出来,如:
rwx = 4 + 2 + 1 = 7
rw = 4 + 2 = 6
rx = 4 +1 = 5
即:
若要同时设置 rwx (可读写运行) 权限则将该权限位 设置 为 4 + 2 + 1 = 7
若要同时设置 rw- (可读写不可运行)权限则将该权限位 设置 为 4 + 2 = 6
若要同时设置 r-x (可读可运行不可写)权限则将该权限位 设置 为 4 +1 = 5
Linux中,每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。即我们可以用用三个8进制数字分别表示文件的拥有者拥有者 、群组 、其它组( u、 g 、o)的权限详情,并用chmod直接加三个8进制数字的方式直接改变文件权限。
chmod可以递归使用,如修改文件夹中所有文件的权限为777:chmod -R 777 文件夹名称
tar命令
tar命令用于解压tar压缩包。GitHub上的部分release可能使用tar压缩包,因此我们需要掌握一点tar命令。
tar命令主要参数:
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。
下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
-f: 使用档案名字。tar命令中参数-f是必须有的,切记,这个参数是最后一个参数,后面只能接压缩文件的文件名。
查看 在不解压的情况下查看压缩包的内容tar -tf aaa.tar.gz
压缩
将目录里所有jpg文件打包成tar.jpgtar –cvf jpg.tar *.jpg
将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gztar –czf jpg.tar.gz *.jpg
将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2tar –cjf jpg.tar.bz2 *.jpg
将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Ztar –cZf jpg.tar.Z *.jpg
解压
解压 tar包 tar –xvf file.tar
解压tar.gztar -xzvf file.tar.gz
解压 tar.bz2 tar -xjvf file.tar.bz2
解压tar.Z tar –xZvf file.tar.Z
history命令
输出之前输入过的历史命令。快速调出上一次或几次输入的命令,可以按键盘上的方向上键,同理方向下键可以调出下一次命令。
Linux常用软件
一下是一些Linux环境下常用的软件的使用教程。
yum包管理器
在了解Linux常用软件之前,先让我们来了解一下包管理器。CentOS7使用的包管理器是yum(Yellow dog Updater, Modified)可以把包管理器想象成应用商店,可以安装应用、升级应用和管理应用。其命令格式为:
yum [options] [command] [package ...]
options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
command:要进行的操作。
package操作的对象。
yum常用命令
1.列出所有可更新的软件清单命令:yum check-update
2.更新所有软件命令:yum update
3.仅安装指定的软件命令:yum install <package_name>
4.仅更新指定的软件命令:yum update <package_name>
5.列出所有可安裝的软件清单命令:yum list
6.删除软件包命令:yum remove <package_name>
7.查找软件包 命令:yum search <keyword>
8.清除缓存命令:
yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers
Vim
Vim是一个很流行的文本编辑软件,体积小巧,功能强大。有的系统可能没有安装vim,但一定会自带vi编辑器,其大部分常用命令与vim相同,只是部分功能有缺失。
Vim和Vi一样具有三种模式:命令模式(Command mode),插入模式(Insert mode)和底线命令模式(Last line mode)。
当用户处于不同模式的时候,敲击键盘会产生不同的作用。
用户刚刚启动Vim,便进入了命令模式。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。以下是常用的几个命令:
i 切换到插入模式,以输入字符。
: 切换到底线命令模式,以在最底一行输入命令。
进入输入模式后就可以编辑文本内容,进行输入了。按左上角的esc键可以退出输入模式,重新进入命令模式。
常用的几个底线命令模式命令和其他常用命令:
:wq 保存文件并关闭
:q! 关闭vim,不保存文件
:set number 开启行号显示
:set nonumber 关闭行号显示
/xxx 搜索xxx在文件中的位置 快速跳转
G 将光标移动到文件尾部
gg 将光标移动到文件头部
iftop
iftop是一个常用的服务器网络监视软件,当服务器出现异常流量时,可以使用它找出可疑的进程,进而进行进一步处理。
如果输入iftop
提示找不到命令,则说明服务器没有安装iftop,可以使用yum安装iftop。
界面说明:
TX:发送流量 RX:接收流量 TOTAL:总流量 Cumm:运行iftop到目前时间的总流量 peak:流量峰值 rates:分别表示过去 2s 10s 40s 的平均流量
进入iftop之后可以直接按下按键显示不同的数据:
按h切换是否显示帮助;
按n切换显示本机的IP或主机名;
按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
按N切换显示端口号或端口服务名称;
按D切换是否显示远端目标主机的端口信息;
按P切换暂停/继续显示;
按b切换是否显示平均流量图形条;
按T切换是否显示每个连接的总流量;
按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
按q退出监控。
与iftop类似的,还有一个top命令。top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
服务器软件(Lnmp)的安装、维护
大坑 待更新...
其他Linux服务器常用的命令操作
修改服务器虚拟内存
使用
swapon -s
命令检查是否已经启用swap,如果没有任何输出,则代表没有启用。也可以使用free -h
命令:$ free -h total used free shared buff/cache available Mem: 992M 196M 621M 436K 174M 632M Swap: 0B 0B 0B 可以看到,swap总的容量是0,代表swap没有启用。
创建一个大小为2GB的文件:
sudo dd if=/dev/zero of=/swap bs=1024 count=2048000
设置此文件的权限,防止内存被非法读写:
sudo chmod 600 /swap
将此文件制作为swap文件:
sudo mkswap /swap
开启swap:
sudo swapon /swap
使用
swapon -s
命令检查是否已经成功启用swap:$ swapon -s Filename Type Size Used Priority /swap file 2047996 0 -1 可以从输出中看到刚才创建的大小为2GB的文件,代表swap已经启用。也可以使用
free -h
命令查看:$ free -h total used free shared buff/cache available Mem: 992M 198M 63M 436K 730M 620M Swap: 2.0G 0B 2.0G 到这一步,虚拟内存已经成功开启了。但是系统重启之后不会自动启用swap。如果需要开机自动启用swap,需要修改
fstab
文件:sudo vi /etc/fstab
在文件末尾添加一行:/swap swap swap sw 0 0
修改服务器的DNS(CentOS7)
先修改系统设置,禁止系统修改DNS服务器:vim /etc/NetworkManager/NetworkManager.conf
在此文件的[main]下面添加一行dns=none
,保存退出。
然后配置DNS服务器vim /etc/resolv.conf
,在此文件中添加或修改DNS服务器即可,修改完毕保存退出。
重启网络配置:systemctl restart NetworkManager.service
即可永久修改DNS服务器,重启不失效。
新增服务器启动项
先赋予CentOS开启启动脚本可执行权限:chmod +x /etc/rc.d/rc.local
之后编辑这个脚本,将要执行的命令粘贴进去即可。开机之后就会自动执行里面的命令。
设置服务器仅允许SSH私钥登录
1.使用Xshell生成密钥
打开Xshell,工具栏中点击用户密钥管理者,生成,按照提示和要求很快就能生成SSH密钥。
点击生成的密钥,属性,公钥,就能取得要安装在服务器上的公钥了。
2. 在服务器上安装公钥
cd ~/.ssh
vim id_rsa.pub #将密钥粘贴进此文件中
cat id_rsa.pub >> authorized_keys
如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:
chmod 600 authorized_keys
chmod 700 ~/.ssh
3. 设置 SSH,打开密钥登录功能
编辑 /etc/ssh/sshd_config 文件,进行如下设置:
RSAAuthentication yes
PubkeyAuthentication yes
另外,请留意 root 用户能否通过 SSH 登录:
PermitRootLogin yes
当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录:
PasswordAuthentication no
最后,重启 SSH 服务:
service sshd restart
参考资料 借物表
这个合集使用了很多网络资源,在此标注来源,所有用到的资源有如下:
部分原出处没有写明授权协议,如有冒犯请留言,我一定会第一时间将不合宜的地方删除,谢谢!
转发自 Xiaomage's Blog
留言0