linux


Linux是一种自由和开放源码的系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可以安装在各种计算机硬件设备中,如手机、平板电脑、路由器、台式计算机等。

Linux

Linux系统安装

虚拟机安装

参考教程

虚拟机克隆

  • 关闭当前系统
  • 使用虚拟机完整克隆系统
  • 进入新系统修改相关配置
    • 修改ip地址
    • 修改主机名:hostnamectl set-hostname <新的主机名>
    • 修改ip地址和主机名映射

Linux目录结构

Linux根目录为/,可以使用cd /进入根目录,可以使用pwd查看当前所在目录位置。

根目录 /的结构为:

Linux目录结构
  • bin:binaries,存放二进制可执行文件
  • sbin:super user binaries,存放二进制可执行文件,只有root超级用户可以访问
  • etc:etcetera,存放系统配置文件
  • usr:unix shared resources,用于存放共享的系统资源
  • home:存放用户文件的根目录
  • root:超级用户目录
  • dev:devices,用于存放设备文件
  • lib:library,存放跟文件系统中的程序运行所需要的共享库以及内核模块
  • mnt:mount,系统管理员安装临时文件系统的安装点
  • boot:存放用于系统引导时使用的各种文件
  • tmp:temporary,用于存放各种临时文件
  • var:variable,用于存放运行时需要改变数据的文件

Linux系统中/路径下使用命令查看内容:

使用ll查看内容

Linux配置

网络IP设置

教程

centOS7中使用ens33代替了eth0文件,即文件/etc/sysconfig/network-scripts/ifcfg-ens33

使用时,如果需要,可以将ens33文件重命名为eth0后,更改配置,重新启动网络。

  • 修改主机名:vi /etc/sysconfig/network

    #/etc/sysconfig/network
    NETWORKING=yes        #网络是否工作,不可以为no
    HOSTNAME=shizhan    #主机名
  • 修改ip地址和主机名的映射关系:vi /etc/hosts

    /etc/hosts
    127.0.0.1 localhost  ...
    192.168.2.2 CentOS1

设置IP为静态地址

  1. 查看虚拟机提供给系统的网段

    虚拟机网段
  2. 修改IP地址,使用管理员权限执行命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33

    #ifcfg-ens33
    TYPE=Ethernet
    BOOTPROTO=static    #static为静态ip,dhcp为自动获取动态ip
    DEFROUTE=yes
    
    NAME=ens33            #网卡设备名,要和文件名一致,如修改成eth0,则此处也要一致
    
    DEVICE=ens33        #网卡设备名,要和文件名一致,如修改成eth0,则此处也要一致
    ONBOOT=yes            #yes=网卡随网络服务启动  系统默认不启动,这里一定要设置成启动
    
    #默认为dhcp,修改为static时需要新增下面部分内容
    DNS1=114.114.114.114    #DNS服务器ip地址
    IPADDR=192.168.2.10        #网卡为当前系统配置的静态ip地址
    NETMASK=255.255.255.0    #子网掩码
    GATEWAY=192.168.2.1        #网关
  3. 重启网络服务:service network restart 或者 systemtcl restart network

  4. 如果需要,则关闭系统防火墙:systemctl stop firewalld

  5. 查看修改后的ip地址:ifconfig 或者 ip addr show

    image-20201218092804966

防火墙配置

CentOS7默认采用的是firewalld管理netfilter子系统,底层调用的仍然是iptables命令。

firewalld:dynamic firewall daemon,支持ipv4和ipv6.

  • firewalld可以动态修改单条规则,并不需要像iptables那样,在修改了规则后必须全部刷新才可以生效。
  • firewalld在使用上要比iptables更人性化。
Linux防火墙结构

firewalld配置方式:

  • firewall-config:GUI工具
  • firewall-cmd:命令行工具
    • firewall-cmd –version:查看版本号
    • firewall-cmd –state:查看防火墙状态
    • firewall-cmd –list-all:查看全部信息
    • firewall-cmd –list-ports:只看端口信息
    • 等其他
  • 直接编辑xml文件,编辑后需要reload才会生效

