贵州城乡住房建设部网站,编程猫加盟条件和费用,一个网站的制作特点,网站建设搭建专业网站平台公司1.Linux 简介Linux 是一种 免费使用、自由传播的类 Unix 操作系统Linux操作系统内核#xff0c;由林纳斯托瓦兹在1991年10月5日首次发布...Linux 是一套开源操作系统#xff0c;它有稳定、消耗资源小、安全性高等特点大多数人都是直接使用 Linux 发行版#xff08;就是将 Li…1.Linux 简介Linux 是一种 免费使用、自由传播的类 Unix 操作系统Linux操作系统内核由林纳斯·托瓦兹在1991年10月5日首次发布...Linux 是一套开源操作系统它有稳定、消耗资源小、安全性高等特点大多数人都是直接使用 Linux 发行版就是将 Linux 内核与应用软件做一个打包...目前市面上较知名的发行版有Ubuntu、RedHat、CentOS市场占有率第一、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS...前端为什么要学习 Linux呢随着前后端分离进程的加速前端程序和后端接口是两套程序前端自己来部署程序就更加的合适许多前端基建的工作需要基于 Linux 环境来实施落地2.安装 Linux 操作系统2.1 通过 VMware 虚拟机安装 Linux2.1.1 安装 VMware推荐安装 VMware® Workstation 16 Pro点击下方链接下载 VMware 后根据安装向导安装即可https://my.vmware.com/en/web/vmware/downloads/info/slug/desktop_end_user_computing/vmware_workstation_pro/16_02.1.2 安装 Linux2.1.2.1 下载 Linux 光盘Centos 官网 下载https://www.centos.org/download/或者去 阿里云 下载http://mirrors.aliyun.com/centos/7/isos/x86_64/2.1.2.2 在虚拟机中安装 Centos7https://blog.csdn.net/zhangjianfu2222/article/details/1274433092.1.2.3 注意事项安装时需要配置网络安装时配置的密码必须记住鼠标在进入虚拟机出不来时按住键盘 ctrlalt必须安装 VMware tools可以解决鼠标出不来等很多问题可以利用 快照、挂起 等操作迅速恢复系统状态2.1.3 配置网络查看 Linux 系统的宿主设备 IP比如这里的192.168.1.5在Linux 系统中通过 ping 测试网络发现不能跟宿主设备连接因此需要配置网络使用 Linux系统自带的 vi 编辑器打开网路配置文件按照以下标注进行修改文件地址 /etc/sysconfig/network-scripts/ifcfg-ens33 修改完成后重启网络服务systemctl restart network再次测试网络连接状态2.1.4 查看ip、安装 net-tools查看 ip 有两种方式ip addrifconfig注意如果安装精简版 Linux则 ifconfig、netstat 等命令可能不存在需要安装 net-tools使用下方命令搜索 ifconfig 包所在的模块可以看到打印了 net-tools这就是 ifconfig 包所在的模块安装这个模块就能使用 ifconfig 包了yum search ifconfig使用下方命令强制安装 net-toolsyum install -y net-tools2.2 直接购买服务器西部数码阿里云腾讯云百度云3.vi/vim 文本编辑器3.1 vi/vim 是什么vi 是一个文本编辑器一般 Linux 系统都会内置 vivim 是从 vi 发展出来的一个文本编辑器功能更强大一般 Linux 系统不会内置 vim需要单独安装如果只是常规使用 vi 就足够了3.2 vi/vim 三种模式3.2.1 命令模式启动 vi/vim便进入了命令模式该模式下的敲击键盘动作会被识别为命令而非输入字符比如按下 i并不会输入一个字符i 被当作了一个命令i —— 切换到输入模式可以直接编辑文件x —— 删除当前光标所在处的字符: —— 切换到底线命令模式在最底行输入命令3.2.2 输入模式在命令模式中按下 i 就进入了输入模式输入模式可以使用以下按键编辑文件直接按键输入字符ENTER回车键换行BACK SPACE退格键删除光标前一个字符DEL删除键删除光标后一个字符方向键在文本中移动光标HOME/END移动光标到行首/行尾Page Up/Page Down上/下翻页Insert切换光标为输入/替换模式光标将变成竖线/下划线Esc退出输入模式切换到命令模式文本修改相关命令剪切粘贴相关命令3.2.3 底线命令模式在命令模式中按下英文冒号:就进入了底线命令模式基本命令有已经省略了冒号q 退出程序w 保存文件一般这俩命令都连起来用也就是“:wq”代表执行保存文件并退出退出相关命令3.2 vi/vim 使用示例vi/vim 使用流程一般为在文件所在目录下执行命令 —— vi 文件名称--按键盘 i 进入输入模式--编辑内容--按Esc退出输入模式进入命令模式--输入:wq 回车退出以test.text 文件为例~命令行切换到 test.text 文件所在的目录执行以下命令vi test.text如果执行命令所在的目录下不存在 test.text 文件vi 命令会打开一个空白文件等待编辑内容展示出文本内容后键盘按下 i 进入输入模式输入模式页面下边会有一个 INSERT 标识移动光标编辑文件编辑完成后按键盘 Esc 退出输入模式按:wq保存并退出4.远程工具 XshellXshell 可以在 Windows 系统下访问远端不同系统下的服务器4.1 安装 Xshell下载地址https://xshell.en.softonic.com/download下载完成后根据提示安装即可4.2 创建会话首次连接服务器需要新建会话连接后续再使用时无需再次新建左上角文件-新建按照说明填写信息点击确定输入 Linux 的用户名、密码即可访问 Linux 系统后面直接双击左侧会话即可远程访问4.3 shell 常见命令1、init 0 关机2、init 6 重启3、ls 、 ls -l 、 ll 列出出当前目录下的文件4、cd 切换目录5、pwd 查看当前完整路径7、cd - 切换最近使用过的两个目录8、ctrlc 中断当前程序9、ctrll / (clear) 清屏10、ip addr / ifconfig 查看网卡信息11、ping 127.0.0.1 看网络是否通畅4.4 shell 命令技巧4.4.1自动补全命令命令1 次tab命令2 次tab4.4.2 查看历史命令上下键盘 —— 查看最近的历史命令history —— 查看命令历史!22 —— 调用 历史命令中 编号为 22 的命令!h —— 调用历史中最后一次以 h 开头的命令4.4.3 获取帮助ls --helpman ls5.文件、目录、权限为了保证安全Linux 系统对 不同用户 访问 同一文件或目录 的权限做了不同的规定5.1 Linux 文件相关命令5.1.1 创建文件 touch创建单个文件touch file1批量创建文件touch file{1..10}5.1.2 删除文件 rm -rf-r递归的删除目录下面文件以及子目录下文件-f强制删除忽略不存在的文件从不给出提示删除单个文件rm -rf file11批量删除文件rm -rf file{1..10}5.1.3 复制、移动文件/重命名文件 cp mv复制文件cp file2 file22移动文件/重命名文件本质上就是移动文件mv file1 file115.1.4 查看、筛选文件内容 cat查看文件全部内容cat file1查看文件前三行| 把前面的执行结构给后面cat file1 | head -3查看文件后三行| 把前面的执行结构给后面cat file1 | tail -3查找过滤文件中的某个字符cat httpd.conf | grep listen查找过滤文件中的某个字符忽略大小写cat httpd.conf | grep -ignore listen cat httpd.conf | grep -i listen5.1.5 编辑文件 vi进入编辑模式vi file1使用 vi 搜索文件内容vi 命令进入 file1 文件后输入 /Listen按N搜索下一个 Listen 单词5.1.6 查找文件 find5.1.6.1 find内置find 目录 -name 文件名举个例子查找根目录下名为 httpd.conf 的文件find / -name httpd.conf5.1.6.2 updatedb需单独安装相较于 findupdatedb 的查找速度更快需单独安装安装命令yum install mlocate -y查找示例建立一个小型数据库updatedb在数据库里面搜索locate httpd.conf5.2 Linux 目录5.2.1 Linux 目录功能介绍在 Linux 系统根目录下执行 ls查看根目录下所有文件/目录*root 目录Linxu 超级权限 root 的主目录*home 目录系统默认的用户主目录如果添加用户时 不指定 用户主目录则默认在/home下创建与用户同名的文件夹*usr 目录应用程序存放目录安装 Linux 软件包时默认安装到/usr/local 目录下*etc 目录存放系统的配置文件如 /etc/fstal 存放系统分析信息*bin 目录存放系统所需要的重要命令比如文件或目录操作的命令 ls、cp、mkdir 等另外/usr/bin 也放了一些系统命令*sbin 目录存放只有 root 超级管理员才能执行的程序media 目录即插即用型设备挂载点光盘默认挂载点通常光盘挂载于/mnt/cdrom 下mnt 目录 临时文件挂载目录测试目录opt 目录 第三方软件存放目录测试目录tmp 目录临时文件夹测试目录boot 目录存放 Linux 启动时内核及引导系统程序所需要的核心文件内核文件和 grub系统引导管理器都位于此目录dev 目录存放这 Linux 系统下的设备文件如光驱等var 目录目录经常变动/var/log 存放系统日志、系统库文件5.2.2 Linux 目录相关命令5.2.2.1 创建目录 mkdir创建多个同级目录mkdir dir1 dir2 dir3递归创建树目录mkdir -p a/b/c/d/e/f/g5.2.2.2 删除目录 rm -rf-r递归的删除目录下面文件以及子目录下文件。-f强制删除忽略不存在的文件从不给出提示删除 dir1、dir2 目录rm -rf dir1 dir2删除以 dir 开头的所有文件rm -rf dir* 5.2.2.3 复制目录、移动目录/重命名目录 cp、mv复制目录及目录下的文件注意别忘记递归复制否则只会复制空文件夹cp -rf wwwroot/ mywwwroot/移动目录/重命名目录本质上就是移动目录mv dir1 dir115.2.2.4 查看目录 ls tree普通方法查看目录ls递归查看目录树tree atree 命令需要单独安装yum install tree -y5.3 Linux 权限5.3.1 权限分类、用户分类权限分类【用户对文件所拥有的权限】r读w写x执行用户分类【ugoa表示所有人】 所有者 user u 所属组 group g 其他用户 other o 所有用户 all a5.3.2 文件/目录中的权限5.3.2.1 文件的 rwxr 查看文件内容w 在文件里写内容x 执行该文件文件不是普通文件是程序或脚本5.3.2.2 目录的 rwxr 查看目录里面的文件(4)w 在目录里创建或删除文件(2)x 切换进目录(1)5.3.2.3 查看并分析文件信息显示一个文件的属性、文件所属的用户/组ls -l-rw-r--r--. 1 root root 60 5月 16 17:54 test.txt红色这部分代表 类型可以是‘-’、‘d’、‘l’、b’、‘c’、‘s’、‘p’‘-’ 普通文件没有系统功能的文件/命令‘d’ 目录‘l’ 链接文档 ( link file )相当于快捷方式‘b’ 装置文件里面的可供储存的接口设备一般情况系统用于管理存储文件的类型‘c’ 装置文件里面的串行端口设备例如键盘、鼠标 ( 一次性读取装置 )黄色这部分代表 用户权限三个为一组且均为『rwx-』 的三个参数的组合第一组表示所有者user的权限 第二组表示所属组group的权限 第三组表示其他人other的权限[ r ] 代表可读(read)[ w ] 代表可写(write)[ x ] 代表可执行(execute)三个权限的位置不会改变如果没有权限就会出现减号[ - ]蓝色这部分代表 文件加载了安全上下文安全上下文的启动程序是由SELlinux开启加载过安全上下文的文件就会出现第三位的点否则没有该点粉色这部分代表 文件拥有者绿色这部分代表 文件拥有组5.3.2.4 举个例子举个例子~~分析下方数据中的信息drwxr-x---. 2 root root 6 4 月 11 2018 mntd —— 表示目录rwx —— root 对 mnt 目录具有读、写和执行的权限r-x —— root 组内其他用户对 mnt 目录具有读和执行权限--- —— other 其他所有用户对 mnt 目录没有任何权限. —— 表示 ACL 的属性2 —— mnt 里面的目录数量root —— 当前目录所属用户root —— 当前目录所属组6 —— 文件大小以字节为单位如果是一个文件夹则表示该文件夹的大小注意是文件夹本身的大小而不是文件夹及其内部的文件的总大小人不能理解文件夹是一个特殊的文件的含义,这样的话理解文件夹大小的含义就比较困难了. 4 月11 2018 —— 文件创建时间mnt —— 目录名称5.3.2.5 更改文件属主、更改文件属组不常用更改文件属组groupchgrp [-R] 属组名 文件名更改文件属主userchown [–R] 属主名 文件名同时更改文件属主、属组chown [-R] 属主名属组名 文件名-R递归更改文件属组在更改某个目录文件的属组时如果加上-R的参数那么该目录下的所有文件的属组都会更改5.3.3 权限的数字表示法Linux 文件权限有两种设置方法一种是数字 4214r2w1x一种是符号 rwxr4w2x1user/group/others 三种用户都有 read/write/execute 权限且可以累加举个例子~~当权限为[-rwxrwxr--]这表示user rwx 421 7group rwx 421 7others r-- 400 4再举个例子~~ 755 表示-rwxr-xr-xchmod 755 file.txt当前用户对 file.txt 具有读/写/执行的权力当前用户组对 file.txt 具有读/写/执行的权力其他用户对 file.txt 具有读/写/执行的权力5.3.4 chmod 权限分配针对群体用户批量设置权限增加权限-删除权限5.3.4.1 增加权限给 当前用户 分配执行 my.sh 的权限chmod ux my.sh 给 其他用户 分配对 file.txt 的读写权限chmod or,ow file.txt 给 其他用户 分配对 mnt 目录的读取、写入、执行进入权限给 其他用户 分配对 mnt 目录及 mnt目录下所有文件的读取、写入、执行进入权限chmod or,ow,ox mnt chmod -R or,ow,ox mnt 修改 所有用户 对指定目录下文件 的权限为可读、可修改、可执行chmod -R 777 wwwroot/5.3.4.2 删除权限让 其他用户 对 mnt 目录没有任何权限chmod o-r,o-w,o-x mnt让 所有用户 对 test.sh 文件具有 x 的权限让 所有用户 对 test.sh 都没有 x 权限chmod ax test.shchmod a-x test.sh5.3.5 用户权限管理 ACL针对单独用户设置单独权限5.3.5.1 查看 opt 拥有的 ACL 权限getfacl opt5.3.5.2 设置 opt 的 ACL 权限让 zhangsan 对 opt 目录具有 rx 权限-m 表示修改权限setfacl -m u:zhangsan:rx opt/让 lisi 对 opt 目录具有 rwx 的权限-m 表示修改权限setfacl -m u:lisi:rwx opt/5.3.5.3 删除 opt 的 user1 拥有的 ACL 权限让 zhangsan 失去对 opt 目录的权限-x 表示删除权限setfacl -x u:zhangsan opt 5.3.5.4 删除 opt 上设置过的所有 ACL 权限setfacl -b opt/5.3.6 用户权限管理 visudo5.3.6.1 获取命令的bin文件可执行文件每个命令对应着一个可执行文件查找 userdel 命令的 bin 文件which userdel5.3.6.2 root 超级管理员配置提权前面说过sbin 目录下存放的是 root 用户才能执行的命令但是有时候其他用户比如 zhangsan也可能需要执行 sbin 目录下的命令此时就需要超级管理员给其他用户设置一下让其他用户可以通过提权的方式使用 sbin 目录下的命令具体步骤命令行输入 —— visudo允许zhangsan使用 useradd 命令 —— %zhangsan localhost/usr/sbin/useradd允许lisi使用 userdel 命令 —— %lisi localhost/usr/sbin/userdel5.3.6.3 普通用户使用 sudo 调用 sbin 中的命令sudo useradd wangwusudo userdel wangwu5.3.7 用户增删改查Linux 同时可以支持多个用户每个用户对自己的文件设备有特殊权限保证用户之间互不干扰当硬件配置非常高时每个用户还可以同时执行多个任务多个线程同时工作提高效率多用户是 Linux 优于其他操作系统的一大特点5.3.7.1 添加用户useradd lisi5.3.7.2 设置密码passwd lisi5.3.7.3 删除用户userdel -r lisi注意-r递归的删除目录下面文件以及子目录下文件删除用户的时候用户组被删除5.3.7.4 查看用户who 命令显示当前正在系统中的所有用户名字、使用终端设备号、注册时间whoami 命令显示出当前终端上使用的用户last 命令last 作用是显示近期用户或终端的登录情况5.3.7.5 用户加入组/移出组把用户 testuser 加入到 root 组加入组后testuser 获取到 user 组及 root 组所有权限gpasswd -a testuser root移出组gpasswd -d testuser root6.Linux安装软件推荐安装方式yum rpm 二进制解压 源代码编译6.1 rpm 方式安装RPM 全称为 Redhat Package Manager 是由 Redhat 公司提出的用于管理 Linux 下软件包的软件。Linux 安装时除了几个核心模块以外其余几乎所有的模块均通过 RPM 完成安装6.1.1 本示例基于 httpd 来演示6.1.1.1 挂载光盘必须把把光盘放在光驱中光驱必须放连上电脑mount dev/cdrom /media 挂载df 查看光盘是否挂载查找 ls | grep httpd6.1.1.2 安装rpm -ivh httpd-2.4.6-80.el7.centos.x86_64.rpmrpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpmrpm -i 需要安装的包文件名rpm -iv 安装过程中显示正在安装的文件信息rpm -ivh 安装过程中显示正在安装的文件信息及安装进度6.1.1.3 卸载、升级httpd 表示要卸载的软件包rpm -e httpd 查找 httpdrpm -q httpd 升级 httpdrpm -Uvh httpd 6.1.2 本示例基于Java8 来演示6.1.2.1 下载 jdk下载对应版本 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html6.1.2.2 上传并安装 jdk使用Xftp 将刚下载的 jdk-8u291-linux-x64.rpm 文件进行上传到服务器检查是否安装OpenJDK如果有则卸载执行命令 java -version 出现以下内容表示系统已经安装 OpenJDK执行 rpm-qa | grep java 查看系统自带的 Java 相关文件将 java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64 所有文件全部删除rpm -e --nodeps java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64验证是否全删除执行命令 rpm-qa | grep java 无任何文件表示删除成功在上一步上传文件所在目录执行命令安装 jdkrpm -ivh jdk-8u291-linux-x64.rpm验证是否安装成功6.2 yum 方式安装Yum全称为 Yellow dog Updater, Modified是一个在 Fedora 和 RedHat 以及 CentOS 中的 Shell前端软件包管理器。主要功能是更方便的添加/删除/更新 RPM 包自动解决包的依赖性问题6.2.1 yum 基本操作6.2.1.1 yum 安装 rpm 包yum install -y net-tools —— 包括 netstat ifconfig 等命令yum install -y unzip zip —— zip 压缩减压yum install -y mlocate —— updatedbyum install -y wget —— 直接从网址下载文件yum -y install psmisc —— ① 查看进程pstree | grep httpd ② 显示进程以及子进程 pstree -p 6.2.1.2 yum 卸载 rpm 包yum -y remove wget6.2.1.3 yum 搜索 rpm 包yum search xxx6.2.1.4 yum 查看 rpm 包yum listyum list | grep httpdyum list updates —— 列出所有可更新的软件包yum list installed —— 列出所有已安装的软件包6.2.1.5 yum 显示 rpm 包信息yum info package1举个例子~~yum info httpd6.2.2 yum 仓库配置yum 的主配置文件 —— etc/yum.confyum 的仓库配置文件 —— /etc/yum.repo.d/*.repo这里可以配置一个或多个 repositoryyum 仓库就是使用 yum 命令下载软件的镜像地址我们通常使用 yum install 命令来在线安装 Linux 系统的软件这种方式可以自动处理依赖性关系并且一次安装所有依赖的软体包但是经常会遇到从国外镜像下载速度慢无法下载的情况此时就需要把 yum 源改为国内的镜像6.2.3本示例基于 nginx 来演示直接执行 yum install nginx 发现提示没有可用 nginx 包这是因为本地没有 nginx 存储库的源6.2.3.1 安装 yum-utils安装 yum-utils , 安装过的可以不必重复安装sudo yum install yum-utils6.2.3.2 设置 yum 存储库安装 nginx 源创建 /etc/yum.repos.d/nginx.repo 文件并写入以下内容[nginx-stable]
namenginx stable repo
baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck1
enabled1
gpgkeyhttps://nginx.org/keys/nginx_signing.key
module_hotfixestrue[nginx-mainline]
namenginx mainline repo
baseurlhttp://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck1
enabled0
gpgkeyhttps://nginx.org/keys/nginx_signing.key
module_hotfixestrue也可以直接安装 nginx 源sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm查看 nginx 源是否配置成功yum search nginx若搜索到信息则添加成功npm info nginx若获取到信息则添加成功6.2.3.3 安装 nginx 并验证sudo yum install -y nginx注意通过 yum 安装的 nginx配置文件在/etc/nginx 目录下修改端口、配置代理之类的都在这里通过 yum 安装的 nginx安装完后无需配置环境变量可以直接使用nginx 相关命令验证是否安装成功6.2.3.4 启动 nginx 并设置开机运行sudo systemctl start nginx.servicesudo systemctl enable nginx.service启动成功后如果还是访问不到可以考虑防火墙是否关闭http://bbs.itying.com/topic/5bd5d4460e525017c449479a6.3 二进制解压安装本示例基于 Node.js 来演示6.3.1 下载打开 https://nodejs.org/en/ 官网按照图示进行下载会得到一个压缩包6.3.2 上传文件并解压使用 Xftp 将刚下载的 Node.js 压缩包上传到服务器比如这个目录 /home/node解压压缩包tar -xvf node-v14.17.0-linux-x64.tar.xz将解压出来的文件重命名也可以使用 Xftp 工具直接重命名mv node-v14.17.0-linux-x64 nodejs6.3.3 配置环境变量在刚解压的 node 目录的 bin 目录下执行 pwd 命令获取路径/home/node/nodejs/bin使用 vi 编辑 profile 文件vi /etc/profile添加环境变量export NODE_HOME/home/node/nodejs/binexport PATH$NODE_HOME:$PATH:qw保存执行下方命令使环境变量生效source /etc/profile验证配置是否生效node -vnpm -v6.4 源代码安装此种方式不推荐因为比较麻烦6.4.1 安装 Linux 中源代码编译软件yum install -y gcc make gcc-c openssl-deve检查是否安装成功rpm -qa | grep gccrpm -ql gcc6.4.2 编译安装 Linux 源代码基本步骤生成编译配置文件 - Makefile开始编译 - make或者 make -j4开始安装 - make install举个例子~~下载httpd-2.2.9.tar.gz 源代码解压并 cd 到对应目录生成编译配置文件输入命令注意路径调整 —— ./configure --prefix/usr/local/apache 开始编译输入命令 —— make 或者 make -j4后者速度更快开始安装输入命令 —— make install如果使用源代码安装 httpd则上面第三步的命令应该是./configure --prefix/usr/local/apache2/ --sysconfdir/usr/local/apache2/etc/ --with-included-apr --enable-dav
--enable-so --enable-deflateshared --enable-expiresshared
--enable-rewriteshared6.4.3 卸载源代码安装的软件分为两步结束当前进程、删除源代码结束进程pstree | grep httpdpkill httpd删除源代码cd /usr/local/rm -rf apache/ 直接删除源代码 7.防火墙相关操作Centos7 默认使用 firewalld该防火墙默认是启动状态开启防火墙之后有些服务就会访问不到因为服务相关端口被防火墙控制没有打开7.1 Nginx 启动后访问不到nginx 默认使用80端口安装完成后启动会发现使用IP直接访问不到这时就需要开放80端口查看 80 端口是否开启firewall-cmd --query-port80/tcp发现未开启开启 80 端口firewall-cmd --permanent --add-port80/tcp重启服务service firewalld restart重新访问7.2 使用 nginx 部署程序简单示例修改 /etc/nginx/conf.d 文件设置端口及部署文件的目录重新加载配置文件nginx -s reload执行命令后页面依然无法访问这是因为 防火墙 未开放 对应端口输入命令开启 8888端口并重新加载防火墙配置firewall-cmd --permanent --add-port8888/tcpservice firewalld restart在服务器路径下新建要部署的项目文件夹本示例为 pinxx本地打包生成静态资源上传服务器浏览器输入地址测试验证7.3 防火墙常用命令启动systemctl start firewalld关闭systemctl stop firewalld重启service firewalld restart查看 firewall 服务状态 systemctl status firewalld查看 firewall 的状态firewall-cmd --state开机禁用 systemctl disable firewalld开机启用 systemctl enable firewalld查看防火墙规则firewall-cmd --list-all更新防火墙规则 firewall-cmd --reload 修改 firewall-cmd 配置后必须重启查看所有打开的端口 firewall-cmd --zonepublic --list-ports查询端口是否开放示例8080端口firewall-cmd --query-port8080/tcp --permanent –permanent 永久生效没有此参数重启后失效开放指定端口示例8080端口firewall-cmd --permanent --add-port8080/tcp关闭指定端口示例8080端口firewall-cmd --permanent --remove-port8080/tcp7.4 关闭 SELinux 防火墙安全增强型 LinuxSecurity-Enhanced Linux简称 SELinux它是一个 Linux 内核模块也是 Linux 的一个安全子系统SELinux 由美国国家安全局开发2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块SELinux 的结构及配置非常复杂而且有大量概念性的东西要学精难度较大很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了阿里云、西部数码云服务器 安装的 Centos 默认已经关闭 SELinux了查看 SELinux 状态下面两个命令都行/usr/sbin/sestatus -vgetenforce SELinux status: enabled如果 SELinux status 参数为 enabled则为开启状态关闭 SELinuxsetenforce 0 —— 设置 SELinux 成为 permissive 模式setenforce 1 —— 设置 SELinux 成为 enforcing 模式修改/etc/selinux/config 文件 —— 将 SELINUXenforcing 改为 SELINUXdisabled8.内存、cpu、进程、端口、硬盘管理8.1 top 命令 / uptime 命令8.1.1 top 命令第一行 uptimetop - 15:31:47 up 9:30, 3 users, load average: 0.00, 0.02, 0.05依次对应15:31:47 —— 系统当前时间9:30 —— 系统到目前为止运行的时间3 users —— 当前登陆系统的用户数量load average 后面的三个数字 —— 距离现在一分钟五分钟十五分钟的负载情况第一行信息相当于输入命令 uptime8.1.2 top 命令第二行 TasksTasks: 133 total, 1 running, 132 sleeping, 0 stopped, 0 zombie依次对应tasks —— 表示任务进程133 total —— 表示现在有 133 个进程其中运行中的进程数为1 休眠挂起进程数为132 停止的进程数为 0僵尸进程数为 08.1.3 top 命令第三行 cpu%Cpu(s): 0.2 us, 0.4 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st依次对应us —— user 用户空间占用 cpu 的百分比sy —— system 内核空间占用 cpu 的百分比ni —— niced 改变过优先级的进程占用 cpu 的百分比空闲 cpu 百分比一般只需要关注这里wa —— IO wait IO 等待占用 cpu 的百分比hi —— Hardware IRQ 硬中断 占用 cpu 的百分比si —— software 软中断 占用 cpu 的百分比st —— 被 hypervisor 偷去的时间单独查看cpu还可以使用下方命令cat /proc/cpuinfo | grep name8.1.4 top 命令第四行 MemKiB Mem : 2897496 total, 1995628 free, 191852 used, 710016 buff/cache依次对应总内存2.76g空闲内存1995628/1024/10241.9g 已使用内存0.18g 缓存区内存0.67g缓冲区是从主内存中特地预留出的内存用来存放特定的一些信息例如从磁盘获取的文件表程序正在读取的内容等等单独查看内存还可以使用下方命令cat /proc/meminfo | grep Mem8.1.5 top 命令第七行 进程监控PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND依次对应PID — 进程 idUSER — 进程所有者PR — 进程优先级NI — nice 值。负值表示高优先级正值表示低优先级VIRT — 进程使用的虚拟内存总量单位 kb。VIRTSWAPRESRES — 进程使用的、未被换出的物理内存大小单位 kb。RESCODEDATASHR — 共享内存大小单位 kbS — 进程状态。D不可中断的睡眠状态 R运行 S睡眠 T跟踪/停止 Z僵尸进程%CPU — 上次更新到现在的 CPU 时间占用百分比%MEM — 进程使用的物理内存百分比TIME — 进程使用的 CPU 时间总计单位 1/100 秒COMMAND — 进程名称命令名/命令行8.2 进程管理8.2.1 查看进程pstree 查看进程树pstree -ap 显示所有信息pstree | grep httpdpstree -ap | grep httpdps -aups -au | grep httpdps -auxps 中 aux 的含义显示现行终端机下的所有程序包括其他用户的程序a以用户为主的格式来显示程序状况 x显示所有程序不以终端机来区分u8.2.2 杀死进程pkill 进程名字pkill httpdkill 进程号kill 2245kill -9 进程号 强制杀死kill -9 1234kill执行 kill 命令系统会发送一个 SIGTERM 信号给对应的程序。当程序接收到该 signal 信号后将会发生以下事情程序立刻停止当程序释放相应资源后再停止程序可能仍然继续运行大部分程序接收到 SIGTERM 信号后会先释放自己的资源然后再停止。但是也有程序可能接收信号后做一些其他的事情如果程序正在等待 IO可能就不会立马做出响应我在使用 wkhtmltopdf 转 pdf 的项目中遇到这现象也就是说SIGTERM 多半是会被阻塞的kill -9执行 kill -9 命令系统给对应程序发送的信号是 SIGKILL即 exitexit 信号不会被系统阻塞所以 kill -9能顺利杀掉进程8.3 查看端口netstat -tunpl |grep httpd-t 或--tcp 显示 TCP 传输协议的连线状况-u 或--udp 显示 UDP 传输协议的连线状况-n 或--numeric 直接使用 IP 地址而不通过域名服务器-p 或--programs 显示正在使用 Socket 的程序识别码和程序名称-l 或--listening 显示监控中的服务器的 Socket关闭防火墙Firewalld 关闭systemctl stop firewalldSELinux 关闭setenforce 0http://bbs.itying.com/topic/5bd5d4460e525017c449479a http://bbs.itying.com/topic/5bd7cb31dee9090efc61eccf8.4 查看硬盘信息列出文件系统的整体磁盘空间使用情况df 以易读的方式显示总共多少 g 用了多少 gdf -h 查看该文件夹所在磁盘的使用情况df /home8.5 查看目录及文件大小8.5.1 查看当前目录大小du -sh [目录名]不写目录名时为当前目录8.5.2 查看指定文件夹下的所有文件大小包含子文件夹du -h [目录名]不写目录名时为当前目录8.6 查看系统内核版本cat /proc/version9.使用 systemctl 管理服务9.1 什么是 systemclt systemctl是系统服务管理器命令定时执行某项操作systemctl 是 service 和 chkconfig 这两个命令的整合在 CentOS 7 就开始被使用了9.2 systemclt 管理服务常用命令启动服务systemctl start httpd关闭服务systemctl stop httpd重启服务systemctl restart httpd查看一个服务的状态systemctl status httpd查看一个服务是否在运行systemctl is-active httpd查看当前已经运行的服务systemctl list-units -t service 列出所有服务注意顺序 systemctl list-units -at service 列出所有自启动服务systemctl list-unit-files|grep enabledsystemctl list-unit-files|grep disabledsystemctl list-unit-files|grep disabled | grep httpd设置开机自启动 systemctl enable httpd停止开机自启动 systemctl disable httpd使指定服务重新加载配置systemctl reload httpd9.3 定时执行某项操作要实现定时执行某项操作就需要使用 Linux 的系统定时任务服务该服务会自动启动 crond 进程crond 进程会定期检查是否有要执行的任务如果有要执行的任务则自动执行该任务9.3.1 实现原理打开 /etc/crontab文件可以看到以下内容增加定时任务格式 * * * * * user-name command(也可以是Shell 脚本)特殊符号*星号代表任何时间。比如第一个 * 就代表每分钟都执行一次,逗号代表不连续的时间。比如0 81216***命令就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分执行一次命令-中杠代表连续的时间范围。比如0 5 ** 1-6命令代表在周一到周六的凌晨 5 点 0分执行命令。/正斜线代表每隔多久执行一次。比如*/10****命令代表每隔 10 分钟就执行一次命令。重启服务systemctl restart crond.service9.3.2 实现 GitLab 凌晨2点定时备份打开 /etc/crontab文件添加以下内容00 02 * * * root sh /srv/gitlab/config/gitlab_backup.sh在该目录/srv/gitlab/config下创建备份脚本 gitlab_backup.sh ,内容如下# /bin/bash
docker exec -t gitlab2021 gitlab-backup create SKIPartifacts虽然可以将命令直接写在 crontab文件中但是更推荐写在 sh 文件中这样方便后期修改以及备份迁移重启服务systemctl restart crond.service9.3.3 定时相关命令9.3.3.1 启动定时任务# centos7 及以上systemctl start crond.service# 其他Linuxservice crond start9.3.3.2 查看服务启动状态# centos7 及以上systemctl status crond.service# 其他Linuxservice crond status9.3.3.3 停止服务状态# centos7 及以上systemctl stop crond.service# 其他Linuxservice crond stop9.3.3.4 重新启动服务# centos7 及以上systemctl restart crond.service# 其他Linuxservice crond restart9.3.3.5 重新加载# centos7 及以上systemctl reload crond.service# 其他Linuxservice crond reload10.系统开关机10.1 重启立即重启方式1reboot立即重启方式2shutdown -r now10 分钟后重启shutdown -r 1010.2 关机立即关机shutdown -h now10 分钟后关机shutdown -h 10