一般来说,当我们写好一个网站,是需要部署到服务器上的。而服务器层面,最主流的操作系统就是 Linux。本章就重点来总结一下 Linux 环境搭建 以及最常用的一些 命令。
对于Linux来说,有多种环境搭建方式,但是对比多种方式,使用云服务器是最优选择。我们可以先购买一个云服务器(腾讯云、阿里云、华为云……)然后将Linux环境部署到云服务器上即可。并且当我们购买了云服务器之后,会附带一个外网 IP,这意味着此时我们发布的网站,可以被别人访问到。这就和发布一个正式的网站没有任何区别,也就能让我们自己写的程序真的去给别人去使用。
下面以腾讯云为例,展示 Linux 环境搭建:这里你可能会发现在系统镜像这里选择的并不是 Linux 而是 CentOS。其实 Linux 更准确的来说是一个操作系统内核,而一个完整的系统是由 操作系统内核 和 配套的应用程序组成的。因此很多组织基于Linux内核搭配不同的应用程序,开发出了不同的操作系统,也叫发行版。这里的 CentOS 就是基于 Linux 内核构建的一个发行版。
注意:购买云服务器后记得重置一个复杂的密码,防止不法入侵。
终端软件是一类工具软件,可以和远程的主机建立网络连接,从而对远程主机进行一些操作。对于这里来说,此时我们购买的远程云服务器就是我们要连接的对象。
终端软件也有很多,这里以 XShell 为例。在 XShell 中,我们通常的做法是将连接以会话的形式保存,下次连接时直接点击会话即可。
连接成功后,我们会在终端界面看到如下信息:
ctrl + insert
shift + insert
tab
键。我们敲的所有的 Linux 命令,,都可以使用 tab 键来尝试补全,加快效率。ctrl + c
取消当前的命令.ctrl + s
ctrl + q
ctrl + l
ctrl + d
在 Linux 系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。并且 Linux 的常见命令中,很大一部分就是关于文件目录的操作。所以在介绍具体的 Linux 命令之前下面我们简单熟悉一下 Linux 中的目录结构:
Linux 中的目录结构是一种层次化的文件系统结构,以根目录 /
为起点,向下分为多个子目录。以下是常见 Linux目录结构及其用途:
/
(根目录): 整个文件系统的起始点。/bin
:存放可执行的二进制文件(命令和系统工具)。/boot
:存放启动相关的文件,如内核和引导加载器。/dev
:用于设备文件的挂载点,包括硬件设备和外部设备。/etc
:存放系统配置文件,如网络配置、用户配置等。/home
:用户的主目录,每个用户都有一个独立的子目录。/lib
:存放系统共享的库文件,许多程序需要依赖这些库文件。/media
:可移动媒体设备的挂载点,如光盘、USB 等外部存储设备。/mnt
:用于临时挂载其他文件系统或外部设备。/opt
:第三方软件的安装目录,通常将其放在 /opt
下。/proc
:虚拟文件系统,提供关于当前内核状态的信息。/root
:超级用户(root)的主目录。/sbin
:存放只有管理员才能执行的系统命令。/srv
:存放服务相关的数据和文件。/tmp
:临时目录,用于存放临时文件。/usr
:存放用户和系统共享的应用程序和文件资源。/var
:存放经常变化的文件,如日志文件、数据库文件等。在 Linux 中,同样可以使用 绝对路径 和 相对路径 来访问文件和目录:
1、绝对路径:绝对路径是从根目录
/
开始的完整路径。它指定了文件或目录在文件系统中的确切位置。绝对路径以斜杠/
开头,例如/home/user/file.txt
。无论当前所在的工作目录在哪里,绝对路径都能准确地指向特定的文件或目录。
2、相对路径:相对路径是相对于当前工作目录的路径。相对路径不以斜杠/
开头,而是从当前目录开始的路径。常用的相对路径符号包括.
(代表当前目录,可省略)和..
(代表上级目录)。例如,假设当前工作目录是/home/user/
,则相对路径./file.txt
指的是当前目录下的file.txt
文件;../docs/document.txt
指的是上级目录下的docs/document.txt
文件。
ls
命令ls 目录:简单地列出当前目录下的文件和子目录(不包括隐藏文件)。
ls -l 目录:以长格式显示文件和目录的详细信息,包括权限、所有者、大小、修改日期等。通常简写为 ll
。
ls -R 目录:递归地显示当前目录下的所有文件和子目录,包括子目录中的文件和子目录。
cd
命令cd 目录名:将当前工作目录改变到指定的目录下。
pwd
命令pwd:显示用户当前所在的目录
mkdir
命令使用示例:
创建一个单级
目录:
mkdir mydir
创建多级
目录:
mkdir -p mydir/subdir/subsubdir
touch
命令touch 文件/目录:命令参数可更改文件或目录
的日期时间,包括存取时间和更改时间。或者新建一个不存在的文件
。
使用示例:
创建一个不存在的文件
touch file.txt
cat
命令cat 文件:查看目标文件的内容
echo
命令echo :用于在终端输出文本或变量的内容。它可以直接将指定的文本打印到标准输出(终端)上。
使用示例:
输出文本:
echo "Hello, World!"
输出变量的值:
name="Alice"
echo $name
将输出重定向到文件中:
echo "HelloLinux" > file.txt
这行命令会将文本 “HelloLinux” 写入到名为 file.txt
的文件中。如果文件已存在,原有内容将被覆盖,如果文件不存在,会自动创建一个新的文件 file.txt 并将输出重定向到该文件中。如果想追加内容到文件末尾,可以使用 >>
操作符,例如 echo "More content" >> file.txt
。
vim
命令vim 是一个强大的文本编辑器。也是Linux自带的文本编辑器,相当于 windows 上的记事本。
vim 的基本使用
1、打开文件:
vim [文件路径]
2、编辑文件: 默认情况下是普通模式,普通模式下键盘的按键表示一些特殊功能的快捷键,使用i
键可以进入到插入模式就可以像记事本一样正常编辑了。
3、保存退出: 在插入模式下不能保存文件,需要先按下Esc
回到普通模式,然后使用:wq
同时执行保存和退出。
PS
:使用vim编辑文件时,如果该文件不存在,Vim 将会创建一个新的空文件并打开它。
rm
命令rm 文件/目录: 删除文件或目录。
删除是一个非常危险的操作,使用时一定要慎重!!!
使用示例:
删除文件,需要确认:
rm file.txt
强制删除文件,不需要确认:
rm -f file.txt
递归删除目录及其所有内容,需要确认:
rm -r mydir
递归删除目录及其所有内容,强制删除,不需要确认:
rm -rf mydir2
强制删除当前目录中的所有文件
rm -rf *
cp
命令cp 源文件或目录 目标文件或目录: 复制文件或目录到指定位置。
PS
:使用 cp 命令需要注意的是:如果拷贝的目标文件已经存在,会发生覆盖的情况。
使用示例:
复制文件到目标位置(并重命名):
cp file.txt file2.txt
复制目录到目标位置:
cp -r mydir mydir2
mv
命令mv 源文件或目录 目标文件或目录:用于移动文件和目录,也可以用于更改文件或目录的名称。
PS1
:相较于 cp
来说 mv
底层的效率是更高的,mv 操作就相当于修改一下“路径”这个属性。
PS2
:使用 mv 同样需要注意:如果移动的位置存在同名文件,会发生覆盖的情况。
PS3
:由于Linux中没有回收站的概念,并且 rm 操作又是非常危险的,所以删除某个文件或目录时,可以使用mv将其移动到一个单独的目录中,这个单独的目录就可以假想为一个回收站。
使用示例
文件重命名
mv file.txt newfile.txt
移动文件到指定目录
mv newfile.txt mydir3
移动目录到指定目录
mv mydir2 mydir3
grep
命令grep 功能:用于搜索某个文件中是否包含特定的字符串。
使用示例:
递归搜索当前目录下的所有文件是否包含"hello",并显示行号:
grep -Rn "hello" *
ps
命令ps 功能:用于查看当前正在运行的进程信息。
使用示例(经常搭配grep使用):
显示系统上所有的进程
ps aux
筛选指定 进程名
的进程
ps aux | grep "进程名"
筛选指定 进程 id
的进程
ps aux | grep "进程id"
netstat
命令nestat功能:用来查看系统上的网络状态。
使用示例(经常搭配grep使用):
显示系统上所有网络连接状态
netstat -anp
显示指定 进程名
的网络连接状态
netstat -anp | grep "进程名"
显示指定 端口号
的网络连接状态
netstat -anp | grep "端口号"
ps 和 netstat 最常用的两个场景:
1、使用 ps 来查看某个进程的 pid
ps aux | grep "进程名"
2、使用 nestat 查看某个进程绑定的端口号
netstat -anp | grep "进程名"
man
命令Linux的命令有很多参数,上述介绍的Linux命令中,只是列举了一些常用的参数选项,对于这么多的参数,我们不可能全记住,我们可以通过 man ,查看Linux命令的联机手册获取帮助。
使用示例:
查看 netstat 的联机手册
man netstat