配置文件存放位置:firewalld的配置文件以xml文件为主(主配置文件为firewalld.conf),有两个位置

  • /etc/firewalld/ :存放修改过的配置,优先查找,找不到才去查找默认的配置
  • /usr/lib/firewalld/:默认的配置
  • 修改配置的时候只需要将/usr/lib/firewalld/复制到/etc/firewalld/ 进行修改即可。

防火墙相关命令:

  • systemctl status firewalld:查看防火墙状态
  • systemctl stop firewalld:临时关闭防火墙
  • systemctl disable firewalld:禁止防火墙开机自启动
  • service firewalld start:开启防火墙
  • service firewalld restart:重启防火墙
  • service firewalld stop:关闭防火墙
  • 开端口命令:firewall-cmd –zone=public –add-port=8080/tcp –permanent
    • –zone:作用域
    • –add-port=8080/tcp:添加端口,格式即 端口/协议
    • –permanent:永久生效,不加此参数重启后失效

Linux命令

命令格式:命令 -选项 参数

如: ls -a /usr => 显示/usr目录下所有文件信息

关机/重启命令

  • shutdown:系统关机
    • -r:关机后立即重启
    • -h:halt,关机后不重新启动,关闭电源
  • reboot:重新启动,类似 shutdown -r

常用命令

  • 内部命令:属于Shell解析器的一部分
    • pwd:print working directory,显示当前工作目录
    • cd:change directory,切换目录
    • help:帮助,后跟命令,可以查看该命令的详细描述,如 help cd
  • 外部命令:独立于Shell解析器之外的文件程序
    • ls:list,显示文件和目录列表,可以指定选项和参数,不指定默认所在目录
      • -l:long,输入文件和目录的详细信息,和 ll 命令相同
      • -a:all,所有文件和目录,包括隐藏文件和特殊目录
      • -t:time
    • mkdir:make directory,创建目录
    • cp:copy,复制文件或目录
    • man:manual,查看帮助文档,后跟命令,如 man ls
  • 快捷键:
    • ctrl + c:停止当前进程
    • ctrl + r:查看命令历史
    • ctrl + l:清屏,与clear命令作用相同
  • 查看本机ip地址
    • ifconfig
    • ip address

系统状态

  • top:显示当前系统中耗费资源最多的进程,动态列表
  • ps:显示瞬间的进程状态
    • -e/-A:显示所有进程,环境变量
    • -f:全格式
    • -a:显示所有用户的所有进程(包括其他用户)
    • -u:按用户名和启动时间的顺序来显示进程
    • -x:显示无控制终端的进程
  • kill:杀死一个进程
    • kill -9 pid :杀死指定pid的进程
  • df:显示文件系统磁盘空间的使用情况
  • ifconfig:网卡网络配置详解
  • ping:测试网络的连通性(后跟ip或域名)
  • netstat:显示网络状态信息
    • -a:显示所有的连接和监听端口
    • -t:tcp,仅显示tcp相关选项
    • -u:udp,仅显示udp相关选项
    • -n:拒绝显示别名,能显示数字的全部转化成数字
    • -p:显示建立相关链接的程序名
  • free:显示当前内存和交换空间的使用情况
  • du:显示指定文件(目录)已使用的磁盘空间的总和
    • -h:human-readable,文件大小以K,M,G为单位显示
    • -s:summarize,只显示各档案大小的总和

操作文件或目录

  • mkdir:make directory,创建目录
    • -p:parents,创建指定目录时,如果父目录不存在则会先生父目录
  • touch:创建空文件
  • cp:copy,复制文件或目录
    • -r:recursive,递归处理,将指定目录下的文件与子目录一块拷贝
  • mv:move,移动文件或目录,文件或目录改名
  • echo "abc" > file3.txt :将字符串内容输出到file3文件中,没有则先创建文件
    • > :代表覆盖内容
    • >>:代表在文件中追加内容
  • less、more、cat,都是查看输出文件内容的命令,可以配合 > 命令输出内容到新文件中
    1. cat 1.txt > file4.txt
    2. less 1.txt > file5.txt
    3. more 1.txt > file6.txt
  • rm:remove,删除文件
    • -i:删除前逐一询问确认
    • -r:recursive,同时删除该目录下的所有文件
    • -f:force,强制删除文件或目录(递归删除)
  • rmdir:remove directory,删除空目录
  • cat:catenate,显示文本内容
  • more、less:分页显示文本文件内容
  • head、tail:查看文本中开头或结尾部分的内容
    • head -n 5 a.log:查看a.log文件的前5行
    • tail -F b.log:follow,循环读取文件内容
  • wc:word count,统计文本的行数、字数、字符数
    • -m:统计文本字符数
    • -w:统计文本字数
    • -l:统计文本行数
  • find:在文件系统中查找指定的文件,find/etc/ -name "aaa":在/etc/目录下查找名为aaa的文件
  • grep:在指定的文本文件中查找指定的字符串

