Linux
除了服务器的操作系统搭建,查询域名对应的服务器是哪种服务器,工具。
Linux 还经常作为嵌入式应用的操作系统,从因特网设备(路由器、交换机、防火墙、负载均衡器)等到专用的控制系统(自动售货机,手机,PDA,各种家用电器)。
特点
- Linux 严格区分大小写
- Linux 中所有的内容都以文件形式保存,包括硬件
- Linux 不靠拓展名区分文件类型:
- 压缩包:.gz、.bz2、.tar.bz2、.tgz 等
- 二进制软件包:*.rpm
- 网页文件:
*.html
、*.php
- 脚本文件:
*.sh
- 位置文件:
*.conf
- 由于可视化界面占用磁盘空间和内存,在服务器中是不会装可视化界面的,使用字符界面。并且存在安全问题。
使用
项目部署步骤:
- 开发人员开发好了功能,自己测试没问题后,提交代码
- 开发人员或者项目组长打包项目,部署到测试环境中
- 测试人员测试刚刚部署在测试环境上的项目
- 如果发现 bug ,则提交给开发人员,开发人员修改了 bug 后,重新提交代码,打包项目,重新部署到测试环境
- 测试人员进行完回归测试,如果没有问题,发出准出报告后,封版
- 运维人员把项目部署到生产环境。
服务器类型:自建服务器(自己买计算机、带宽等)、租用服务器(阿里云、腾讯云等)
公司服务器肯定是在远程的,我们不可能直接操作远程的服务器,使用一些远程连接工具间接的操作远程服务器,这些工具是 SSH 协议工具。
安装 VM
在 vm 中鼠标消失,按 alt + control 可以重新出现。
注意点:
- 需要分区
- 需要将网络设置打开
- 需要将查找符号的配置关闭。
查看 vm 中系统的 ip,
ip add
SSH 协议和工具
浏览器和 tomcat 交互需要 HTTP 协议,tomcat 和 数据库交互需要 jdbc 协议。
SSH 为 Secure Shell 的缩写,建立在应用层基础上的安全协议。SSH 是目前可靠,转为远程登录会话和其他网络服务提供安全性的协议。SSH可以有效防止远程管理过程中的信息泄露。
SSH 工具:scureCRT
本地连接的ip 地址 为网络ip 地址。
VM给宿主机分配的网卡的ip 为 192.168.139.1 VMware 网卡是配置 VMNet8 给本机分配的网络ip。同时,本机也成为宿主机。
对于 Mac 来说 好用的 SSH 工具为 FinalShell
Linux文件管理
在线查询 Linux 命令:http://www.runoob.com/linux/linux-tutorial.html
熟练使用 VI 编辑器,熟练使用文件和目录的操作。
命令提示符基本格式:
root 当前登录用户,localhost 主机名,~ 当前所在目录,# 超级用户的提示符#,普通用户提示符 $,
命令格式:命令[选项][参数]。注意:个别命令的使用不遵循次格式。当多个选项时,可以写在一起,简化选项与完整选项 -a = -all
查勋目录中内容:
ls [选项][文件或目录]
选项:-a 显示所有文件,包括隐藏文件。-l 显示详细信息。 -h 人性化显示文件大小。
ll = ls -l
文件处理命令
pwd 查询所在目录位置
touch 文件名 创建文件,
mkdir 建立目录,mkdir -p[目录名]
cd :change directory
cd ~ 进入当前用户的 home 目录(相当于 win + D)
cd 同上
cd - 进入上次目录
cd .. 进入上一级目录
cd . 进入当前目录
rmdir[目录名],删除空目录。
rm -rf[文件或目录] -r递归删除目录 -f 强制
cp 复制命令。
mv 剪切或改名命令。
mv 源文件 文件夹 => 把源文件剪切到执行的文件夹
mv 源文件 不存在的文件名 => 把文件重命名
mv 源文件 文件夹/不存在的文件名 => 把文件剪切到指定文件夹并重命名
文件搜索命令
whereis ls => /usr/bin/ls 文件位置。
用于需要某个命令的绝对路径时,
PATH 环境变量:定义的是系统搜索命令的路径。
find [搜索范围][搜索条件]
示例:find / -name ‘install.log’
避免大范围搜索,会非常耗费系统资源,find 是在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。
find /root -iname install.log # 不区分大小写
find /root -user root # 按照所有者搜索
find /root -nouser # 查找没有所有者的文件
通配符:*匹配任意内容,?匹配任意字符,[]匹配任意一个中括号内的字符。
1 | find /root -iname 'cangls.a?' |
find /var/log -mtime + 10
查找10天前修改的文件,-10 10天内修改的文件,10 第10天当天修改的文件。
atime 文件访问时间,ctime 改变文件属性时间,mtime 修改文件时间。
字符串搜索命令
grep [选项] 字符串 文件名 ,在文件当中匹配符合条件的字符串。
-i 忽略大小写,-v 排除指定字符串。
帮助命令
man 命令: man ls 查看ls的帮助。
–help 获取命令选项的帮助,
压缩与解压缩命令
.zip
zip 压缩文件名 源文件
zip -r 压缩文件名 原文件夹
-> 一般压缩文件名不能随便起,需要让别人也能看懂 zip结尾。zip -r movie.zip movie/
解压用法:unzip 压缩文件
.gz(重点)
压缩用法: gzip 原文件
压缩为.gz格式的压缩文件,原文件会消失。gzip -r 目录
压缩目录下的所有子文件,但是不能压缩目录。
解压用法:gzip -d 压缩文件
,gunzip 压缩文件
1 | gzip -d cangls.avi.gz |
.bz2
压缩用法:bzip2 源文件
压缩为.bz2格式,不能保留源文件。
注意:bzip2命令不能压缩目录
解压用法:bzip2 -d
压缩文件 bunzip2 压缩文件
.bz2 和 .gz 的区别:
.bz2
和.gz
都是linux 下压缩文件的格式,有点类似 windows 下的.zip 和 .rar 文件。前者比后者压缩率更高,后者比前者花费更少的时间,也就是说同一个文件,压缩后,bz2文件比.gz文件更小,但是.bz2文件的小是以花费更多的时间为代价的。
tar打包
打包命令:tar -cvf 打包文件名 源文件
选项:-c 打包,-v 显示过程,-f指定打包后的文件名。
解打包:tar -xvf 打包文件名,
选项:-x 解打包。
用处:文件夹目录无法通过 bz 打包,所以先将文件夹目录打包为 tar,然后再把 tar 压缩为.bz,解压.bz为tar再解打包为文件夹目录。即 .tar.gz 格式
.tar.gz格式
选项:-z 压缩为.tar.gz
格式
压缩用法 tar -zcvf 压缩包名.tar.gz 源文件
解压用法 tar -zxvf 压缩包名.tar.gz
,tar -zxvf 压缩包名.tar.gz -C 指定目录
关机和重启命令
shutdown [选项] 时间 shutdown -h 10
10分钟之后关机
选项:-c,取消前一个关机命令。 -h 关机。 -r 重启。
使用 shutdown 会在关机的时候帮我们保存数据。
halt、poweroff、init 0。
使用这三个命令不是特别安全,因为不会帮我们保存数据。
杀死进程命令
1 | ps -ef | grep java |
其他命令
磁盘使用情况 df: 选项-h:格式化显示输出磁盘使用情况,
查看操作历史history: 用于显示执行过的历史命令记录
在显示器输出内容: echo
文件查看命令 cat
日志监控命令:tail 默认在屏幕上显示指定文件的末尾10行
查看内存占用:free
查看任务进程:top
Vi编辑器
Vi编辑器的三种模式:
编辑模式(命令模式):所有的机键动作都会理解为编辑整个文档的操作,默认为编辑模式。
输入模式:大部分机键动作会理解为输入的字符。
末行模式:在末行模式,输入很多文件管理命令,如 复制,黏贴,搜索,替换等。
保存退出:wq。不保存退出:q!。
esc 切换末行模式和编辑模式。
命令模式按 u 撤销。
移动光标:h 左移动,i 右移动,j 下移动,k 上移动。
行内跳转:编辑模式,0 跳转到行首,$ 跳转到行尾
行间跳转 末行模式 num:跳转到某一行,G 跳转到最后一行(编辑模式),gg 跳转到第一行(编辑模式)
关闭文件:在末行模式下,wq 保存退出,q!退出不保存。
翻屏操作:在编辑模式下:ctrl + f 向下翻一页,ctrl + b 向上翻一页。
删除命令:dd 删除光标所在行(编辑模式),3dd:从光标开始删除3行(编辑模式),1,4d删除第1到第4行(末行模式)
赋值和粘贴命令:yy 赋值光标所在行(编辑模式),2yy从光标开始赋值2行(编辑模式),p:粘贴命令(编辑模式)
查找和替换:/partern 从前往后查找(末行模式),?parttern 从后往前查找(末行模式),n:下一个匹配的字符串,N上一个匹配的字符串。
文本的替换(末行模式):startNum,endNums/partter/string/gi
startNum 从哪一行,endNum 到哪一行,s/以什么字符开头,/gi 以什么结尾。i表示忽略大小写,g表示全局替换。%s/f/F/gi
忽略全局大小写把 f 替换成 F.,$s/F/f/gi
当前行到结尾把 f 替换成 F
可能遇到的问题
在编辑模式下,没有保存就直接强行退出会出现一个问题,原因是vi 编辑器编辑文件,是重新创建一个文件.swp。然后编辑完后,将 文件.swp 覆盖到原文件上。因此没有保存旧退出,所以当前目录下有一个文件和一个文件.swp。此时只要把 文件.swp删除即可,注意 文件.swp 是隐藏文件。
文件的基本权限
ll命令
操作权限:
chmod u+x 文件名
,chmod a+x 文件名
,chmod u-x 文件名
, chmod a-x 文件名
。
修改文件的所有者: chown 用户名 文件名
修改文件的所属组: chgrp 组名 文件名
sudo权限
编辑 sudo权限指令,visudo,实际上是修改 /etc/sudoers
文件
系统服务管理
防火墙设置
在阿里云安全策略组(只开了80端口),需要在安全策略组中开放8081端口,并不是通过命令操作的,需要在管控台设置。
阿里云服务器的账号密码,ssh 账号密码连接过去,并不是阿里云登录的账号密码。无法在代码中开放防火墙端口。
Linux 应用
软件的安装。后端工具有 rpm dpt,前端工具有 yum。
查找哪个安装包是否安装过:rpm -qa | grep httpd
修改 yum 源为国内。
1 | yum install wget -y |
JDK 的安装
JDK 的安装步骤,
在JDK官网下载对应的 JDK.tar.gz 包tar -zxvf jdk.tar.gz -C /usr/local
修改 JDK 环境变量,
1 | cp /etc/profile /etc/profile_bak |
source /etc/profile
启动 tomcat
/usr/local/apache-tomcat-7.0.100/bin/startup.sh
启动后,会把日志输出到 /usr/local/apache-tomcat-7.0.100/logs/catalina.out
地方。
开放8080端口,
1 | firewall-cmd --zone=public --add-port=8080/tcp --permanent |
持续监控 catalina.out 日志情况。tail -f -n 50(监控最后50行) /usr/local/apache-tomact-7.0.100/logs/catalina.out
MySQL 的安装
https://www.jianshu.com/p/27d0195a38ae
下载地址:https://dev.mysql.com/downloads/mysql/
名称:mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar
将安装包放到 /usr/local/software 下面,查看是否已经安装 mysql
1 | rpm -qa | grep mysql |
解压文件
1 | tar -zxvf mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar -C /usr/local |
执行结果:
1 | [root@localhost software]# tar -xvf mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar |
卸载冲突的 RPM 组件
1 | # 安装mysql组件时出现的依赖错误 |
需要卸载 postfix 和 mariadb-libs 相关组件,使用 rpm -ev xxx
1 | rpm -qa | grep postfix |
安装依赖组件
安装 mysql-community-server-xxx
的时候出现了下面问题
1 | [root@localhost software]# rpm -ivh mysql-community-server-5.7.19-1.el7.x86_64.rpm |
需要安装相应的依赖
- libaio
- net-tools
- perl
1 | yum -y install libaio |
只需要安装下面4个组件
1 | mysql-community-common-5.7.19-1.el7.x86_64.rpm |
因为具有依赖关系,需要按顺序执行 rpm -ivh 文件名
1 | rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm |
1 | [root@localhost software]# rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm |
启动数据库
1 | # 查看mysql是否启动 |
修改密码
mysql 安装完成后没有设置密码,但是 mysql 设置了一个临时密码,在 mysql 的日志中可以知道这个临时密码
1 | grep password /var/log/mysqld.log |
执行过程
1 | [root@localhost ~]# grep password /var/log/mysqld.log |
数据库密码需要满足以下条件,大小写字母,数字和特殊符号
1 | # 登录mysql,之后需要输入密码 |
1 | [root@localhost ~]# mysql -p |
就可以进行数据库操作了
wms 项目的部署
首先删除 tomcat中 webapps/ROOT 下的全部内容。war 包实际上就是 zip,所以只需要 解压缩unzip xx.war
。最后删除 war 包即可,rm -rf xx.war
SpringBoot 项目部署
项目打包时的问题,不是web项目在打包时,pom.xml 文件中不能放入maven插件。
1 | <plugin> |
多模块的情况下,打包时针对父模块进行打包。直接 package 打包
package 和 install 的区别
mvn clean package
依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。mvn clean install
依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。mvn clean deploy
依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库
deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
获得的 jar 包,放到 /usr/local/
目录下,再运行 java -jar 项目
就可以了。