0%

Linux和服务器

Linux基本概念

image-20210919145531127

常见的服务器搭配组合:

  • LAMP: linux+apache+mysql+php
  • LNMP: linux+nginx+mysql+php

控制程序

  • 终端命令:Xshell
  • 文件传输:FileZilla

CentOS基础

通用命令

1
2
3
4
5
sync #将数据从内存存储到硬盘中,一般用于shutdown之前
shutdown #关机
reboot #重启
halt #关闭系统,相当于shutdown -h now和poweroff
ifconfig #对应windows下的ipconfig,查看ip地址

文件操作

  • find -name 文件名查找文件位置

  • pwd显示当前路径

  • ls显示目录内容(类似dir)

    1
    2
    3
    -a						显示所有内容(包括隐藏文件)
    -l 列表显示
    -h 配合-l人性化显示(显示单位?)
  • touch创建文件(更新修改日期)

  • mkdir创建文件夹

    1
    -p						创建多级目录
  • rm删除文件/目录

    1
    2
    -f						强制删除(忽略不存在的文件)
    -r 多级删除内容(删除文件夹必需)
  • tree树状显示

    1
    -d						只显示目录
  • cp 源文件 目标文件

    1
    2
    3
    -f						强制复制(直接覆盖)
    -i 覆盖文件提示
    -r 多级复制(复制文件夹必须)
  • mv 源文件 目标文件可以用这个办法给文件重命名

    1
    2
    -i						覆盖文件提示
    -u 只覆盖已经更新过的文件
  • cat查看文件内容/创建文件/文件合并/追加文件

    1
    2
    -b						非空行输出行号
    -n 所有行输出行号

    同类型命令

    image-20210919170049297

    • more命令查看过程中,空格查看下一页,enter查看下一行,:f查看行号,less命令pageUp和pageDown键就可以翻页
    • 这两个命令都使用Q退出,使用/向下查找字符串。使用?向上查找字符串,n下一个,N上一个
  • grep查找文件内容

    1
    2
    3
    -n						显示匹配及行号
    -v 显示不包含匹配的所有行
    -i 忽略大小写
  • echo重定向及管道|

    echo能将导向的内容显示出来,管道|能将前一个指令的结果转为后一个指令的参数,可以递归使用

    1
    echo 文本 >> 文件名			将指定字符串输入到文件中
  • ln 被链接的文件 新链接文件创建链接,默认硬链接,可以通过创建硬链接的方式防止误删一些文件

    1
    -s						创建软连接(符号链接)

目录结构

根目录

image-20210919154205047

image-20210919154220498

服务器独有路径/www:存放服务器网站相关的资源环境以及网站的项目

Linux文件中第一个字符代表这个文件是怎样的基础类型

image-20210919162113703

文件权限

image-20210919162250803