压缩/解压命令

  • gzip [参数项] 文件名:压缩/解压文件或目录,压缩文件后缀名为gz
    • -d:decompress,将压缩文件解压
    • -l:list,显示压缩文件的大小,未压缩文件的大小,压缩比
    • -v:verbose,显示文件名和压缩比
    • -num:用指定的数字num来调整压缩的速度,如:
      • -1或–fase表示最快压缩方法,低压缩比
      • -9或–best表示最慢压缩方法,高压缩比
      • 系统缺省值(默认)为6
  • bzip2 [参数项] 文件名:压缩/解压文件或目录,压缩文件后缀为bz2
    • -z:compress,压缩的参数
    • -d:decompress,解压缩的参数
    • -c:将压缩过程产生的数据输出到屏幕上
    • -num:同gzip中数字功能
  • tar [参数项] 文件名:文件、目录打包/解包
    • -c:create,建立一个压缩文件的参数指令
    • -x:extract,解开一个压缩文件的参数指令
    • -z:是否需要用gzip压缩
    • -j:是否使用bzip2压缩
    • -v:verbose,压缩过程中显示文件
    • -f:使用档名,在f之后要立即接档名(file)

Vim编辑器

Vim工作模式

vim工作模式

定位命令

  • :set nu:显示行号
  • :set nonu:取消行号
  • gg:小写,定位到文本的第一行
  • G:大写,定位到文本的最后一行
  • :n:定位到文本的第n行

插入命令

  • i:小写,在光标插入内容
  • I:大写,在光标当前行开始处插入内容
  • a:小写,在光标插入内容
  • A:大写,在光标当前行末尾处插入内容
  • o:小写,在光标当前行的下一行插入新行
  • O:大写,在光标当前行的上一行插入新行

替换和取消

  • yy:复制当前行;nyy:复制n行
  • p:粘贴
  • u:undo,取消上一步操作
  • Ctrl + r:redo,返回到undo之前,即撤销撤销
  • r:替换光标所在处的字符
  • R:从光标处开始替换,按Esc后结束

删除命令

  • x:删除光标所在字符
  • nx:删除光标所在处后的n个字符
  • dd:删除光标所在行
  • D:删除光标所在处到行尾的所有内容
  • ndd:删除光标所在行开始的n行
  • dG:删除光标所在行到末尾行的所有内容
  • :5,7d:删除指定范围的行,此处是删除第5、7行

相关快捷键

  • Shift + zz:保存退出,与:wq命令作用相同
  • v:进入字符可视模式,选择单个字符,按y复制,按p粘贴
  • V或Shift + v:进入行可视模式,选择行,按y复制,按p粘贴
  • Ctrl + v:进入块可视模式,选择块,按y复制,按p粘贴

Linux用户和权限

Linux操作系统是一个多用户操作系统,允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,任务和工作环境,使得每个用户工作都不受干扰。

用户类别

  • 超级用户:root,UID=0
  • 伪用户:UID在1-499
    • 伪用户不能登录系统,且没有宿主目录
    • 如系统和服务相关的:bin、daemon、shutdown等
    • 进程相关的:mail、news、games等
  • 普通用户:UID在500-60000
  • 普通用户切换至root用户:$ su -> 输入密码就可切换为root用户
  • root用户切换至普通用户:$ su <用户名> 即可切换为指定用户

