Linux
内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds
)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux
是一套免费使用和自由传播的类 Unix
操作系统,是一个多用户、多任务、支持多线程和多CPU的操作系统。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。
Linux
能运行主要的 UNIX
工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux
继承了 Unix
以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux不仅系统性能稳定,而且具有开放源码、没有版权、技术社区用户多等特点 ,开放源码使得用户可以自由裁剪,灵活性高,功能强大,成本低。其核心防火墙组件性能高效、配置简单,保证了系统的安全。在很多企业网络中,为了追求速度和安全,Linux
操作系统不仅仅是被网络运维人员当作服务器使用。
目前市面上较知名的发行版有:Ubuntu
、RedHat
、CentOS
、Debian
、Fedora
、SuSE
、OpenSUSE
、Arch Linux
、SolusOS
等。
国内开源镜像地址:
http://mirrors.163.com/
http://mirrors.sohu.com/
https://developer.aliyun.com/mirror/
http://mirrors.yun-idc.com/
虚拟机(Virtual Machine
)指通过 **软件模拟 **的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。
目前常用的虚拟机软件有:VMware Workstation
、VirtualBox
、Bochs
VMware
为虚拟机的网络配置提供了以下4 种不同的模式: 桥接模式( Bridged
) 、网络地址转换模式( NAT
) 、主机模式( Host-Only
) 和定制模式( Custom
) 。
VMware
虚拟交换机有特殊的命名规则, 格式为:VMnet +交换机编号, 并且默认有不同类型的网络和其相关联。例如, 其中**VMnet0
默认为桥接模式**, VMnet1
默认为主机模式, VMnet8
默认为NAT
模式, 其余的虚拟交换机默认为定制模式`。但是上述默认类型也是可以进行修改的。
VMnet0
这个虚拟交换机的两端,这个交换机使得两端处在同一个网段中。即桥接模式下主机和虚拟机相当于同一个局域网中的两台电脑,虚拟机和宿主机处于同等地位。NAT
网络中,虚拟机虚拟出了一个NAT
服务器,使其虚拟网卡能够连接到Internet
。VMnet8
虚拟网卡的IP
地址是在安装VMware
时由系统指定生成的(动态的),虚拟机虚拟出来的NAT
网络所处的网段和VMnet8
虚拟网卡所处的网段是相同的,所以主机和虚拟机的两个虚拟网卡之间可以正常通信。Host-Only
虚拟网络进行通信的虚拟网卡,但Host-Only
网络没有NAT
服务,所以虚拟网络是不能连接到外部的互联网的,虚拟机之间形成的虚拟网络是一个全封闭的网络,和外部的唯一联系就是虚拟机能够和主机进行通信。root - root centos - centos
sudo apt-get install openssh-server -y
deepin 系统需要安装 ssh 服务 xsheel 才能连接
# yum -y install lrzsz
CentOS7
系统上传和下载命令 :rz
打开上传窗口sz
打开下载窗口
官方参考地址
Linux 命令特点
Tab
键来自动补齐命令。cd /;ls
。\
,可以将一个较长的命令分成多行表达,增强命令的可读性。执行后,shell自动显示提示符 >
,表示正在输入一个长命令,此时可继续在新行上输入命令的后续部分。后台运行程序
&
符号即可,如 find -name httpd.conf&
。cd
: 切换目录ll
、ls
、ll -a
、ls -a
: 列出当前目录下目录及文件mkdir [-mp]
: 创建目录/文件夹 ,m
: 配置权限 p
: 递归创建多个目录rmdir [-p] 目录名
: rmdir命令用于删除空目录,-p
同时删除父级目录pwd
: 显示当前目录mv
: 移动或重命名 文件/文件夹rm [-rf]
: 删除文件、强制递归删除目录和文件 r : 递归删除 i : 互动模式 f : 忽略不存在的touch
: 创建空文件或将文件的最后修改时间改为当前时间cat
: 将整个文件的内容输出到控制台more
: 逐屏输出(按空格键往下翻页,回车键逐行显示,按 Q
键退出)
-num
:这里的num是一个数字,用来指定分页显示时每页的行数。+num
:指定从文件的第num行开始显示。less
: 逐屏输出(按 pgUp
、pgDn
上下翻页,按Q
退出,也可使用方向键控制移动)
less
命令还支持在一个文本文件中进行快速查找。先按下斜杠键 /
,再输入要查找的单词或字符。less
命令会在文本文件中进行快速查找,并把找到的第一个搜索目标高亮度显示。head
/ tail [-f]
: 显示头10行/ 末尾10行 f
: 动态打印信息
-n num
:显示指定文件的前 num
行-c num
:显示指定文件的前 num
个字符cp [-rf]
: 文件或目录拷贝
-a
:尽可能将文件状态、权限等属性照原状予以复制。-f
:如果目标文件或目录存在,先删除它们再进行复制(即覆盖),并且不提示用户。-i
:如果目标文件或目录存在,提示是否覆盖已有的文件。-R
:递归复制目录,即包含目录下的各级子目录find -name <文件名>
: 查找文件
-name filename
:查找指定名称的文件。-user username
:查找属于指定用户的文件。-group grpname
:查找属于指定组的文件。-print
:显示查找结果。-type
:查找指定类型的文件。文件类型有:b(块设备文件)、c(字符设备文件)、d(目录)、p(管道文件)、l(符号链接文件)、f(普通文件)。locate
: 在 linux 系统中搜索文件或目录,与 window 中的搜索一样。
-c
: 只输出找到的数量-i
: 忽略大小写-r
: 使用基本正则表达式grep
命令用于查找文件中包含有指定字符串的行:grep [参数] 要查找的字符串 文件名
-c
:对匹配的行计数。-l
:只显示包含匹配模式的文件名。-n
:每个匹配行只按照相对的行号显示。-i
:对匹配模式不区分大小写。whereis
: 查找文件,主要用于程序名的搜索which
: 搜索某个系统命令的设置,并返回第一个搜索结果echo $PATH
可以 PATH
配置信息date -s [string]
: 查看当前系统时间 / 修改shutdown -h now
: 关机 poweroff
reboot
: 重启 shutdown -r now
ps [-ef | -aux]
: 查看系统进程kill [-9] pid
: 杀死指定 pid
进程 / -9
强制杀掉su
: 切换用户top
: 动态显示系统运行负载情况 退出 ctrl + z
hostnamectl
: 查询系统信息who
: 查看当前登录的所有用户信息clear
: 清屏free
:命令主要用来查看系统内存、虚拟内存的大小及占用情况date
: 命令可以用来查看系统当前的日期和时间useradd
: 添加用户userdel [-r home目录]
: 删除用户及用户 家目录passwd [用户]
: 修改[当前 | 指定]用户密码ifconfig / ip addr
: 查看系统 ip
netstat -nlp
: 查看网络端口信息ping
: 检查网络地址/域名是否可以连通wget 文件地址
: 下载文件1. 网卡配置文件的前缀则以ifcfg开始,如ifcfg-ens33
2. 通过网卡配置文件配置网络:切换到存放着网卡的配置文件 (/etc/sysconfig/network-scripts)
3. 通过编辑该文件中的配置信息可以进行自定义静态网络配置
TYPE=Ethernet # 设备类型 (默认即可)
BOOTPROTO=static # 地址分配模式(静态IP 修改)
NAME=ens33 # 网卡名称 (默认即可)
ONBOOT=yes # 是否启动 (自动启动 修改)
IPADDR=192.168.10.6 # IP地址 (自定义静态IP 新增)
NETMASK=255.255.255.0 # 子网掩码 (固定掩码 新增)
GATEWAY=192.168.10.2 # 网关地址 (固定网关 新增)
DNS1=192.168.10.2 # DNS地址 (固定DNS与网关一致即可 新增)
# NetworkManager是管理和监控网络设置的守护进程,设备即网络接口,连接是对网络接口的配置。
# 一个网络接口可以有多个连接配置,但同时只有一个连接配置生效
nmcli connection add con-name test type Ethernet ifname ens32 # 创建新连接配置test,IP通过DHCP自动获取
nmcli connection delete test # 删除连接
# 创建新的连接配置test2,指定静态IP,不自动连接
nmcli connection add con-name test2 ipv4.method manual ifname ens32 autoconnect no type Ethernet ipv4.addresses 192.168.10.100/24 gw4 192.168.10.1
# 参数说明
1. con-name:指定连接名字,没有特殊要求。
2. ipv4.methmod:指定获取IP地址的方式。
3. ifname:指定网卡设备名,也就是次配置所生效的网卡。
4. autoconnect:指定是否自动启动。
5. ipv4.addresses:指定IPv4地址。
6. gw4:指定网关。
# 启用 test 连接配置
nmcli connection up test
# 查看是否生效
nmcli device show ens32
$ firewall-cmd --state # 查看防火墙状态
$ systemctl stop firewalld # 关闭防火墙
$ systemctl start firewalld # 开启防火墙
$ systemctl restart firewalld # 重启防火墙
$ systemctl disable firewalld # 禁用防火墙
$ firewall-cmd --list-all # 查看防火墙规则
$ firewall-cmd --query-port=8080/tcp # 查看端口是否开放
$ firewall-cmd --permanent --add-port=3306/tcp # 开放 3306 端口,永久生效
$ firewall-cmd --permanent --remove-port=3306/tcp # 移除端口号
$ firewall-cmd --reload # 重新加载防火墙配置
$ firewall-cmd --zone=public --list-ports # 查看所有开放的端口列表
# 语法:
$ chmod [-R] xyz 文件或目录
# 选项与参数:
xyz : 数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的 read/write/**execute **权限。我们可以使用数字来代表各个权限,各权限的分数对照表如下: r : 4 w : 2 x : 1
$ chmod 777 .bashrc
还有一个改变权限的方法,使用对应的字母 u, g, o 来代表三种身份的权限!还有一个 a 表示 全部身份,而权限就可以写成 r , w, e
$ chmod u=rwx,g=rx,o=r .bashrc
$ chmod a+rw .bashrc
chown [-R] user[:group] file
: 修改文件所属用户:用户组chown -R mysql:mysql /usr/local/mysql-5.7.18
chgrp 用户 文件名
:修改文件所属用户组id 用户
:查看用户所在组grep
: 文本搜索,与其他查看命令组合使用 ps -aux | grep 8080
/ cat centos.log | grep log
sort
: 排序 cat centos.log | sort
管道可以多次使用uniq
: 去除重复行 cat centos.log | sort | uniq
wc
: 统计行数、单词数、字符数 cat centos.log | wc
tar
: 解压、压缩
tar -zcvf centos.tar.gz centos.log centos2.log
tar -zxvf centos.tar.gz -C /home/centos/tar
-z
用Gzip
压缩或解压-c
创建压缩文件-v
显示压缩或解压的过程
-f
目标文件名-x
解开压缩文件-C
指定解压到的目录
zip
: 压缩、解压
zip centos.zip centos.log centos2.log
unzip centos.zip
vim
是一款编辑器,基于vi
,对于开发者来说,vim
的用途非常广泛。但是,对于初学者来说,vim
又显得非常不友好,甚至连退出都不是那么简单。对于熟悉 vim
的人来说,这是一个非常好的工具。甚至可以不依赖鼠标就能完成所有的编辑工作。
它有三种模式:编辑模式、插入(输入)模式和命令模式
编辑模式下的光标移动的说明
命令 | 说明 |
---|---|
h或向左箭头键(←) | 光标向左移动一个字符 |
j或向下箭头键(↓) | 光标向下移动一个字符 |
k或向上箭头键(↑) | 光标向上移动一个字符 |
l或向右箭头键(→) | 光标向右移动一个字符 |
H | 光标移动到屏幕最上方那一行的首字符处 |
M | 光标移动到屏幕的中央那一行的首字符处 |
L | 光标移动到屏幕的最下方那一行的首字符处 |
G | 移动到文件的最后一行(常用) |
$ 或功能键“End” | 移动到这一行的末字符处(常用) |
0或功能键“Home” | 这是数字0:移动到这一行的首字符处(常用) |
Ctrl + f | 屏幕向下移动一页,相当于“Page Down”键 |
Ctrl + b | 屏幕向上移动一页,相当于“Page Up”键 |
Ctrl + d | 屏幕向下移动半页 |
Ctrl + u | 屏幕向上移动半页 |
+ | 光标移动到下一行的第一个非空格字符 |
- | 光标移动到上一列的第一个非空格字符 |
gg | 移动到文件的第一行,相当于1G(常用) |
n | n为数字。光标向下移动n行(常用) |
n | n表示数字,例如20。按下数字后再按空格键,光标会向右移动这一行的n个字符。 |
nG | n为数字。移动到文件的第n行。例如输入20G则会移动到文件的第20行(可配合:set nu) |
查找与替换 | |
---|---|
/word | 向上寻找名称为word的字符串 |
?word | n1与n2为数字。在第n1~n2行寻找word1这个字符串,并将该字符串取代为word2!举例来说,在100~200行查找myweb并取代为MYWEB则输入“:100,200 s/myweb/MYWEB/g”(常用) |
n | 这个n是英文按键。代表重复前一个查找的动作。举例来说,如果刚刚我们执行/myweb去向下查找myweb这个字符串,则按下n后,会向下继续查找下一个名称为myweb的字符串。如果是执行?myweb,那么按下n则会向上继续查找名称为myweb的字符串 |
N | 这个N是英文按键。与n刚好相反,为反向进行前一个查找动作。例如执行/myweb后,按下N则表示向上查找myweb / 使用/word配合n及N是非常有帮助的!可以让你重复地找到一些查找的关键词 |
:n1,n2 s/word1/word2/g | n1与n2为数字。在第n1~n2行寻找word1这个字符串,并将该字符串取代为word2!举例来说,在100~200行查找myweb并取代为MYWEB则输入“:100,200s/myweb/MYWEB/g”(常用) |
:1,$ s/word1/word2/g | 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2(常用) |
:1,$ s/word1/word2/gc | 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2!且在取代前显示提示字符给用户确认(confirm)是否需要取代(常用) |
删除、复制与粘贴
命令 | 说明 |
---|---|
x, X | 在一行字当中,x为向后删除一个字符(相当于“Del”键),X为向前删除一个字符(相当于Backspace,退格键)(常用) |
nx | n为数字,连续向后删除n个字符 |
dd | 删除光标所在的那一整列(常用) |
ndd | n为数字。删除光标所在的向下n列(常用) |
d1G | 删除光标所在到第一行的所有数据 |
dG | 删除光标所在到最后一行的所有数据 |
d$ | 删除光标所在处,到该行的最后一个字符 |
d0 | 那个是数字0,删除光标所在行的前一字符到该行的首个字符之间的所有字符 |
yy | 复制光标所在的那一行(常用) |
nyy | n为数字。复制光标处向下n行,例如20yy是复制20行(常用) |
y1G | 复制光标所在行到第一行的所有数据 |
yG | 复制光标所在行到最后一行的所有数据 |
y0 | 复制光标所在的那个字符到该行行首的所有数据 |
y$ | 复制光标所在的那个字符到该行行尾的所有数据 |
J | 将光标所在行与下一行的数据结合成同一行 |
c | 重复删除多个数据,例如向下删除10行,输入10cj |
u | 复原前一个动作(常用) |
Ctrl+r | 重做上一个动作(常用) |
. | 不要怀疑!这就是小数点!意思是重复前一个动作的意思。如果你想要重复删除、重复粘贴等动作,按下小数点就可以(常用) |
y$ | 复制光标所在的那个字符到该行行尾的所有数据 |
p, P | p为将已复制的数据在光标下一行粘贴上,P则为粘贴在光标上一行(常用) |
J | 将光标所在行与下一行的数据结合成同一行 |
c | 重复删除多个数据,例如向下删除10行,输入10cj |
u | 复原前一个动作(常用) |
:w | 将编辑的数据写入硬盘文件中(常用) |
:w! | 若文件属性为只读时,强制写入该档案。不过,到底能不能写入,还与你对该文件拥有的权限有关 |
:q | 退出vim(常用) |
:q! | 若曾修改过文件,又不想储存,则使用“!”强制退出而不储存文件。注意一下,惊叹号(!)在vim当中,常常具有强制的意思 |
:wq | 储存后离开,若为“:wq!”,则为强制储存后离开(常用) |
ZZ | 这是大写的Z。若文件没有更改,则不储存离开;若文件已经被更动过,则储存后离开 |
:w [filename] | 将编辑的数据储存成另一个文件(类似另存为新文件) |
:r [filename] | 在编辑的数据中,读入另一个文件的数据,即将filename这个文件内容加到光标所在行的后面 |
:n1,n2 w [filename] | 将n1到n2的内容储存成filename这个文件 |
:! command | 暂时退出vim到命令列模式下执行command的显示结果。例如,“:! ls /home”即可在vim当中查看/home下面以ls输出的文件信息 |
:set nu | 显示行号,设定之后,会在每一行的前缀显示该行的行号 |
:set nonu | 与:set nu相反,为取消行号 |
a
在光标所在字符后插入A
在光标所在行尾插入i
在光标所在字符前插入I
在光标所在行行首插入o
在光标下插入新行O
在光标上插入新行hjkl
(上下左右)G
和 gg
(G
文档最后一行,gg
文档首行)nG
和 :n
(到第 n
行)0
和 $
(移至行首/行尾)r
替换光标所在处字符R
从光标所在处开始替换字符,按 ESC
结束:%s/old/new/g
: 全文替换指定字符串 old
要替换的字符 new
新的字符:n1,n2s/old/new/g
: 在一定范围内替换字符串 n1
开始行号,n2
结束行号yl/nyl
复制一个字符/指定个数字符yy/nyy
复制一行dd/ndd
剪切p/P
光标所在之后/之前粘贴:set number/nu
设置行号:set nonumber/nonu
取消行号:w
保存文档:w new_filename
另存为指定文件:q
退出文档:wq
保存且退出文档:x
保存且退出文档q!
不保存退出:n
定位到 n
行ZZ
快捷键,保存修改并退出e!
(恢复到文档的初始状态)/string
搜索 string
信息,回车 按 n
定位到下一个匹配的信息前,搜索时忽略大小写 :set ic
系统目录结构:ls / [-l]
查看 根目录( / )下 的所有文件详细信息
/bin
常用的命令/boot
启动时的使用的核心文件,连接文件以及镜像/dev
外部设备,访问方式和文件的访问方式一致/etc
系统管理所需的所有配置文件和子目录/home
用户的主目录,每一个用户都会创建一个,root用户叫home
,非root
用户是以自己的登录名命名/lib
系统最基本的动态连接共享库,几乎所有文件都会用到这个共享库/media
把自动识别的设备挂载到这个目录下/mnt
用户临时挂载别的文件系统/opt
主机额外安装软件所摆放的目录,比如数据库/root
超级权限者的用户主目录。/sbin
系统管理员使用的系统管理程序/srv
服务启动之后需要提取的数据/sys
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建/usr
软件安装目录,用户的很多应用程序和文件都放在这里,类似与windows
下的program files
目录/var
这个目录中存放着在不断扩充着的东西,一般是将经常更改的东西放在这里,比如各种日志文件
- 在 Linux 或 Unix 操作系统中,所有的文件和目录都被组织成以一个根节点开始的
倒置的树状结构
。文件系统的最顶层是由根目录开始的,系统使用 / 来表示根目录
。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此反复就可以构成一个庞大的文件系统。- 在Linux文件系统中有两个特殊的目录,一个用户所在的工作目录,也叫当前目录,可以使用一个点 . 来表示;另一个是当前目录的上一级目录,也叫父目录,可以使用两个点 … 来表示。
.
:代表当前的目录,也可以使用 ./ 来表示;..
:代表上一层目录,也可以 …/ 来代表。
~
: 代表家目录 | root 目录
如果一个目录或文件名以一个点 . 开始,表示这个目录或文件是一个隐藏目录或文件(如:.bashrc)。即以默认方式查找时,不显示该目录或文件。
RPM(Redhat
Package
Manager
,就是 Redhat
的包管理器)是Red Hat
公司随Redhat Linux
推出了一个软件包管理器,通过它能够更加轻松容易地实现软件的安装。
rpm -ivh package-name
i
: 安装 v
: 显示安装的详细界面 h
: 显示安装进度rpm -e --nodeps gcc
nodeps
: 不考虑依赖关系 force
: 强制处理rmp -qa | grep
Yum(全称为 Yellow dog Updater, Modified)Shell前端软件包管理器 。基於RPM
包管理,能够从指定的服务器自动下载RPM
包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
Yum
提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。yum [options] [subcommand] [package ...]
-h
:显示帮助信息;-y
:对所有的提问都回答“yes
”;-c
:指定配置文件;-q
:安静模式;-v
:详细模式;-C
:完全从缓存中运行,而不去下载或者更新任何头文件。install
:安装rpm
软件包;update
:更新rpm
软件包;remove
:删除指定的rpm
软件包;list
:显示软件包的信息;search
:检查软件包的信息;info
:显示指定的rpm
软件包的描述信息和概要信息;clean
:清理yum
过期的缓存;deplist
:显示rpm
软件包的所有依赖关系。$ yum install package1 #安装指定的安装包
$ yum update package1 #更新指定程序包
$ yum info package1 #显示安装包信息package1
$ yum list installed java* #显示所有已经安装和可以安装的程序包
$ yum search string #根据关键字string查找安装包
$ yum remove | erase package1 #删除程序包package1 | 不保留软件包的数据和配置文件
$ yum clean packages: #清除缓存目录下的软件包
apt-ge
t 包管理应用软件,由 apt-get
管理的软件包可以轻松做到一键安装卸载。在 Ubuntu\Deepin
系统中,经常使用,由于常常需要 root
权限来操作,所以搭配 sudo
更加方便。$ sudo apt-get install XXX # 一键安装软件包,这个指令会自动检测并安装依赖
$ sudo apt-get install -y XXX # 不需要重复地确认安装,所有交互都是 yes
$ sudo apt-get install -q XXX # 静默安装,当然也不是完全静默,会将低等级的log信息屏
$ sudo apt-get --reinstall install packagename # 修复或者安装最新版
$ sudo apt-get remove XXX # remove仅仅卸载软件,但是并不卸载配置文件
$ sudo apt-get purge XXX # 卸载指令,同时卸载相应的配置文件
$ sudo apt-get autoremove # 在卸载软件的时候同时卸载那些当初作为依赖但是现在并不需要的包,慎用
$ sudo apt-get update # 将所有包的来源更新,也就是提取最新的包信息
$ sudo apt-cache search <key> # 查找包含部分 key 的软件包
yum提示Another app is currently holding the yum lock; waiting for it to exit…
$ kill -s 9 25960 # 强制杀死进程
$ ps aux|grep yum # 查看yum 是否还存在
$ java -version # 查看linux 是否自带 java
$ yum list installed | grep java # 列出默认安装的所有 java 软件包
$ yum -y remove java-1.7.0* # 删除 java-1.7.0 开头的所有软件包
$ yum -y erase java-1.8.0* # 删除 java-1.8.0 开头的所有软件包,不保留软件包的数据和配置文件
官网下载对应的
JDK
版本压缩文件,使用xftp
工具上传到linux
系统中的/usr/devtools
中
$ tar -zxvf jdk-8u251-linux-x64.tar.gz -C /usr/myapp/java # 解压 jdk8 到 myapp/java 目录下
配置
java
环境变量,编辑vim /etc/profile
文件,在文件结尾处G o
添加 如下配置:
export JAVA_HOME=/usr/myapp/java/jdk1.8.0_251
添加完毕后,
ESC
退出编辑模式,ZZ
保存退出 , 执行source /etc/profile
让修改信息生效,java -version
检测是否配置成功。echo $PATH
可以查看环境变量PATH
中的信息
$ -zxvf apache-maven-3.6.1-bin.tar.gz -C ../myapp/maven # 解压 maven 到 myapp/maven 目录下
$ cp settings.xml /usr/myapp/maven/apache-maven-3.6.1/conf # 复制 准备好的 setting.xml 替换默认的
修改
vim conf/settings.xml
配置文件,本地仓库地址改为/usr/myapp/maven/mavenLocalRepository
修改vim /etc/profile
添加Maven
环境变量,:wq
保存退出
export MAVEN_HOME=/usr/myapp/maven/apache-maven-3.6.1
执行
source /etc/profile
让修改信息生效,mvn -version
验证是否配置成功。
$ tar -zxvf apache-tomcat-8.5.43.tar.gz -C ../myapp/tomcat # 解压 tomcat 到 myapp/tomcat 目录下
$ firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp # 开放防火墙 8080 端口,永久生效
$ firewall-cmd --reload # 重启防火墙
$ firewall-cmd --zone=public --list-ports # 查看所有开放的端口列表
$ netstat -nlp | grep 8080 # 查看8080 端口是否运行
进入
apache-tomcat-8.5.43/bin
目录,通过sheel
脚本./start.sh
启动tomcat
, 在 宿主机 通过浏览器访问http://192.168.25.128:8080/
检查是否配置成功。
./start.sh && tail -f ../logs/catalina.out
启动并打印启动日志
设置 **Tomcat**
为系统服务,可以通过命令进行启动,就不用定位到对应的路径地址去启动和停止了,还可以设置为开机自启,这样更加方便
在
/usr/lib/systemd/system/
目录下新建文件tomcat.service
, 填充如下内容:
[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
Environment='JAVA_HOME=/usr/myapp/java/jdk1.8.0_251'
Environment='CATALINA_PID=/usr/myapp/tomcat/apache-tomcat-8.5.43/bin/tomcat.pid'
Environment='CATALINA_HOME=/usr/myapp/tomcat/apache-tomcat-8.5.43/'
Environment='CATALINA_BASE=/usr/myapp/tomcat/apache-tomcat-8.5.43/'
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
WorkingDirectory=/usr/myapp/tomcat/apache-tomcat-8.5.43/
ExecStart=/usr/myapp/tomcat/apache-tomcat-8.5.43/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
到此配置就完成了,接下来我们就可以通过命令来操作
tomcat
了
$ systemctl start tomcat # 开启 tomcat 服务
$ systemctl stop tomcat # 停止 tomcat 服务
$ systemctl restart tomcat # 重启 tomcat 服务
$ systemctl status tomcat # 查看 tomcat 状态
$ systemctl enable tomcat # 设置 tomcat 跟随系统启动
$ yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel # 安装 nginx 依赖
$ tar -zxvf nginx-1.18.0.tar.gz # 解压缩
$ cd nginx-1.18.0 # 进入 nginx 目录
$ ./configure --prefix=/usr/myapp/nginx # 文件检查
$ make && make install # 执行安装
$ whereis nginx # 查看安装路径
nginx 常用命令
$ /nginx/sbin/nginx -t # 检测配置文件是否正确
$ /nginx/sbin/nginx # 载入配置文件
$ /nginx/sbin/nginx -s reload # 重启命令
$ /nginx/sbin/nginx -s stop | quit # 停止命令
$ ps -ef|grep nginx # 查看进程
配置防火墙,开启 80 端口
$ firewall-cmd --permanent --zone=public --add-port=80/tcp # 开放防火墙 80 端口,永久生效
$ firewall-cmd --reload # 重启防火墙
$ firewall-cmd --zone=public --list-ports # 查看所有开放的端口列表
再宿主机浏览器上访问:http://192.168.25.128/ 看到 nginx 默认页面即配置成功
配置域名映射
编辑 nginx 的 nginx.conf 配置文件 ,添加
include vhost/*.conf
抽取配置文件到 vhost 文件夹下外部配置,减轻主配置文件压力。
在 vhost 下 新建一个 www.test.com.conf 文件,配置如下:
server {
#监听端口
listen 80;
#访问域名
server_name www.test.com;
#编码格式,若网页格式与此不同,将被自动转码
#charset koi8-r;
#虚拟主机访问日志定义
access_log /usr/myapp/nginx/logs/host.access.log combined;
#访问路径,可相对也可绝对路径
root /html;
#首页文件。以下按顺序匹配
#index index.html index.htm;
#error_page 404 /404.html;
#对URL进行匹配
location / {
#代理地址,如果遇到 server_name 请求则转发到当前指定地址
proxy_pass http://127.0.0.1:8080;
#跨越处理
add_header Access-Control-Allow-Origin *;
}
}
编辑 /etc/hosts 文件,添加自定义域名
127.0.0.1 www.test.com
浏览器访问 http://www.test.com/ 地址,则nginx 会自动代理到 http://127.0.0.1:8080 地址上。
$ yum list installed | grep mysql # 检测是否已安装 闭源的 mysql
$ yum list installed | grep mariadb # 检测是否已安装 开源的 mysql
$ yum remove mariadb* -y # 移除 mariadb 开头的所有软件包
$ tar -zxvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C /usr/myapp # 解压 mysql 到 myapp 目录下
$ mv mysql-5.7.30-linux-glibc2.12-x86_64 mysql-5.7.30 # 修改文件夹名称
$ mkdir data # 创建mysql数据存放目录
$ useradd mysql # 创建 mysql 用户
# 初始化数据,执行后会生成一个 root 用户的临时密码,拷贝保存,后面需要用它登录修改密码
$ ./mysqld --initialize --user=mysql
$ chown -R mysql:mysql ./ # 更改 mysql5.7.30 整个文件夹目录权限所属
$ ./mysqld_safe & # 启动服务,& 符号表示后台启动
$ ./mysql -uroot -p 临时密码 # 登录
$ set password = password('root'); # 修改密码
$ grant all privileges on *.* to root@'%' identified by 'root'; # 授权远程访问
$ flush privileges; # 刷新权限
$ exit; # 退出 mysql 客户端
设置 mysql 字符编码
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
port = 3306
basedir=/usr/myapp/mysql-5.7.30
datadir=/usr/myapp/mysql-5.7.30/data
max_connections=200
character-set-server=utf8
collation-server=utf8_general_ci
default-storage-engine=INNODB
设置
mysql
为系统服务,在/usr/lib/systemd/system/
目录下新建mysql.service
配置文件, 填充如下内容
[Unit]
Description=MySQL Server
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/myapp/mysql-5.7.30/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
修改
mysql.service
所属用户组,保持和配置文件一致
chown -R mysql:mysql mysql.service
使用命令操作
mysql
服务
systemctl start mysql # 启动 MySQL 服务
systemctl stop mysql # 停止 MySQL 服务
systemctl restart mysql # 重启 MySQL 服务
systemctl enable mysql # 设置 MySQL 自启动
ps -ef|grep mysql # 查看MySQL是否自启动
$ show variables like 'char%'; # 查看修改后的字符编码
开放
mysql
3306 端口
$ firewall-cmd --permanent --zone=public --add-port=3306/tcp # 开放防火墙 3306 端口,永久生效
$ firewall-cmd --reload # 重启防火墙
$ firewall-cmd --zone=public --list-ports # 查看所有开放的端口列表