1. Linux背景知识
Linux是一个操作系统,和Windows是"并列"的关系
Linux严格意义来说只是一个"操作系统内核"
一个完整的操作系统=操作系统内核+配套的应用程序

Linux的有优势
- 开源
- 稳定
- 安全
- 自由
- 社区支持
使用云服务器和终端软件(Xshell)
2. Linux常用命令
ls
语法:ls选项目录或文件
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息
常用选项:



pwd
语法:pwd
功能:显示用户当前所在的目录

cd
Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件
语法:cd 目录名
功能:改变工作目录,将当前工作目录改变到指定的目录下
# 返回上级⽬录
cd ..
# 进⼊⽤⼾家⽬录
cd ~
# 返回最近访问⽬录
cd -

认识Linux目录结构
Linux是一个树形目录结构

几个特殊的目录:
/ 称为根目录
. 称为当前目录
.. 称为当前目录的上级目录
使用tab键补全
我们敲的所有的Linux命令,都可以使用tab键来尝试补全,加快效率.
使用 ctrl+c 重新输入
如果命令或者目录敲错了,可以使用Ctrl+c 取消当前的命令
touch
语法: touch 选项...文件...
功能:touch命令参数可以更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件
cat
语法:cat 选项 文件
功能:查看目标文件的内容
常用选项:-n对输出的所有行编号
mkdir
语法:mkdir选项 dirname....
功能:在当前目录下创建一个名为"dirname"的目录
常用选项:
-p, --parents 可以是⼀个路径名称
。此时若路径中的某些⽬录尚不存在,加上此选项后,系统将自动 建立好那些尚不存在的⽬录,即⼀次可以建立多级⽬录
# 递归建⽴多个⽬录
mkdir --p test/test1
rm
语法:rm -f-i-r-v dirName/dir
功能:删除文件或目录
常用选项:
- -f 即使文件属性为只读,亦直接删除
- -i 删除前逐一询问确认
- -r 删除目录及其下所有文件
千万不要运行 rm -rf / ,尤其是在公司的⽣产服务器上
cp
语法:cp 选项 源文件或目录,目标文件或目录
功能:复制文件或目录
常用选项:

mv
语法:mv 选项 源文件或目录 目标文件或目录
功能:

常用选项:

tail
语法:tail 必要参数 选择参数 文件
功能:⽤于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常⽤查看⽇志文件
选项:
-
-f 循环读取
-
-n <行数> 显示行数
tail -10 test1.txt
vim
vim是一个知名的文本编辑器,使用vim可以进行文本编辑
vim相当于Windows的记事本,只不过功能比记事本更强大一些
-
打开文件/创建文件
vim [⽂件名]
-
进入插入模式
vim打开文件默认是普通模式,普通模式下键盘的按键表示一些特殊功能的快捷键,需要进入插入模式才能进行文本编辑
使用 i 键就可以进入到插入模式(左下角提示--INSERT--)
- 保存
在插入模式下不能保存文件,需要先回到普通模式,按下Esc回到普通模式
在普通模式下输入 :w ,再按回车即可保存文件
- 退出
在插⼊模式下不能退出,需要先回到普通模式
①文件未修改: 输入 :q ,再按下回车,即可退出
②文件修改并保存: 使⽤ :wq 同时执行保存和退出.
③文件修改,但不希望保存: 使用 :wq! 进行强制退出
grep
语法:grep 参数...文件...
功能:用于查找文件中释放包含特定字符串,并显示对应的行
选项:

ps
语法: ps 参数...
功能:用于查看当前系统上运行的进程
选项:

ps aux # 显⽰系统上所有的进程
ps aux | grep "进程名"
ps aux | grep "进程id"
netstat
语法: netstat 参数
功能:查看系统上的网络状态
选项:

netstat -anp
netstat -anp | grep "进程名"
netstat -anp | grep "端⼝号"
管道
管道是⼀种古⽼的"进程间通信"方式 | 作为管道标记
在Linux指令中可以使⽤ 意思是将前⼀个指令标准输出的内容,作为第⼆个指令的标准输⼊内容.
ps -ef|grep "java"
ps -ef|head -10
tail -f log.txt|grep "Exception"

3. 部署Web项目到Linux
3.1 什么是部署
工作中涉及到的"环境"
- 开发环境:开发人员写代码用的及其
- 测试环境:测试人员测试程序使用的机器
- 生产环境:(线上环境):最终项目发布时所使用的机器,对稳定性要求很高
把程序安装到生产环境上,这个过程称为"部署",也叫"上线"
部署过程至关重要,属于程序开发中最重要的一环,基友可能导致严重的事故
为了防止部署出错,一般公司内部都有一些自动化部署工具,当前先使用手工部署方法来完成部署
3.2 环境配置
准备好对应的Mysql表格
实际⼯作中,开发环境,测试环境以及⽣产环境的配置都是不⼀样的 ⽐如mysql的⽤⼾名和密码 我们可以针对不同的环境,设置不同的配置

从Maven中读取环境配置的变量
<profiles>
<profile>
<id>dev</id>
<properties>
<profile.name>dev</profile.name>
</properties>
</profile>
<profile>
<id>prod</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profile.name>prod</profile.name>
</properties>
</profile>
</profiles>
修改application.yml
spring:
profiles:
active: @profile.name@
3.3 构建项目并打包


3.4 上传Jar包到服务器
-
上传jar包
//上传文件
sz filename//下载文件
rz问题:如果执⾏上述命令之后,提⽰Command 'XX' not found,表⽰当前云服务器未安装lrzsz 命令,需要先进⾏安装
安装lrzsz
apt-get install lrzsz -
运行程序
java -jar blog-jar
nohup java -jar blog-jar &

nohup:后台运行程序,用于在系统后台不挂断的运行命令,退出中断不会影响程序的运行
Linux 可以通过 > 把需要输出的内容写到指定⽂件中.这样的操作称为"重定向"
- 开放端口号
如果外网需要访问该服务,需要先服务器防火墙开放对应的端口号
3.5 杀掉进程
ps -ef|grep java

kill -9 PID