配置文件

  • /etc/passwd:保存用户信息的文件

    使用cat /etc/passwd查看文件,内容格式为:

    用户文件内容
    • root - 用户名:用户登录系统的用户名
    • x - 密码:密码位
    • 0 - UID:用户标识号
    • 0 - GID:默认组标识号
    • root - 描述信息:存放用户的描述信息
    • /root - 宿主目录:用户登录系统的默认目录,默认是在/home/下
    • /bin/bash - 命令解析器:用户使用的Shell,默认是bash
  • /etc/shadow:保存密码的文件

    使用命令cat /etc/shadow查看,内容格式如图所示,依次表示含义为:

    用户密码文件内容
    • 用户名:登录系统的用户名
    • 密码:加密密码
    • 最后一次修改时间:最后一次修改密码距离现今的天数
    • 最小时间间隔:两次修改密码间隔最小时间
    • 最大时间间隔:~
    • 警告时间
    • 账号限制时间
    • 失效时间
    • 标志
  • /etc/group:保存用户组的文件

    每个用户至少属于一个组;每个组可以包含多个用户;同一个组的用户拥有组的权限;

    用户组文件内容
    • 组名:
    • 组密码:密码位,一般不使用
    • GID:组标识号
    • 组内用户列表:属于改组的用户的列表
  • /etc/gshadow:保存用户组密码的文件

  • /etc/default/useradd:用户配置文件

操作用户命令

  • 查看用户信息:
    • 查看当前登录用户信息::w/who/whoami
    • 查看历史登录用户信息:last
    • 查看系统所有用户信息:
      • 用户信息保存在/etc/passwd文件下,查看用户完整信息:cat /etc/passwd
        • 可以使用cut命令截取只显示用户名称:cut -d: -f1 /etc/passwd
        • -d:,表示定义以:为截取分隔符
        • -f1,表示截取显示信息的第一列域信息
      • 还可以使用getent passwd命令来查看完成用户信息,使用cut截取
      • 可以使用compgen -u命令查看所有用户名
  • useradd添加用户
    • -u:uid,指定用户标识ID
    • -g:gid,指定所属的组名ID
    • -G:Groups,指定多个组,使用逗号, 间隔
    • -c:comment,用户描述
    • -e:expire date,失效时间
    • 例如创建用户du的命令:useradd -u 888 -g users -G sys,root -c "hr du" du passwd du
  • 修改指定用户的密码:切换用户至root,使用passwd [username] 为用户设置新密码
  • usermod:user modify,修改用户
    • -l:修改用户名,如将用户a名称改为b的命令是:usermod -l a b
    • -g:添加组,为用户tom添加sys组:usermod -g sys tom
    • -G:添加多个组,使用逗号间隔
    • -L:Lock,锁定账户密码
    • -U:Unlock,解锁账户密码
  • userdel:user delete,删除用户
    • -r:remove,删除账号同时删除账号相关目录

操作组命令

  • groups:显示用户所属组
  • groupadd:添加组
    • -g:指定组gid
  • groupmod:修改组
    • -n:new group,修改组名
  • groupdel:删除组

权限操作命令

三种基本权限:r(read)读权限;w(write)写权限;x(execute)执行权限;

文件权限信息
  • 第1位:表示文件类型,d-目录,-普通文件,I-链接文件
  • 第2-4位:所属用户权限,用u(user)表示
  • 第5-7位:所属组权限,用g(group)表示
  • 第8-10位:其他用户权限,用o(other)表示
  • 2-10位标识所有的权限,用a(all)表示
  • -rwxrw-r--:表示一个普通文件,所属用户有读/写/执行权限,同组用户有读/写权限,其他组只有读权限

更改文件权限操作:

  • chmod:change mode,修改文件权限
    • -R:Receusive,表示其下的文件和子目录做相同的权限操作
    • 如:chmod u+x a.txt :为a.txt文件的所属用户添加执行权限
  • 使用数字来表示权限:r=4,w=2,x=1,-=0
    • 如:chmod 750 b.txt:表示文件b.txt,所属用户有读/写/执行权限,所属组有读/执行/权限,其他无

Linux中安装软件

RPM

RedHat Package Manager,RedHat软件包管理工具

