目录
一、认识 Linux
Linux 是一个操作系统,和 windows 是并列的关系
windows 主要是通过图形化界面操作的
linux 主要是通过命令行操作的,这是因为:
1、服务器虽然配置高,但是上面跑的任务工作量大,也没有额外的资源给你运行玉兴界面,服务器要求稳定,Linux 图形化界面经常有 bug
2、嵌入式设备,配置比较低,运行图形化界面也比较吃力
3、android 本身有图形化界面,也稳定好用
二、如何拥有 Linux 环境
如何拥有一个 Linux 环境?
1、使用虚拟机
在电脑上装一个虚拟机软件(使用软件模拟了硬件),在虚拟机上就能够装系统了
但是这种方式没有外网ip,并且 bug 比较多
2、使用物理机
直接把 linux 装到电脑上,但是不建议在自己主要用的电脑上安装
3、使用 wsl
是 windows最近几年弄得一个功能,在 windows 里内置了 linux 内核
但是这个东西不能作为生产环境
4、【推荐方案】云服务器
有外网 ip ,程序部署上去,就可以被外面访问了
首次使用,需要设置初始密码(用户名固定是root)
设置完之后,我们就有了三个信息:ip,用户名(root),密码
然后我们就可以使用终端工具进行登录了,终端工具有很多,我使用的是 xshell
三、常见的 Linux 命令
1、目录相关命令
ls: 查看指定目录中,都有哪些内容
pwd :查看目录当前完整的绝对路径
cd:切换目录
(1)ls
直接输入 ls 是擦好看当前目录中的内容,还可以给 ls 后面加上一个路径(绝对 / 相对),就可以查看指定目录中的内容
这里的 / 指的是根目录
目录,文件,这些内容在机器上,构成了一个 N 叉树结构,/(此电脑)就是树根节点
注意:Linux 上是没有 “盘符” 的概念的,所以不分 C 盘 和 D 盘
/ 的地位,就相当于 java 中的 Object 一样
这里,我们也可以通过 ls -l 来更详细的查看当前文件的内容
相比于直接使用 ls -l,更常用 ll
结果和刚才是一样的
(2)pwd
如果我们在操作文件的时候迷路了,可以通过 pwd 查看绝对路径是什么样的
可以看到,当前我们处于 / 目录下的 root 目录中
pwd 就相当于单击文件资源管理器的地址栏一样的效果
(3)cd
cd 命令能够切换当前所在的目录,就相当于双击某个目录进去
cd: change directory
cd 后面也是可以跟上 绝对路径 或者 相对路径的
绝对路径是以 / 开头的,相对路径是以 . 或者 .. 开头的,其中有时候 . 可以省略
使用 cd 的时候,切换的路径,不一定非要一个字母一个字母的输入,也可以使用 table 键来补全
如果只有一个匹配的选项,就直接补全了,如果有多个选项,此时需要双击 table 来列出所有的匹配结果
2、文件操作相关命令
touch:创建一个空的文件
cat : 查看文件内容
echo :修改文件
(1)touch
创建一个空的文件
no news is good news,没有任何提示就说明成功了
如果出错了,就会有报错信息
当前处于哪个目录下,(pwd的结果是什么),此时文件就创建在哪里
再次通过 ll,就能看到该文件了
(2)cat
查看文件内容
由于当前是一个空的文件,所以什么都没有,此时我们可以通过 echo 来进行写文件操作
(3)echo
修改文件
比如,我们再次使用 > 来修改文件
此时,原先的内容就被新的内容覆盖了
但是如果使用 >> ,就会进行拼接
命令行中,可以通向上方向键找回到之前的历史命令
cat 和 echo 只是非常简单粗暴的读写文件,如果读写内容费差个简单,使用他们没有问题,如果读写内容更加复杂,就需要使用更加强大的编辑器了
vi / vim 就是 linux 上默认自带的 “记事本” 程序
vim 相当于 linux 上默认的记事本,vim 用起来比记事本麻烦一些
在 xshell 上,复制粘贴不是 ctrl + c / ctrl + v 了,ctrl +c 在终端中有特殊的含义:终止当前运行的程序
复制:ctrl + insert
粘贴: shift + insert
3、vim
vim + 文件名 就可以打开文件
怎么退出呢?
先按一个 : 此时光标会来到最下面的一行,再输入一个 q 加回车就可以了
vim 的关键概念:模式
vim 默认进去,是普通模式(normal mode)
普通模式下,键盘的大部分按键,都是特定含义的快捷键
真正进行编辑,则需要进入 插入模式(insert mode)
可以通过输入小写字母 i 进入 插入模式
当左下角提示变长了 INSERT ,此时处在插入模式
vim 主要是引入了海量的快捷键,因此为了支持这么多的快捷键,就需要使用模式来区分
别的编辑器,快捷键主要是通过组合键的方式
按下 esc,又可以回到普通模式了
vim 中的模式有很多种,都是按 esc 回到普通模式
此时 :wq 保存退出即可
如果 vim 没有正确关闭,在下次启动的时候,会报错,提示你上次没正确关闭
可以直接按 D 就是删除未保存的内容,R 就是恢复之前的编辑内容
4、操作目录
(1)mkdir
创建目录
使用 -p 选项可以创建多级目录
(2)rm
删除文件 / 目录
删除文件的时候,会提示你是否确定删除目录,此时按 y 就是确定删除
删除目录,可以使用 -r 选项(递归的删除),f 就是不确认,强制删除
linux 没有回收站,文件删除了,就没有了,因此删除的时候要谨慎
rm -rf / 所有的文件目录都没有了,包括上述的创建目录指令,就只能重装系统了
(3)mv
move 移动 = 剪贴 + 粘贴
mv 不光能移动位置,还能给文件改名
(4)cp
copy 复制 = 复制 + 粘贴
mv 如果移动的是一个目录,此时操作和移动文件没有任何区别
cp 如果拷贝的是一个目录,需要加上一个 -r 选项,表示拷贝递归,否则会报错
其它的命令
grep 字符串查找
ps 查看进程
netstat 查看网络信息
四、部署 java web 程序
要想部署程序,就需要先把对应的环境给搭建好
1、搭建环境
搭建环境,说白了就是安装一些必要的软件
1、jdk
2、tomcat
3、mysql
(1)jdk
jdk 直接室友 包管理器 进行安装(基于 yum 安装)
yum list | grep[关键字] 找到要安装的包名
yum install [包名] 进行安装
| 叫做管道,效果就是把第一个命令的输出,作为第二个命令的输入
yum list 本身是列出所有的可安装的包,但是太多了,使用 grep 筛选一下包含 jdk 关键字的结果
这个,就是我们要安装的包
devel :development 开发 ,x86_64: 64位系统的版本
然后开始下载安装
接下来,这里会出入一个提示:是否确认安装,输入 y 表示确认安装
然后我们再敲 javac ,如果有下列信息,就说明安装成功
(2)tomcat
从官网下载的 .zip压缩包,上传到 linux 上,就可以直接使用了
直接把 .zip 拖拽到 xshell 上即可
此时,就得到了一个压缩包
然后使用 unzip 命令进行解压缩
此时,就解压缩完成了
然后我们进入到 bin 目录中,这里面都是一些启动脚本相关内容
然后我们使用 chmod + x *.sh 操作来给所有的 .sh 文件赋予可执行权限
sh startup.sh 就可以启动 tomcat 了
(3)MySQL
MySQL 的安装参考下面这篇文章:CentOS 7 通过 yum 安装 MariaDB - 知乎 (zhihu.com)
二、部署程序
1、在云服务器的 mysql 中进行建库,建表
云服务器上的博客系统访问的一定是云服务器的数据库,而不是本地电脑的数据库!!!
所以,我们需要在云服务器的 mysql 中进行建库,建表操作
先在云服务器上登录 MySQL:
然后把之前写好的 db.sql 的内容复制粘贴到云服务器 mysql 客户端中,直接执行即可
使用 mysql -uroot 的命令来打开数据库客户端,如果想退出,按 ctrl + d
2、微调代码
本地的数据库,端口号,用户名,密码和云服务器的数据库可能是不同的,所以需要对原本的代码进行一个微调
本地数据库是安装的时候设置的密码,而云服务器的数据库是默认没有密码
所以,我们要在 DBUTile 中修改密码我们可以使用 netstat -anp 命令来显示所有的网络信息,使用 grep 筛选出 mysql 相关内容
然后,可以通过这个方法来查看端口号,再判断代码中是否要更改对应的端口号(一般默认是 3306,所以不用改)
3、打包
使用 maven 进行打包即可,打成 .war 包
在打包前,先对 pom.xml 进行一个微调:设置打包的类型 和打包的名字
然后双击 package 进行打包
打包完成之后,就能在 target 中看到已经打好了的 war 包了
4、把 war 包拷贝到云服务器上的 webapps 目录
在 xshell 中找到 webapps 目录,然后把 war 包拖拽上去即可
要记得启动 tomcat 服务器
然后来到 bin 目录下, 启动 startup.sh
记住:启动这个启动脚本之前,要保证 .sh 文件都是绿色的(有可执行权限)
我们可以使用 netstat 来验证 tomcat 是否启动成功
如果状态是 listen 就是启动成功了,如果不成功,就去 logs 目录下看看日志的报错
然后,就可以在网站上打开了!
一定要牢记一句话:本地能够正确运行,部署到云服务器上,不一定能正确运行!!!
一定要牢记一句话:本地能够正确运行,部署到云服务器上,不一定能正确运行!!!
一定要牢记一句话:本地能够正确运行,部署到云服务器上,不一定能正确运行!!!
这是因为,程序执行的正确性,不仅仅取决于代码,还取决于依赖的数据,配置等环境信息
所以,我们在部署到服务器之后,还要再测试一下代码,如果出现了错误,也是正常的