权限管理

  • chgrp -R 组名 文件/目录名         修改文件/目录所属组
    chown -R 所属用户 文件名         修改所乎用户
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54

    + **`chmod 权限编号 文件名`赋予权限**

    chmod 777会给文件赋予最高权限,即所有用户可读可写可执行

    权限编号的相关规则如下

    ![image-20210919165924067](https://cdn.jsdelivr.net/gh/lan5th/pics/blog_images/image-20210919165924067.png)

    ## 文件编辑

    **Vim编辑器**

    ![image-20210919200205886](https://cdn.jsdelivr.net/gh/lan5th/pics/blog_images/image-20210919200205886.png)

    三种模式

    + 命令模式:刚进入vim
    + 输入模式:使用`i`命令进入输入模式,编辑模式按Esc进入命令模式
    + 底线命令模式:命令前加`:`进入底线命令模式

    一些常用指令

    + `i`进入编辑模式
    + `[Esc]`进入命令模式
    + `u` 重复前一个动作
    + `[Ctrl]+r`重复上一个动作
    + `:wq`保存退出
    + `:ZZ`不保存直接退出
    + `:set nu`显示行号
    + `:set nonu`不显示行号

    ## 用户管理

    用户相关信息在`/etc/passwd`文件中

    + `useradd -m 用户名`一般新建用户`-m`选项来创建使用者目录

    ![image-20210919202201446](https://cdn.jsdelivr.net/gh/lan5th/pics/blog_images/image-20210919202201446.png)

    + `userdel -r 用户名`一般删除用户`-r`选项来删除该用户的目录页

    + `usermod 修改内容 用户名`修改的选项和`useradd`指令的选项相同

    如`usermod -d newdirectory user1`修改用户主目录

    + `su 用户名`切换用户,普通用户切换超级用户可以使用`sudo su`

    + 超级用户专有权限:`passwd 用户名`,给用户设置密码

    ```bash
    -l #锁定用户
    -u #启用已被停止的账户
    -d #使目标用户删除密码
    普通用户:`passwd`修改自己的密码

超级用户root的命令行提示符为#,而普通用户的命令行提示符为$

passwd文件的查看

信息顺序:

1
用户名:密码(不可见):用户id:用户组id:注释性描述:主目录:登录shell

image-20210919210055675

不可见得密码一般用x或*替代

真正加密后的密码保存在/etc/shadow文件中,不过由于是安全加密过得,我们依然无法直接查看

用户组管理

用户组相关信息在/etc/group文件中

  • groupadd 组名新建用户组

  • groupdel 组名删除用户组

  • groupmod 组名修改用户组信息

    1
    2
    -g #修改组id
    -n #修改组名

磁盘管理

  • df列出文件系统整体磁盘使用量

    1
    -h #人性化显示
  • du显示目录或文件的大小

挂载设备

如果一些设备不兼容,则使用挂载命令来实现访问

1
mount /dev/mydevice /mnt/newmount #dev目录存放外部设备,mnt存放挂载点

同理,umount -f 挂载位置取消挂载点

进程管理

  • ps查看系统中正在执行各个进程的信息

    1
    2
    3
    4
    #默认仅显示与当前用户相关的进程
    -a #显示所有进程信息
    -u #显示较为详细的信息
    -x #显示所有用户的进程
  • 常用命令ps -aux|grep 关键词查找与关键词相关的进程

    用管道和grep选择器进行过滤查询

  • ps -ef功能与ps -aux相似,只是显示格式略有区别

  • pstree以树状图来查看进程

    1
    2
    -p #显示父进程id
    -u #显示用户组id
  • kill -9 进程id杀死进程(服务器慎用)

防火墙和网络

1
2
3
4
5
6
7
8
9
10
#开放防火墙对应端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent

#查看端口开放情况
netstat -ntlp

#查看ip配置
ifconfig
#查看网卡
ip addr

环境变量

linux系统的环境变量配置一直是一个很让人头疼的问题,这里简单介绍下不同位置环境变量之间的区别

环境变量文件位置

  • 系统级别

    • 系统环境级别:在加载环境时进行加载

      /etc/environment

    • 系统用户级别:在每个用户登录时进行加载

      /etc/profile

  • 用户级别:

    • 普通用户

      ~/.bash_profile

    • root用户

      /root/.bashrc

      如果出现root用户无法读取到环境变量时,可以在这个文件的末尾添加

      source /etc/profile使profile文件自动生效

环境变量文件格式

1
2
3
4
export JAVA_HOME=/environment/jdk1.8.0_241
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/environment/hadoop-3.1.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

服务器环境搭建

作者使用了CentOS7.6版本作为服务器版本

宝塔面板

傻瓜式环境搭建

官方地址宝塔linux面板,一键安装LAMP/LNMP/SSL/Tomcat (bt.cn)

CentOS下安装指令

1
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

端口开放需求

如需完整使用宝塔的所有功能 你还需要放行如下端口
20 、21、 39000-40000端口(linux 系统 ),3000-4000(windows系统)
22 (SSH)
80、443(网站及SSL)
3306 (数据库远程连接)
888 (phpmyadmin)

在软件商店即可一键部署各种环境

使用终端命令创建

rpm

安装jdk,先检测是否已经安装了jdk

1
2
rpm -qa|grep jdk #检测jdk信息
rpm -e --nodeps jdk_ #强制卸载jdk

安装jdk

1
rpm -ivh jdk-8u65-linux-x64.rpm #部署安装

rpm方式不需要手动配置环境变量

解压缩

安装Tomcat

1
tar -zxvf apache-tomcat-9.0.53.tar.gz #解压缩

运行

  • 进入/apache-tomcat-9.0.53/bin目录

  • 相关命令

    1
    2
    ./startup.sh #启动
    ./shutdown.sh #停止

Tomcat用来把我们发布的一些war包部署上去,只要我们把war包放在/apache-tomcat-9.0.5/webapps目录下,运行Tomcat即会自动部署

域名解析之后

域名解析、备案之后如果项目配置的端口与http和https的端口不同,则需要通过Apache或Nginx做一下反向代理,我们修改相应的配置文件即可发布网站

yum

安装docker

1
cat /etc/redhat-release #检测CentOS系统版本

安装准备环境

1
2
3
# -y表示所有的询问都默认选yes
yum -y install gcc
yum -y install gcc-c++

安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#卸载之前环境(如果存在)
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

#安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#配置阿里云镜像
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新软件包索引
sudo yum makecache fast
#安装Docker CE
sudo yum install -y docker-ce docker-ce-cli containerd.io

启动docker

1
2
3
4
5
6
7
8
9
10
#启动
systemctl start docker.service

#测试
docker version
docker run hello-world
docker images

#结束
systemctl stop docker.service

其他常用指令

解压缩

推荐一篇博客

Linux常用命令之压缩和解压缩命令

移动覆盖

  1. 先查看自己系统上的cp指令有没有cp指令的别名alias

    image-20220125142937291

    -i表示的是每次覆盖操作都需要手动确认,当我们进行大量文件的操作时一个个手动确认会十分麻烦

  2. 如果发现如上图所示,需要手动暂时取消cp指令的别名unalias cp,这样能够暂时取消别名

  3. 进行cp覆盖操作cp -rf sourcedir distdir

  4. 尽管取消别名是暂时的,为了安全最好还是先将别名修改回去alias cp='cp -i'

内存查看

  • 内存查看free
  • 外存查看df -h