相关参数:

  • i:install,安装应用程序
  • e:erase,卸载应用程序
  • vh:verbose hash,显示安装进度
  • U:update,升级软件包
  • qa:query all,显示所有已安装软件包
  • 结合grep命令使用

YUM

Yellow dog Updater,Modified 是一个在Fedora和RedHat以及SUSE、CentOS中的Shell前端软件包管理器。

  • yum instll gcc-c++

  • yum remove gcc-c++

  • yum update gcc-c++

  • yum 安装软件时出现 is this ok [y/d/n]:

    • y:下载安装
    • n:不安装
    • d:只下载不安装

安装JDK

  1. JDK下载

  2. jdk-8u181-linux-x64.tar.gz传至Linux系统中

    • 使用FTP连接Linux进行文件传输,前提是Linux系统要安装FTP服务,且开启FTP的21端口
    • 在XShell中使用命令传输文件,使用 rz 命令,实现windows项Linux传输文件,选择单个文件
    • 使用sz命令,实现从Linux向windows传输文件
  3. 解压缩,命令 tar -zxvf jdk-8u181-linux-x64.tar.gz /usr/local 解压缩到/usr/local

  4. 配置环境变量

    1. 使用命令vi /etc/profile 编辑系统环境变量设置

    2. 最后追加内容:

      export JAVA_HOME=/usr/local/jdk1.7.0_45
      export PATH=$PATH:$JAVA_HOME/bin
    3. 刷新环境变量 source /etc/profile

  5. 测试JDK环境,命令:java -version ,显示当前版本号即表示成功

    image-20201219204628690

安装Tomcat

  1. 上传apache-tomcat-7.0.68.tar.gz到Linux系统

  2. 解压缩文件到指定目录,tar -zxvf apache-tomcat-7.0.68.tar.gz -C /usr/local

  3. 启动tomcat,进入tomcat/bin目录下,执行启动文件./startup.sh

    启动tomcat
  4. 显示启动后使用命令查看tomcat是否已经启动成功:

    1. netstat -nltp:查看系统当前监听的端口情况

    2. 8080端口开启,表示启动成功

      tomcat运行成功
    3. 此时访问ip:8080可以看到如下,则表示tomcat安装成功。

      image-20201220101613257
  5. Tomcat启动时常见问题

    1. 如果8080端口没有监听,说明tomcat启动失败

      tomcat启动失败
    2. 若tomcat启动失败,查看tomcat日志

      cd tomcat/logs
      cat catalina.out    #查看日志文件
    3. 日志文件内容如下:表示启动时tomcat没有找到指定的Java环境

      tomcat启动失败日志信息
    4. 检查配置环境变量时JDK路径错误,修改后重新启动tomcat,查看端口情况如下:启动成功

      tomcat运行成功
    5. 如果tomcat已经启动,外部访问仍然失败,则要检查防火墙是否关闭或者是否允许8080端口通行。

安装MySQL

