Linux学习
一.Linux介绍
1.1 引言
开发环境: Win10 / Mac, 开发环境会安装大量软件, 会导致环境的稳定性和安全性降低.
生产环境: 程序运行的环境, 供用户使用. 有专业的维护人员, 一般人没有权限去操作
测试环境: 一般是克隆一份生产环境, 会将开发环境中的程序部署到测试环境中, 这个环境的主要目的是对程序进行检测, 收集程序中的各种问题, 交给开发人员进行修改.
生产环境中, 常用的操作系统: Linux, Win Service, Unix 等
Linux操作系统现在已经成为后台开发人员必备的技能, 后期学习的各种知识都会涉及到Linux操作系统.
1.2 Linux介绍
在Linux操作系统出现之前, 还有一个OS, 叫做Minix, Minix操作系统是由Andrew教授研发出来. 最初是为了给学生上课, 参考 Unix, 自己写了一个操作系统, 并且命名为Minix. 同时将Minix开源. 供学校内部的研究和教学. 到2000年, Andrew将Minix操作系统完全对外开源.
Minix 由于完全对外开源后,在互联网上迅速传播, 但大家在使用时, 发现Minix不是很完美, 内部存在各种问题.用户将问题解决后, 编写了一个补丁, 将补丁以 e-mail发送给Andrew, 但是Andrew教授最初目的只是为了教学和研究.
与此同时,一位芬兰大学生Linus,在Minix基础上,自己添加了一些补丁和插件, 将其命名为Liunx操作系统, 并且完全对外开源, 并开始了Linux维护.
Git 也是 Linus 研发的.
1.3Linux内核版本
1.Linux的内核版本
2.Linux的发行版本
1.4 Linux和Windows区别
Linux是严格区分大小写的, Windows无所谓.
Linux中一切皆是文件.
Linux中文件没有后缀的, 但是他有一些约定俗成的后缀
tar, tar.gz: 压缩包; conf: 配置文件 ....
Windows下的软件一般是无法直接运行在Linux中.
我们在学习Linux时, 参考Windows下做了什么, 就在Linux中做什么.
二.Linux安装
安装Linux, 需要一个虚拟机来搭建
1.推荐软件: VMware 或 Virtual Box
2.需要一个Linux镜像文件: Cent OS 7
3.安装一个连接Linux的图形化界面: Xterm, SSH, XShell (选用: Xterm)
2.1 安装VMware
傻瓜式安装
2.2 安装Xterm
解压即可使用
2.3 Vm中安装Linux
选择新的虚拟机, 典型, 下一步
选择稍后安装OS
选择Linux, 并且选中 CentOS 7
自定义虚拟机名称 和 安装位置
拆分成多个文件存储
编辑虚拟机设置
7.开启虚拟机, 开始CentOS 7 的安装,设置语言项
配置安装位置, 网络和主机名(开启即可)
开始安装后, 设置ROOT用户的密码
安装成功, 并成功登录
2.4 使用Xterm 连接 Linux
通过 ip a 的命令, 查看当前Linux的ip地址, 通过Xterm连接
打开Xterm, 选择左上角 Session, 选择 SSH 连接方式, 输入查询到的 Linux 的 ip 地址, 再输入用户名: root[你自己的用户角色], 确定.
-
输入密码, 敲击回车确认
-
三.Linux基本操作
3.1 Linux的目录结构
Windows的目录结构是带有盘符的. D: C: E:
在Xtrem中输入 ls / 查看 Linux的顶级目录
Linux 目录树状图
root: 该目录为系统管理员 HOME 目录
bin: 这个目录下放置着经常使用的命令
boot: 这里存放的是启动Linux时的一些核心文件
etc: 存放系统关系所需要的配置文件和子目录
home: 普通用户的 HOME 目录
usr: 默认安装软件的目录, 类似 Windows 中的 Program Files 目录
opt: 主机额外安装软件摆放的目录
P.S: Linux 中文件引用, 建议写为相对位置, 方便应用使用, 查找
3.2 获取Linux中的信息
#1.我是谁
who am i
#2.我在哪, 返回当前用户所在文件位置
pwd
#3.查看 ip 地址
ip a | ip address
#4. 清屏
clear
#5. ping 域名| ip
ping 地址
#6. 强制停止
Ctrl + C
四.Linux命令
Linux 中的命令基本格式: 命令[选项] [参数]
需要注意, 个别命令时不遵循这种格式
当命令中有多个选项时, 可以写在一起, 并且选项也是有简写方式。 命令 -选项A -选项B
4.1 目录的命令
# 1. 列出目录
ls [-a -l -d] 目录名 ; 多个选项写法: ls -al
# 目录名不填写, 默认为当前目录
# -a:列出全部文件, 包括隐藏文件
# -l:列举出全部的信息
# -d:仅查看目录本身
# 2.切换目录
cd 具体路径 | 符号
# 路径可以填写的内容
符号 | 表达的路径 |
---|---|
. | 当前目录 |
.. | 上一级目录 |
/ | 根目录 |
~ | 当前登录用户的 HOME 目录 |
— | 返回 |
# 3.创建目录
mkdir [-p] 目录名
# -p:代表创建多级目录时, 使用
# 4.删除目录
rmdir 目录名
# 只能删除空目录
rm [-rf] 目录名
# 删除非空目录
# -r:代表递归删除目录下的全部内容
# -f:不询问,直接删除
# 5.复制目录
cp -r 来源目录 目标目录
# -r:代表递归复制目录下的全部内容
# 6.移动、重命名
重命名: mv 目录名 新目录名
移动: mv 目录名 路径
# 如果第二个参数不存在, 就是重命名, 如果第二餐参数的路径存在, 就是移动
4.2 文件的命令
# 1.创建文件
touch 文件名
touch 文件名1 文件名2
# 2.编辑文件
vi 文件名 # 查看文件。(查看模式)
i | a | o # 进入编辑模式。(编辑模式)
# i:在当前光标处,进入编辑模式。
# a: 在当前光标后一格,进入编辑模式。
# o: 在当前光标下一行,进入编辑模式。
esc # 推出编辑模式, 回到查看模式
: # 从查看模式进入到低行命令模式。(底行命令模式)
# 在底行命令模式下,输入 wq: 保存并退出 ; 输入 q! : 不保存并退出
# 在查看模式下, 摁ZZ【两下大写的Z】, 可以快速保存并退出
# 3.在编辑文件时的其他操作 # 在底行命令模式下, 可以输入的内容 set nu # 查看文件的行号 to 行号 # 快速跳转到指定行 set nonu # 取消行号 # 直接在查看模式下输入 /具体内容 # 类似 Windows 下的 Ctrl+F 搜索文件中具体内容所在位置, 按下n:next,查看下一个
# 4.查看文件 cat 文件名 # 从第一行看是查看文件内容, 展示全部 tac 文件名 # 从最后一行开始展示 nl 文件名 # 显示文件的同时,展示行号 more 文件名 # 查看大文件时,可以一页一页的向下翻 # 摁 空格【space】 继续向下查看 # 摁 字母q 快速退出 less 文件名 # 查看大文件时,可以任意的向上或者向下翻 # 方向键 上,下 :滑动; pgup, pgdn:上一页,下一页 # 摁 字母q 快速退出 head 文件名 # 只查看前几行 tail 文件名 # 只查看后几行 # tail -f 日志文件, 监控日志文件最新的几行
# 5.移动或重命名文件 mv 文件名 新文件名 mv 文件名 目录
# 6.复制文件 cp 文件 目录
# 7.删除文件 rm [-f] 文件名 # -f:是否询问
4.3针对压缩包的操作
Linux中常用的压缩包,大多是 .tar ,.tar.gz , tgz 的。
但是Linux不仅仅针对 tar 类型的压缩包, 也支持 zip,rar 这种 Windows下的压缩包。
4.3.1 针对 tar 命令
# 针对tar类型的压缩包操作 # 1.解压压缩包 tar -[zxvf] 压缩包名称 [-C 路径] # -z:代表压缩包后缀是 .gz 的 # -x: 代表解压 # -v: 代表解压时,打印详细信息 # -f: -f选项,必须放在所有选项的最后,代表指定文件名称 # -C【大写C】 路径:代表将压缩包内容解压到指定路径 # 2.打包压缩包 tar [-zcvf] 压缩包名称 文件1 文件2 目录1 目录2 # -c: 代表打包
4.3.2 针对 zip 压缩包
Linux 默认不支持 zip 压缩格式
安装两个软件:
zip,unzip
yum -y install zip
yum -y install unzip
# 解压 unzip 压缩包名称 # 打包 zip 压缩包名称 文件1 文件2 目录1 目录2 。。。
4.4 用户 & 用户组的操作
Linux 是一个多用户的操作系统,任何一个用户想要操作Linux操作系统,必须向系统管理员申请一个账号才可以使用,以这个账号的身份去操作Linux
用户的帐号一方面可以帮助系统管理员追踪当前用户的操作。另一方面可以控制当前用户对系统资源的访问。
4.4.1 用户的操作
# 1.创建用户 useradd [-cgd] [选项指定的具体内容] 用户名 # -c: comment, 给用户添加注释 # -g: group,修改用户所在分组 # -d: direct,指定用户的 HOME 目录
# 2.设置密码 passwd 用户名
# 3.切换用户 su【switch user】 用户名 # [root@localhost ~]# ---> root用户在本地登录,并且当前在 ~ 目录下, #:代表超级管理员 # [qf@localhost ~]$ ---> qf 用户在本地登录,并且当前在 ~ 目录下, $:代表是普通用户
# 4.删除用户 userdel [-r] 用户名 # -r: 代表删除用户的同时,删除该用户的 HOME 目录 P.S: 若出现进程被占用情况,Ctrl+D 或 exit命令 退出用户。
# 5.修改用户信息 usermod [-cgd] [选项指定的具体内容] 用户名 # -c: comment, 给用户添加注释 # -g: group,修改用户所在分组 # -d: direct,指定用户的 HOME 目录
4.4.2 用户组操作
# 1.创建用户组 groupadd 用户组名 # 查看用户所在组 groups 用户名
# 2.修改用户组 groupmod [-n] [选项指定的具体内容] 用户组名 # -n:修改用户组名称
# 3.删除用户组 groupdel 用户组名 # 只能删除 空用户组
4.5 文件权限的修改
在 Linux 中输入 ls -l 或 ll 查看文件和目录的详细信息
实例中, a目录的第一个属性用 “d” 标识这个 a是一个目录。
anaconda-ks.cfg 第一个属性用 “-” 标识它是一个文件
在 Linux 文件详情的后面属性需要分为 三组【三个 rwx 】 查看
rwx:代表文件拥有者的权限
rwx:代表文件所属用户组的权限
rwx:代表其他用户对当前文件的操作权限
r:read,代表 读 的权限
w:write,代表 写 的权限
x:execute,代表 执行 的权限
后续的第一个 root: 代表当前文件的拥有者
后续的第二个 root: 代表当前文件的所属组
后续分别为: 文件的大小和最后修改时间
4.5.1 对文件的权限修改
使用 chmod 对文件的权限进行修改,一种是使用数字,一种是使用符号
# 1. 数字方式 chmod [-R] 1~7(写三个数字) 文件|目录 # rwx 在这三个权限中: 000~111 , r:4,w:2,x:1; rwx一共三组, 所以要写三个数字 # -R:修改一个目录权限时,可以添加 —R,将目录下的全部内容,都修改权限
# 2.符号方式 # user:u, gruop:g,other:o, all:a # read:r, write:w, execute:x # 赋予权限的方式 # 添加: +, 减掉 -, 设定: = chmod [-R] a=rw 文件|目录 “为全部用户提供指定 文件 或 目录 读和写的权限”
4.5.2 对文件的拥有者和所属组修改
# 修改文件的拥有者和所属组 chown [-R] 拥有者: 所属组 文件|目录 # 修改文件的拥有者 chown [-R] 拥有者 文件|目录 # # 修改文件的所属组 chgrp [-R] 所属组 文件|目录
4.6 Linux的其他命令
# 1.进程的操作 ps -ef # 查看全部正在运行的进程 ps -ef | grep 搜索的内容 # 杀死进程 kill -9 pid
# 2.服务的操作 针对服务的启动,停止,重启,开机自动启动,禁止开机自动启动,查看服务状态。 systemctl start|stop|restart|enable|disable|status 服务名称
# 3.查看端口号占用情况 # 想使用指定的命令需要事先下载 netstat # yum -y install net-tools # 查看端口号占用情况 netstat -naop | grep 端口号
# 4.访问地址 curl 访问地址
# 5.查找文件 find 路径 -type f | grep profile
找到 /etc 下面这么多都和 profile 有关的文件
五.Linux下安装软件
5.1 安装JDK
# 1. 下载JDK的压缩包 下载地址: https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html # 需要登录 Oracle 账户后才可以下载
# 2.将下载好的jdk压缩包拉取到Linux 操作系统中 # 通过 Xterm 携带的Sftp 将 jdk 压缩包拖拽到 Linux 操作系统
# 3.将 jdk 的压缩包解压到 /usr/local tar -zxvf jdk-8u261-linux-x64.tar.gz -C /usr/local
# 4. 将jdk的目录名修改 cd /usr/local 重命名jdk:mv jdk1.8.0_261/ jdk/
# 5.配置环境变量 # Linux 提供了两种环境变量的文件 # 第一个是用户级别的环境变量, 存放在:~/.bashrc # 第二个是系统级别的环境变量, 存放在: /etc/profile # 如果要运行当前目录下的可执行文件, 需要输入: ./可执行文件名 在环境变量文件中,添加如下内容: export JAVA_HOME=/usr/local/jdk export PATH=$JAVA_HOME/bin:$PATH # 重新加载环境变量文件 source /etc/profile # 最终测试 java -version : 观察是否正确显示出java 版本号信息
5.2 安装MySQL
# 1.安装MySQL的 Yum 存储库 # 首先通过 yum 下载 wget 命令 yum -y install wget # 通过wget 下载 MySQL存储库 wgt https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
# 安装下载好的 rpm 包 # 安装 rpm 包 rpm -Uvh rpm包 例如: rpm -Uvh mysql80-community-release-el7-3.noarch.rpm # 查看 rpm 包 rpm -qa | grep 内容 # 卸载 rpm rpm -e --nodeps rpm名称: 例如:rpm -e --nodeps mysql80-community-release-el7-3.noarch
# 3. 选择发行版本 # 查看一下默认选择的发行版本 yum repolist all | grep mysql # 通过编辑 /etc/yum.repos.d/mysql-community.repo 文件, 来修改发行版本 # 将 80 版本的 enable 更改为 0; 将 57版本的 enable 更改为 1; 保存退出, 再次通过 yum repolist all | grep mysql 查看
效果如上图,则修改完成
# 4.安装MySQL 社区版服务 yum -y install mysql-community-server
# 5. 启动 MySQL 服务, 并连接 # 启动 MySQL 服务 systemctl start mysqld.service # 查看初始化密码 grep 'temporary password' /var/log/mysqld.log # 连接 MySQL 服务 mysql -u root -p Enter password:随机密码 # 修改密码 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'P@ssw0rd'; # 要求密码,必须携带大写字母,小写字母,数字,特殊符号
# 6.开启远程连接,并使用图形化界面操作 mysql> GRANT ALL PRIVILEGES ON *.* TO 'eric' @'%' IDENTIFIED BY 'P@ssw0rd' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES;
5.3安装Tomcat
# 1. 下载安装 Tomcat的压缩包 wget https://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.57/bin/apache-tomcat-8.5.57.tar.gz
# 2. 解压压缩包到 /usr/local tar -zxvf apache-tomcat-8.5.57.tar.gz -C /usr/local
# 3. 启动 Tomcat 并监听日志 # 跳转到 Tomcat 的 bin 目录 cd /usr/local/apache-tomcat-8.5.57/bin # 启动 ./startup.sh # 监控日志 cd .. /logs tail -f catalina.out # 启动成功如下
六. 部署SSM工程
部署项目到 Linux 中,需要注意以下内容:
1. 项目要保证在 Windows 下是没有问题的,再考虑部署到 Linux。
将开发环境中的内容更改为测试环境。 1. 连接数据库的信息。 2. 存放文件的路径。 3. 日志文件存放的位置。 4. 项目路径问题。
将Maven项目打包。【war包】
根据项目路径的不同,将项目部署到 Tomcat 中。