Linux基本概念
常见的服务器搭配组合:
- LAMP: linux+apache+mysql+php
- LNMP: linux+nginx+mysql+php
控制程序
- 终端命令:Xshell
- 文件传输:FileZilla
CentOS基础
通用命令
1 | sync #将数据从内存存储到硬盘中,一般用于shutdown之前 |
文件操作
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 所有行输出行号同类型命令
more
命令查看过程中,空格查看下一页,enter查看下一行,:f查看行号,less
命令pageUp和pageDown键就可以翻页- 这两个命令都使用
Q
退出,使用/
向下查找字符串。使用?
向上查找字符串,n
下一个,N
上一个
grep
查找文件内容1
2
3-n 显示匹配及行号
-v 显示不包含匹配的所有行
-i 忽略大小写echo
重定向及管道|
echo
能将导向的内容显示出来,管道|
能将前一个指令的结果转为后一个指令的参数,可以递归使用1
echo 文本 >> 文件名 将指定字符串输入到文件中
ln 被链接的文件 新链接文件
创建链接,默认硬链接,可以通过创建硬链接的方式防止误删一些文件1
-s 创建软连接(符号链接)
目录结构
根目录
服务器独有路径/www
:存放服务器网站相关的资源环境以及网站的项目
Linux文件中第一个字符代表这个文件是怎样的基础类型
文件权限
权限管理
chgrp -R 组名 文件/目录名 修改文件/目录所属组 chown -R 所属用户 文件名 修改所乎用户
普通用户:`passwd`修改自己的密码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 #使目标用户删除密码
超级用户root的命令行提示符为#
,而普通用户的命令行提示符为$
passwd文件的查看
信息顺序:
1 | 用户名:密码(不可见):用户id:用户组id:注释性描述:主目录:登录shell |
不可见得密码一般用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 #显示用户组idkill -9 进程id
杀死进程(服务器慎用)
防火墙和网络
1 | #开放防火墙对应端口 |
环境变量
linux系统的环境变量配置一直是一个很让人头疼的问题,这里简单介绍下不同位置环境变量之间的区别
环境变量文件位置
系统级别
系统环境级别:在加载环境时进行加载
/etc/environment
系统用户级别:在每个用户登录时进行加载
/etc/profile
用户级别:
普通用户
~/.bash_profile
root用户
/root/.bashrc
如果出现root用户无法读取到环境变量时,可以在这个文件的末尾添加
source /etc/profile
使profile文件自动生效
环境变量文件格式
1 | export JAVA_HOME=/environment/jdk1.8.0_241 |
服务器环境搭建
作者使用了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 | rpm -qa|grep 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 | # -y表示所有的询问都默认选yes |
安装
1 | #卸载之前环境(如果存在) |
启动docker
1 | #启动 |
其他常用指令
解压缩
推荐一篇博客
移动覆盖
先查看自己系统上的cp指令有没有cp指令的别名
alias
-i
表示的是每次覆盖操作都需要手动确认,当我们进行大量文件的操作时一个个手动确认会十分麻烦如果发现如上图所示,需要手动暂时取消cp指令的别名
unalias cp
,这样能够暂时取消别名进行cp覆盖操作
cp -rf sourcedir distdir
尽管取消别名是暂时的,为了安全最好还是先将别名修改回去
alias cp='cp -i'
内存查看
- 内存查看
free
- 外存查看
df -h