yum安装是最简单的,使用压缩包安装失败,因此换用了yum方式。 参考教程

  1. 查看是否使用yum安装过mysql,使用命令:rpm -qa | grep -i mysql

    • 如下图显示已经安装的相关模块,则要先卸载,再重新安装

      image-20201221195202378
      • yum -y remove <全名称>:卸载相关模块
      • 如果上述命令卸载不掉,则使用命令: rpm -er <全名称>
    • 如果执行后无任何变化,则表示没有安装,可以正常进行

  2. 使用yum命令下载并安装mysql相关服务

    # cd /usr/local        #进入/usr/local文件夹下
    # wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm #下载.rpm文件
    # rpm -ivh mysql57-community-release-el7-8.noarch.rpm #
    # yum -y install mysql-server    #安装mysql服务
    #也可以指定安装目录
    # yum --install root=/usr/local/mysql --releaserver=/ -y install mysql-server
  3. 等待所有服务模块安装完成

    image-20201221203743558
  4. mysql相关配置文件路径,并配置mysql的配置文件

    • 配置文件:/etc/my.cnf

    • 日志文件:/var/log/mysqld.log

    • 服务启动脚本:/usr/lib/systemd/system/mysqld.service

    • socket文件:/var/run/mysqld/mysqld.pid

    • 添加mysl配置内容:

      [mysqld]
      datadir=/var/lib/mysql
      socket=/var/lib/mysql/mysql.sock
      server_id = 1
      expire_logs_days = 3
      
      # Disabling symbolic-links is recommended to prevent assorted security risks
      symbolic-links=0
      
      log-error=/var/log/mysqld.log
      pid-file=/var/run/mysqld/mysqld.pid
  5. 启动mysql服务,相关命令:

    • systemctl start mysqld.service:开启mysql服务
    • system status mysqld.service:查看mysql服务状态,
      • -l:查看详细状态信息
    • systemctl stop mysql.service:停止mysql服务
    • systemctl restart mysql.service:重启mysql服务
  6. 设置mysql开机自启动

    • systemctl enable mysqld
    • systemctl daemon-reload
  7. 修改mysql密码

    安装mysql后,会在相应的日志文件中产生一个随机密码,可以使用命令查看

    • cat /var/log/mysqld.log :查看日志文件全部内容
    • grep “password” /var/log/mysqld.log :正则匹配日志文件中的password关键字

    使用命令登录mysql:mysql -u root -p:命令回车后输入日志中密码,登录mysql

    • 登录成功,修改密码:ALTER USER 'root'@'localhost' IDENTIFIED BY 'rOOT@2020';即root账户的密码修改为Root@2020

    • 随机密码登录失败时,需要配置跳过认证阶段,登录后使用sql语句更新密码

      1. 修改配置文件:vi /etc/my.cnf ,添加 skip-grant-tables 保存并退出,表示登录不验证

      2. 重启mysql服务,使用mysql直接登录mysql客户端

      3. 使用sql语句修改登录密码

        #update user set password=password("Root@2020") where user="root";
        #mysql 5.7的数据库没有了password字段 用的是authentication_string字段
        use mysql;
        update mysql.user set authentication_string=password('Root@2020') where user='root' ;
        flush privileges;    #
    • 修改密码策略(默认密码策略要求密码是大小写字母+数字+特殊字符的组合且最少8位)

  8. 设置允许远程登录

  9. 设置允许其他端,navicate远程连接

    mysql -u root -p Root@2020    #连接客户端
    mysql> use mysql;
    mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Root@2020';
    #如果上句运行失败,则使用下面命令
    #mysql> grant all on *.* to root@"%" identified by "Root@2020";
    mysql> flush privileges;

安装使用Redis

安装步骤: 安装教程

  1. 如果电脑中没有安装过gcc依赖,则要先安装才行(否则编译时报错)

    $ yum -y install gcc

  2. 可以直接使用命令安装,但是安装的版本不能指定,一般就是比较低的版本

    # yum install redis

  3. 使用命令下载文件后进行安装 进入到 usr/local 文件夹中下载

    # wget http://download.redis.io/releases/redis-5.0.4.tar.gz

  4. 解压压缩包 # tar zxvf redis-5.0.4.tar.gz

  5. 解压后进入到 redis-5.0.4 目录下,进行编译

    1. 先编译库 # make MALLOC=libc
    2. 再编译资源(安装) # cd src && make install
  6. 编译安装完成,可以启动redis服务了

  7. 为了使用redis更加方便,需要对redis进行一定的配置,redis-5.0.4下的redis.conf文件

  8. 将配置文件复制到etc文件夹下 cp redis.conf /etc ,然后进行更改(也可更改后复制)

    # vi redis.conf etc是系统配置文件存放的目录,方便配置

    1. 允许其他ip访问 :将 bind 127.0.0.1 注释掉,此处限制了访问redis的地址
    2. 解除安全保护机制:修改 protected-mode yesprotected-mode no
    3. 修改redis启动为守护进程:修改 daemonize nodaemonize yes
  9. 启动修改后redis服务 redis-server /etc/redis.conf 👍

    image-20201101215817433
  10. 服务启动后,可以使用命令启动客户端进行测试 redis-cli

    1. 模拟客户端发起通信 redis-cli

    2. 如果不成功,要退出后重新进行 exit

      image-20201101215939224
  11. 设置redis启动服务脚本(使用systemd管理redis)

    1. /usr/lib/systemd/system 目录下新建文件 redis.service ,并添加内容如下:

      [Unit]
      Decription=Redis 6379
      After=syslog.target network.target
      [Service]
      Type=forking
      PrivateTmp=yes
      Restart=always
      ExecStart=/usr/local/bin/redis-server /etc/redis.conf
      ExecStop=/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 -a jcon shutdown
      User=root
      Group=root
      LimitCORE=infinity
      LimitNOFILE=100000
      LimitNPROC=100000
      [Install]
      WantedBy=multi-user.target
    2. 设置完毕后,可以使用系统命令开启关闭redis

