Linux
一、Linux
1.0 前言
实际项目开发中,我们的环境分为三种:1.开发环境 2.测试环境 3.生产环境
开发环境:平时大家大多是在Windows或者Mac操作系统下去编写代码进行开发,在开发环境中安装大量的软件,这样会导致环境的稳定性和安全性降低
测试环境:一般克隆一份生产环境,会将开发环境中的程序部署到测试环境中,这个环境的主要目的是去程序进程检测,收集程序中的各种问题,并交给开发人员进行修改
生产环境:是将程序运行在此环境中,供用户去使用。这个环境是有专业的人员去维护,一般人是没有权限去操做生产环境的
项目最终运行在服务器上的。服务器一般都是开机就不再关机·,专门的操作系统运行在服务器
1.1 Linux系统
在Linux操作系统出现之前,还有一个操作系统叫做Minix,Minix操作系统是由Andrew的大学教授研发出来的,当时大学教授是为了给学生上课,买了一套Unix操作系统,参考Unix自己写了一个操作系统,并且命名为Minix。同时将Minix开源,供学校内部的研究和教学,到了2000年,Andrew将Minix操作系统完全对外开源。
Minix由于完全对外开源之后,在互联网上迅速的传播,但是大家在使用时,发展Minix不时很完美,内部存在各种各样问题。用户将问题解决后,编写了一个补丁,将补丁以邮件的方式发给Andrew,但是Andrew教授最初的目的只是为了教学和研究。
于此同时,一位芬兰的大学生出现了,叫Linus,在Minix操作系统基础上,自己添加了一些补丁和插件,并将其命名为Linux操作系统,并且完全对外开源,而且开始维护Linux操作系统。
之前学习的Git也时Linus研发的。
Linus Torvalds 和 Linux |
---|
1.2 Linux版本
Linux主要以稳定,可靠,免费的特点成为全球使用最多的服务器操作系统
Linux的版本分为两种:
一种是Linus团队正在维护的开源内核版本Linux的内核版本官网:https://www.kernel.org/
另一种是一些厂商基于内核版本封装的发行版本
CentOS是免费的、开源的、可以重新分发的开源操作系统,CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统。
Linux的常见发行版本 |
---|
1.3 Linux系统特点
Linux中一切皆是文件,没有盘符
Linux是严格区分大小写的
Linux中文件是没有后缀的,但是他有一些约定俗成的后缀
Linux一般都是使用无界面的
`
1.4 安装
安装Linux,我们需要一个虚拟机,为了安装虚拟环境:VMware或者Virtual Box(采用VMware)
https://www.vmware.com/go/getworkstation-win
为了安装Linux,我们需要一个Linux的镜像文件:CentOS7版本
http://mirrors.163.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1908.iso
安装一个连接Linux的图形化界面:Xterm,SSH,XShell(Xterm)
https://download.mobatek.net/2012020021813110/MobaXterm_Portable_v20.1.zip
PS:但是电脑不支持的,带不动的,就不要装了,直接白嫖1个月/3个月腾讯云/阿里云服务器
1.5 云服务器
服务器分为2种,第一种:物理机 第二种:云服务器
选择云服务器:阿里云、腾讯云、百度云、京东云、华为云等等
演示申请阿里云服务器
重置密码才能远程访问
1.6 远程连接
使用FinalShell工具
二、Linux命令
Linux中命令的基本格式:命令 【选项】 【参数】
需要注意,个别命令是不遵循这个格式
当命令中有多个选项时,可以写在一起的,并且选项也是由简写方式的 命令 -选项A选项B
命令大全:https://www.runoob.com/linux/linux-tutorial.html
2.1 基础命令[必须背会]
-
查看当前系统版本信息: lsb_release -a
-
查看所在路径:pwd
-
查看网络是否畅通:ping ip或域名
-
结束命令:Ctrl+C
-
查看本机IP地址:ifconfig 或 ip addr
-
清空屏幕:clear
-
善用tab键提示
-
查看当前时间 : date
-
查看当前用户: who
-
重启: reboot
-
关机: shutdown
-
上下键
: 查找历史命令记录
2.2 目录和文件[必须背会]
1.切换路径 cd
-
cd / 进入到根路径
-
cd … 上一级
-
cd - 返回上一次的路径
-
cd ~ 如果是root用户,直接进入/root文件夹
如果是普通用户,直接进入home文件夹
绝对路径:
路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
相对路径:
路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd …/man 这就是相对路径的写法。
2.查目录的内容 ls
- ls 列出当前目录下的内容
ls /usr 列出usr目录下的内容
Linux的磁盘:没有盘符,以根路径
- /bin:
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 - /boot:
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。 - /dev :
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。 /etc
:
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。/home
:
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。- /lib:
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。 - /lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。 - /media:
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。 - /mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。 /opt
:
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。- /proc:
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
提示:
ls [-ald] [目录名]
# 目录名不填写,默认为当前目录。
# -a:列出的全部的文件,包括隐藏文件
# -l:列举出全部的信息
# -d:仅查看目录本身
3.查看目录的详细内容 ll
ll 列出当前目录下的详细内容
结果说明:
在 Linux 中第一个字符
代表这个文件是目录、文件或链接文件等等。
- 当为 d 则是目录
- 当为 - 则是文件;
- 若是 l 则表示为链接文档(link file);
- 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。
4.创建目录 mkdir
mkdir /a在根路径下创建文件夹
Mkdir -p /b/c在根路径下创建2个文件夹
5.删除目录 rmdir 目录需要为空
rmdir /a 删除目录,要求目录为空
6.删除目录或文件 rm
rm 文件名 , 删除文件,不能删除文件夹
rm -r 文件名,递归删除文件夹,ps: 有确认提示,需要输入y
rm -rf qfedu 强制删除,非空也可以 r表示递归,f表示强制
rm -rf /* 自杀,不用!!!
7.创建或编辑文件 vi|vim
Vim a.txt 如果文件存在就是编辑,文件不存在就是创建
使用步骤:
1.执行命令 vim a.txt
2.按下 i(插入)
o(换行)
a(追加)
任意其一即可进入到编辑模式
3.输入文件内容
4.按下 esc键
5.输入 :wq
# 在vi文件时,在底行命令模式下可以输入以下常用内容
# 行号操作
set nu # 查看文件的行号
to rownum # 快速的跳转到指定行
set nonu # 取消行号
# 搜索操作
/word # 类似Windows的Ctrl + F搜索文件中的具体内容所在位置,查看下一个可以输入字母n
# 快速定位
G # 快速跳转到最后一行
gg # 快速跳转到第一行
dd # 删除行
8.查看文件的内容 cat
cat a.txt 查看文件的全部内容, tac命令式倒着看的
9.分页查看文件内容 less
less /etc/wgetrc 分页查看文件内容,退出 :q
10.复制文件或目录 cp
cp /etc/wgetrc /tm/egetrc 复制,产生新文件
11.移动文件或目录 mv
mv /tm/a.txt /a.txt 移动
12.创建空文件 touch
touch test.txt
2.3 压缩文件相关
1.解压或生成压缩文件 gz格式 tar
- tar -czvf tm.tar.gz /tm 把tm目录生成
压缩
文件
tar [-zcvf] 压缩包名称 文件1 文件2 目录1 目录2 ...
# -c: 代表打包
# 其他参数同上
tar -zxvf tm.tar.gz
解压
文件
tar [-zxvf] 压缩包名称 [-C 路径]
# -z: 代表压缩包后缀是.gz的
# -x: 代表解压
# -v: 解压时,打印详细信息
# -f: -f选项必须放在所有选项的最后,代表指定文件名称
# -C 路径: 代表将压缩包内容解压到指定路径
2.解压或 生成压缩文件 zip格式 zip
默认没有zip命令,需要先按照
yum install zip 按照zip命令
zip tm.zip /tm 把tm生成为压缩文件
unzip tm.zip 解压
2.4 用户和用户组
Linux系统是一个多用户多任务的操作系统,任何一个用户想要操作Linux操作系统,必须向系统管理员申请一个账号才可以,并且以这个账号的身份去操作Linux。
用户的账号一方面可以帮助系统管理员追踪当前用户的操作。另一方面可以控制当前用户对系统资源访问。
用户信息在 /etc/shadow 文件
用户组信息在 /etc/group 文件
1.新增用户 useradd
useradd s001 新增用户,用户名为s001,且会在home目录下生成一个该名字的文件夹
2.删除用户 userdel
userdel -r s001 删除用户名和对应的目录 -r 删除对应的目录(home下的目录)
3.修改用户信息 usermod
usermod -l student s003 把s003用户名改为student
4.设置用户的密码 passwd
passwd student 设置student用户的密码,按提示进行
5.切换登录用户 su
su root 根据提示输入密码
6.新增用户组 groupadd
groupadd java01 新建用户组
8.修改用户组 groupmod
groupmod -n java168 java01 把用户名名称为java01的改为java168
9.删除用户组 groupdel
groupdel java168 删除用户组
2.5 权限
首先我们要清楚Linux文件的权限信息
在Linux中输入ls -l 或者 ll查看文件和目录的详细信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VVtiMVom-1688891029212)(C:/Users/qiush/AppData/Roaming/Typora/typora-user-images/image-20230623202624911.png)]
目录的第一个属性用“d”标识这是一个目录。
在Linux文件详情的后面属性需要分为三组查看
- rwx: 代表文件拥有者(ower)的权限
- rwx: 代表文件所属组用户(group)的权限
- rwx: 代表其他用户(other)对当前文件的操作权限
- r: 代表read,读的权限
- w: 代表write,写的权限
- x: 代表execute,代表执行权限
其余信息
后续的第一个root或者s1:代表当前文件的拥有者(属主)
后续的第二个root或者qiushiju: 代表当前文件的所属组(属组)
后续分别为:文件的大小和最后修改时间等信息
权限修改
1.数字方式
chmod [-R] 777 文件|目录
# rwx在这三个权限中r:4,w:2,x:1
# -R: 当修改一个目录权限时,可以添加-R,将目录下的全部内容,都修改权限。
2.符号方式
chmod [-R] u=rw 文件|目录
# user:u,group:g,other:o,all:a
# read:r,write:w,execute:x
# 赋予权限的方式 , 添加:+,减掉:-,设定:=
# -R: 当修改一个目录权限时,可以添加-R,将目录下的全部内容,都修改权限。
拥有者及所属组修改
3.修改属主和属组
# 修改文件的拥有者和所属组
chown [-R] 拥有者:所属组 文件|目录
# 修改文件的拥有者
chown [-R] 拥有者 文件|目录
# 修改文件的所属组
chgrp [-R] 所属组 文件|目录
chown root /u 将 /u 的属主更改为"root"。
chown root:staff /u 和上面类似,但同时也将其属组更改为"staff"。
chown -hR root /u 将 /u 及其子目录下所有文件的属主更改为"root"。
-- help
2.6 系统命令
1.查看进程 ps
ps 查看运行的进程
ps -ef | grep mysql 查看mysql的进程有没有启动
2.关闭进程 kill
kill -9 1673 关闭指定进程id的进程
3.查找 find
find / -name “m*” 从根路径开始查找,名称有m的
4.开启服务器监控top
top 开启服务器的实时状态(cpu、内存、磁盘等信息)
5.防火墙
firewall-cmd --state 查看默认防火墙状态
systemctl stop firewalld 临时停止firewall
三、Linux搭建环境
安装的路径都在/usr/local/
3.1 Linux配置Jdk
1.下载jdk
2.上传到服务器/usr/local
3.解压
cd /usr/local
tar -zxf jdk-8u161-linux-x64.tar.gz
4.配置环境变量
vim /etc/profile
在文件的末尾输入一下内容:然后保存退出
JAVA_HOME=/usr/local/jdk1.8.0_161
JRE_HOME=/usr/local/jdk1.8.0_161/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
按ESC退出编辑,:wq保存退出
注意记得把jdk的路径改为自己的
再执行命令,刷新配置文件,让配置生效
source /etc/profile
5.验证是否配置成功
java -version
3.2 Linux配置Tomcat
1.下载tomcat
2.上传到服务器
3.解压
执行命令,实现解压:
tar -zxf apache-tomcat-8.5.28.tar.gz
4.进入tomcat的bin目录下
5.启动测试
执行命令: ./startup.sh
访问测试:http://121.41.33.14:8080/
注意,第一次的使用的需要开放端口号
ps: 修改完不需要重启服务器,自动生效,只需要刷新浏览器继续访问即可
3.3 Linux搭建Mysql
1.设置下载源,提高下载速度
vim /etc/yum.repos.d/mysql-community.repo
输入以下内容:
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=https://mirrors.cloud.tencent.com/mysql/yum/mysql-5.7-community-el7-x86_64/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
2.执行命令,下载Mysql
yum -y install mysql-community-server
下载之后,会自动安装Mysql
3.启动Mysql
- 执行启动命令:
- systemctl start mysqld
- 查看Mysql运行状态:
- systemctl status mysqld
- 停止Mysql:
- systemctl stop mysqld
4.初始化连接
第一次需要连接并重置密码
执行命令查询mysql的初始的随机密码:
grep “password” /var/log/mysqld.log
执行命令,连接mysql
mysql -u root -p
执行sql语句,修改密码:
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘Zyj666…’;
ps: 默认有密码校验策略,要求不能太简单,要求首字母大写,包含小写数字特殊符号
修改连接的ip为%,可以远程连接
update mysql.user set Host=‘%’ where User=‘root’;
退出mysql的连接 exit
执行命令,重启Mysql
systemctl restart mysqld
5.远程连接
打开本地连接工具,实现Mysql连接
ip: 121.41.33.14
账号:root
密码:Zyj666…
将本地项目的数据库同步到云服务器的mysql上
本地导出
云服务器导入
四、Linux部署项目
部署项目到Linux中需要注意一下内容:
- 项目要保证在Windows下是没有问题的,再考虑部署到Linux。
- 将开发环境中的内容更改为linux环境。
- 连接数据库的信息。
- 存放文件的路径。
- 日志文件存放的位置。
- 项目路径问题。
- 将Maven项目打包。
- 根据项目路径的不同,将项目部署到Tomcat中。
- 在部署到Linux操作系统中后,一定要查看日志。
1.同步数据库
需要再Linux的数据库上创建项目的数据库
把本地的数据同步到服务器的数据库上
2.更改项目中数据库连接信息
3.本地测试项目
小bug,云服务mysql的编码格式不是utf-8的,导致中文乱码
可以在连接的url后面设置useUnicode=true&characterEncoding=UTF-8解决问题
4.打包上线
执行Maven的clean—>package
把war重命名为ROOT.war
再把war上传到服务器的tomcat的webapps,并删除webapps下原有的ROOT文件夹
war不需要解压,只需要启动tomcat,自动解压
5.访问测试
http://121.41.33.14:8080
启动mysql,tomcat,