3. 好像没有成功,等等再试
  1. 设置redis开机自启动

    1. 复制一份 utils/redis_init_script/etc/init.d/

    2. 修改 redis_init_script 文件,指定具体的启动文件

      image-20201102094652970
    3. 设置自启动命令 # chkconfig redis_init_script on

    4. 如果关闭自启动,将on换成off

  2. 修改Redis的密码

    image-20201102094737334
  3. redis安装过程常见错误

安装Nginx

参考教程–安装成功!

  1. 查看Linux distribution版本号:cat /etc/redhat-release
  2. nginx不在默认的yum源中,需要将nginx加入到yum中 rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    • 或者:sudo yum -y install epel-release添加Nginx存储库
  3. 查看nginx是否存在:yum repolist
  4. 在yum中安装nginx:yum install nginx
  5. 安装完成测试本地访问:curl -i localhost返回响应信息
  6. 使用外网访问(设置防火墙)
    • 允许http通信:sudo fireawall-cmd --permanent --zone=public --add-service=http
    • 语序https通信:sudo fireawall-cmd --permanent --zone=public --add-service=https
    • 重新加载防火墙配置:sudo firewall-cmd --reload

Nginx 的相关操作命令:

  • 查看版本信息:nginx -V

  • 启动 Nginx 服务:systemctl start nginx

  • 停止 Nginx 服务:systemctl stop nginx

  • 重启 Nginx 服务:systemctl restart nginx

  • 重新加载 Nginx 配置文件,以优雅的方式重启:Nginx systemctl reload nginx

  • 设置开机自启动:systemctl enable nginx

  • 停止开机自启动systemctl disable nginx

  • 查看nginx的状态及进程、端口

    • 1、systemctl status nginx.service (nginx服务状态)
    • 2、netstat -antp | grep : (查看所有端口的占用情况)
    • 3、netstat -antp | grep :80 (查看80端口占用)
    • 4、ps aux | grep nginx (查看nginx进程运行状态)
    • 5、ps -ef | grep nginx (查看Nginx运行端口号和安装位置)
  • 杀掉进程

    • 1、killall -9 nginx (杀死所有nginx相关进程)
    • 2、kill -9 pid1 and kill -9 pid2 (杀掉两个制定pid的进程)

nginx配置文件路径

  1. 主配置文件:/etc/nginx/nginx.conf
  2. 子配置文件:/etc/nginx/conf.d/default.conf
server {
    listen       80;    //要监听的端口,即访问时 url:port
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;    #日志

    #文件上传大小限制
    client_max_body_size    1000m;

    #静态资源文件
    #location / {
    #    root   /usr/share/nginx/html;
    #    index  index.html index.htm;
    #}

    #此处修改针对不同请求url分发到不同服务地址
    location ~ /eduservice/{
        proxy_pass http://localhost;
    }
    #对象存储
    location ~ /eduoss/{
        proxy_pass http://localhost;
    }
    #视频点播资源
    location ~ /eduvod/{
        proxy_pass http://localhost;
    }

    #error_page  404              /404.html;

卸载Nginx

  • 停止Nginx服务:systemctl stop nginx

  • 删除Nginx自动启动:systemctl disable nginx

  • 删除Nginx相关源文件

    rm -rf /etc/nginx/
    rm -rf /etc/init.d/nginx
    rm -rf /usr/sbin/nginx
    apt-get remove nginx*
  • 移除yum中的Nginx模块:yum remove nginx

安装Git

使用yum安装

  1. 使用yum命令安装git:yum -y install git
  2. 安装完成后,使用命令查看版本信息:git --version
  3. 安装完成后的git路径在 usr/libexec/git-core
  4. 此种方式安装的git版本比较早,不是最新版。

下载软件包本地安装

  1. 在github上找到git的最新版本,下载tar.gz包,地址:https://github.com/git/git/releases
  2. 下载最新版本的tar.gz包至本地,并使用工具上传到linux服务器中
  3. 使用命令解压压缩包:tar -zxvf git-2.22.0.tar.gz
  4. 进入解压后的文件夹:cd git-2.22.0.tar.gz
  5. 解压后拿到源码信息,就要对源码进行编译,首先安装编译需要的依赖:yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
  6. 安装依赖时会自动使用yum安装git,可使用命令卸载旧版本:yum -y remove git
  7. 编译git源码:make prefix=/usr/local/git all
  8. 安装git至指定路径:make prefix=/usr/local/git install
  9. 配置环境变量:vi /etc/profile
    • 在配置文件底部添加内容:export PATH=$PATH:/usr/local/git/bin
  10. 刷新环境变量:source /etc/profile
  11. 查看git是否完成安装:git --version

安装Docker

Linux常见问题

Ubuntu系统远程连接

实验室服务器系统

ubuntu修改登录密码

du:123456

root:root

win本地使用Xshell连接远程Linux系统时,连接失败。如果本地对linux可以ping通,远程ping本地不通,则应该是:(解决后连接成功)

image-20201120122929012

Linux虚拟机

执行sudo su命令时提示 “用户不在sudoers文件中,此事将被报告。”

问题:使用shone切换至管理员权限时,sudo su命令提示 shone用户不在sudoers文件中,此事将被报告。

  • sudo :后跟命令,当前用户以root身份执行本身没有权限的操作,需要验证当前用户密码
  • sudo su:使用sudo 给su命令提权,而su命令需要执行该命令的用户在sudoers中有权限
  • su:不跟用户的su命令就代表切换至root账户,即su root(默认缺省为root)
  • su root:切换至root用户,验证root密码,不改变所在目录
  • su - root:切换至root用户,并进入到root用户对应目录下
  • su shone:切换至shone用户

原因:并不是所有的用户都可以执行sudo命令,配置文件/etc/sudoers中记录有权限执行sudo的用户。我们可以对配置文件进行编辑,添加当前用户的权限,配置完成后再次使用sudo命令成功执行。而sudoers文件是root用户只读文件,修改后需要使用命令wq!强制保存。

解决办法:

  1. 使用命令su root切换至root用户,需要验证root用户密码

  2. 查看/etc/sudoers文件内容是否包含当前用户权限

  3. vim /etc/sudoers编辑文件增加shone用户的sudo权限

    ## root用户默认存在,可以添加其他用户权限
    root     ALL=(ALL:ALL) ALL
    shone    ALL=(ALL:ALL) ALL
  4. 注意/etc/sudoers文件的权限是440只读文件,编辑文件内容需增加写入权限或强制修改保存

    • chmod u+w /etc/sudoers,增加写入权限
    • chmod 740 /etc/sudoers,增加root用户的全部权限(4+2+1)
    • 或者编辑完成后使用命令:wq!强制保存修改
  5. su shone切换至普通用户,测试权限是否增加成功


文章作者: shone
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 shone !
评论
 上一篇
Hexo使用Next主题的优化策略 Hexo使用Next主题的优化策略
Next主题进阶使用学习。 1.设置头像边框为圆形和旋转特效自己设置: 系统自带:next已经内置了可以调节的功能,只需要将开关打开即可 2.本地搜索根目录下使用git命令:npm install hexo-generato
2021-03-19
下一篇 
Hexo使用Next主题 Hexo使用Next主题
Next是一款符合程序员审美的主题,Hexo中切换Next主题的方式非常简单,只需要将主题文件拷贝至根目录下的themes文件夹中,然后修改_config.yml文件中的theme字段即可。 Next主题主题下载Git命令行下载# He
2020-12-16
  目录