赞
踩
前面已经把博客前后端分离了,但是使用的IP地址是本地端口,无法在其他主机上访问,要想实现每个主机都能访问,就需要外网IP,这时候就可以使用购买服务器获取外网IP,但是服务器中的操作系统通常都是Linux,所以下面主要介绍如何在Linux上部署项目,首先先了解Linux的基本使用.
Linux和Windows一样都是操作系统,其中一个区别是Linux是命令行页面,而Windows是图形化页面.
Linux是由一个更加古老的操作系统Unix发展出来的.
- 1969-1970 年, 贝尔实验室的 Dennis Ritchie 和 Ken Tompson 开发了 Unix 操作系统
- 这俩大佬本来是想开发一个操作系统, 但是开发着开发着, 发现现有的编程语言不太好使, 于是俩人一合计, 先整个编程语言出来吧. 于是 C 语言 就诞生了 ,Dennis Ritchie 大佬 2011 年就去天堂写代码了. Ken Tompson 大佬后来在 google, 又参与发明了 Go 语言.
- Unix 火了之后, 衍生出很多的分支. 其中有一只为 “Minix”. 由荷兰的Andrew S. Tanenbaum 教授开发. MINIX 含义为 “小型的UNIX”, 源代码开放给大学教学和研究工作
- 1991 年, 还在读大学的 芬兰人 Linus Benedict Torvalds (1969年12月28日出生, 当时 22 岁) 基于Minix 的启发, 开发出了 Linux 的第一个版本
- Linus 在开发 Linux 的时候, 觉得现有的 版本管理工具 并不太方便. 于是开发了一个新的版本管理工具. 也就是现在最广泛使用的 git
在经历这么多年的发展,Linux已经成为世界第一操作系统
可能大家会好奇,Linux怎么没有听说过,下面介绍它的应用场景大家就清楚了
- 服务器: 绝大部分服务器系统都是Linux
- 嵌入式设备,路由器,交换机,冰箱,电视…的大部分系统都是Linux
- 移动端,智能手机,Android就是Linux
Linux严格意义上只是一个操作系统内核,而一个完整的操作系统是由操作系统内核和配套的应用程序组成.
由于Linux是一个完全开源免费的的内核,因此有些公司/开源组织就基于Linux内核,提供不同的配套程序,就形成各种各样的发行版
在企业中使用的发行版是RedHat,但是RedHat是一个收费的发行版,我使用的是CentOS 7这个版本,
CentOS 和 RedHat 的关系
- RedHat一直都提供源代码的发行方式,CentOS就是将RedHat发行的源代码去掉 RedHat 的 logo商标, 重新编译一次.RedHat对这种发行版的态度是:“我们其实并不反对这种发行版,真正向我们付费的用户,他们重视的并不是系统本身,而是我们所提供的商业服务。”所以,CentOS可以得到RedHat的所有功能,甚至是更好的软件。但CentOS并不向用户提供商业支持,当然也不负上任何商业责任 .但是一个不幸的消息CentOS官方已经宣布不在继续维护了.
部署Linux环境可以使用安装虚拟机或者直接安装到物理机上,但是虚拟机技术不成熟不推荐,物理机对不是十分熟悉程序员十分不友好,所以强烈推荐购买服务器.
注: 系统镜像为CentOS 7,如果点错了,可以在控制台中重装系统
大家可以在腾讯云,阿里云,华为云等等服务器厂商中选择价格合适的服务器,由于是作为学习使用,建议买低配置,低价格的服务器.我选择的服务器是腾讯云的,购买完成后就可以在控制台查看服务器状态https://console.cloud.tencent.com/lighthouse/instance/detail?rid=1&id=lhins-e1rkw1t5.
如果要登录到Linux中需要三个重要信息:
- 服务器的外网 IP
- 服务器的管理员账户 (固定为 root)
- 管理员账户密码
- 在左上角中有重置密码的入口
当我们获得以上三个信息后就可以使用终端软件连接到 Linux
终端软件是一类工具软件, 可以和远程的主机建立网络连接, 从而对主机进行一些操作.
常见的终端软件:
我们使用的XShell(下载地址https://www.netsarang.com/en/free-for-home-school/ )
我们下载是家庭/教育版: 免费,下载的时候需要填一下名字和邮箱. 下载链接会被发送到填写的邮箱中
下载好XShell后就可以开始登录服务器了
这里的主机就是在控制台中获取的外网IP
默认为用户名为root
密码刚才设置的密码
解释说明:
- root 代表当前登录系统的用户名(如果以普通用户登录,这里显示的就是普通用户的用户名)
- VM-12-14-contos: 系统的主机名
- ~ :~是Linux上特殊目录,称为home目录,每个用户登录成功后默认进入的目录
- #: #代表当前用户是root用户(管理员),$代表当前是个普通用户
看见这种的就连接成功了
Linux自身提交自身提供了一些 API, 供程序猿调用来完成一些更复杂的编程任务(比如文件操作, 多线程编程,socket 编程等) 但是由于 Java 跨平台的特性, 这部分功能已经被 Java 自身封装好了 (流对象, Thread 对象, Socket 对象等). 所以这部分内容我们不必再学习了,但是我们写的web程序需要被用户访问,就需要使用Linux部署项目,所以下面先学习Linux的基本命令
注: 关于XShell的复制粘贴
复制: ctrl + insert
粘贴: shift + insert
ctrl + c / ctrl + v 在Linux中有其他含义.
解释: Linux中操作手册(Manual - 手册)
语法: man [选项] 命令
常用选项:
- -k 根据关键字搜索联机帮助
- num 只在第num章节找
- man man 能够看到 man 手册中的若干个章节及其含义
举例:
man ls
语法: ls [选项] [目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
- -a 列出目录下的所有文件,包括以 . 开头的隐含文件。
- -d 将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
- -k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
- -l 列出文件的详细信息。
- -r 对目录反向排序。
- -t 以时间排序。
- -R 列出所有子目录下的文件。(递归)
举例:
ls -l 也可以简写为ll
显示文件的操作权限,文件大小,文件创建时间等等信息.
Linux上一切皆文件,通过颜色区分其类别
- 深蓝色: 目录
- 浅蓝色: 快捷方式
- 白色: 普通文件
- 绿色:可执行文件
- …
解释:切换目录/文件
语法: cd 目录名
功能: 改变工作目录。将当前工作目录改变到指定的目录下.
举例:
cd .. : 返回上级目录
cd ~:进入用户目录
cd -:返回最近访问目录
Linux的 目录结构
特殊目录:
- / 称为根目录
- . 称为当前目录
- … 称为当前目录的上级目录
小知识:
- Linux中的可以使用tab键实现类似于代码补全的功能,如果有多个补全结果,就无法补全,但是按两下就会把所以结果集列出来
- 如果命令或者目录写错了,可以使用ctrl + c来取消当前命令
- 输入命令
cd home
和上面的~
是不同的,这里的home
是所以办公区的集合,而~
是指当前用户自己的办公区,而对于root用户的办公区是在/root
目录下
语法: pwd
功能:显示用户当前所在的目录
举例:
pwd
语法: touch [选项]… 文件…
功能: touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
举例 :
语法:cat [选项] [文件]
功能: 查看目标文件的内容
常用选项:
- -n 对输出的所有行编号
cat test.txt
由于当前文件中没有任何内容,所以下面将学习如何写文件
解释: 重定向数据流向
echo "hello world" > test.txt
这里是把"hello world"这个字符串通过重定向输入到文件中然后使用cat命令查看文件内容
echo "鸡你太美"
echo默认显示到控制台
前面解释使用touch,cat,ehco操作文件,下面学习如果操作目录
语法:mkdir [选项] dirname…
功能:在当前目录下创建一个名为 “dirname”的目录
常用选项:
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多级目录
举例:
mkdir -p 111/222/333/444
语法:rm [-f-i-r-v] [dirName/dir]
功能:删除文件或目录
常用选项:
- -f 即使文件属性为只读(即写保护),亦直接删除
- -i 删除前逐一询问确认
- -r 删除目录及其下所有文件
举例:
rm test.txt
输入y表示确认删除,其他则是不删除,也可以使用ctrl + c取消当前命令
rm *.txt
*是通配符,代表删除所有.txt后缀的文件
rm -f *.txt
如果文件很多,不想要一一确认,可以增加选项 -f (force强迫) 强制删除
rm test
rm 无法直接删除目录,因为目录下可能有很多文件/目录,删除该目录后其内部是保留还是删除呢?所以可以使用加上-r(recursion递归删除),删除该目录及其包含的所有内容
注意事项:
第一次学习时,一定要学习
rm -rf /
删库跑路命令,这个命令代表从根目录强制递归删除所有文件.
语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
常用选项:
- -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
- -i 或 --interactive 覆盖文件之前先询问用户
- -r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
- -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
示例:
拷贝目录需要使用 -r选项
语法: mv [选项] 源文件或目录 目标文件或目录
功能:
常用选项
- -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
- -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖
示例:
mv aaa ccc
vim 是一个知名的文本编辑器 ,前面学习的cat只能查看文本,不能编辑文件,使用vim就可以进行编辑了
1)创建文件/打开文件
vim 文件名
2)编辑文件
vim 打开文件后默认是普通模式. 普通模式下键盘的按键表示一些特殊功能的快捷键.
使用 i 键可以进入到插入模式. (左下角提示 --INSERT-- ) 然后就可以像记事本一样正常编辑了
3)保存
在插入模式下不能保存文件, 需要先回到 普通模式 . 按下 Esc 回到普通模式.在普通模式下输入 :w , 再按下回车, 即可保存文件
4)退出
在插入模式下不能退出, 需要先回到 普通模式.在普通模式下输入 :q , 再按下回车, 即可退出.
也可以直接使用 :wq 同时执行保存和退出
语法:grep [参数]… [文件]…
功能:用于查找文件中是否包含指定字符串, 并显示对应的行.
选项:
- -n<行数> 显示的行数
- -w 全字匹配. 要求整个单词都完全相同的结果才能匹配出来, 而不仅仅是一个单词的一部分.
- -r 递归查找. 可以搜索多级目录下的所有文件.
- –color 高亮查找到的结果
- –include 指定查找某些文件
- –exclude 指定排除某些文件
- …
示例:
语法:ps [参数]…
功能:用于查看当前系统上运行的进程
选项:
- a 显示一个终端的所有进程
- u 以用户为主的格式来显示程序状况
- x 显示所有程序,不以终端机来区分
举例:
ps aux
ps aux | grep vim
把后面命令的结果作为前面的输入,grep中可以筛选进程id或者进程名
语法:netstat [参数]…
功能:查看系统上的网络状态.
选项 :
- -a 显示所有正在或不在侦听的套接字
- -n 显示数字形式地址而不是去解析主机、端口或用户名
- -p 显示套接字所属进程的PID和名称
示例:
查看当前所有的网络连接
创建普通用户:
命令 useradd [用户名]
功能 创建新的用户
示例
useradd test
命令 passwd [用户名]
功能 设置或修改用户密码
示例
passwd test
注意, 输入密码的时候, 在控制台中不会有提示. 但实际上已经输入进去了
命令:su [用户名]
功能:切换用户
访问一个文件的用户分为三种类别
使用ll命令中显示一条信息的解释
- 文件类型
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
- 基本权限
读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
“-” 表示不具有该项权限
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
chmod命令权限值的格式
用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
chmod u+w /home/abc.txt
chmod o-x /home/abc.txt
chmod a=x /home/abc.txt
yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat,Centos等发行版上
类似于Linux上的应用商店
常用操作:
yum list | grep jdk
yum install 软件包名
注: 需要管理员权限
yum remove 软件包名
注: 需要管理员权限
输入:
yum install java-1.8.0-openjdk-devel.x86_64
接下来就是静候安装了
可以使用
java -version
查看是否安装成功
在yum上的最新tomcat版本是7,但是建议使用8.5,所以解决方案是在网上下载好zip包,然后拖到Xshell窗口中即可.
下载地址https://tomcat.apache.org/download-80.cgi
如果无法反应,则需要安装一个专门的软件包使用命令
yum install lrzsz
安装
unzip apache-tomcat-8.5.47.zip
如果无法识别unzip这个命令.只需要输入
yum install unzip
即可
先使用命令cd bin
进入bin目录,给.sh的文件都加上可执行权限(startup.bat是windows的启动版本, startup.sh是Linux的启动脚本),使用命令chmod + x*sh
把.sh后缀的文件都加上可执行权限.
然后使用./startuo.sh
后缀sh startup.sh
启动tomcat
方法1: 使用ps查看tomcat的进程是否正常运行
方法2:使用netstat查看8080端口是否被tomcat占用
方法3:在浏览器中输入外网ip+ 8080查看
但是这种方式访问需要设置服务器配置,因为云服务器厂商为了安全,默认情况是禁止外部的客户端访问服务器上的各种端口,如果要开放某个端口,需要在控制台中查看防火墙中添加规则
因为使用的tomcat只需要开放8080端口
成功后:
yum 上的是 MariaDB, 和纯正的 MySQL 还不太一样.
MariaDB 和 MySQL 的关系, 类似于 CentOS 和 RedHat 的关系. 从使用角度上, MariaDB 和MySQL 之间都是兼容的
注:
- 以上操作需要root权限
- 默认情况MariaDB是没有密码的,所以在使用JDBC连接数据库时的密码为
""
空字符串- 创建数据库时请指定字符集
在博客系统中的
db.sql
复制粘贴到数据库中执行.注: 请指定字符集
create database if not exists blog_system charset utf8mb4;
- 1
由于没有Smart tomcat使用,所以要手动打包,在打包之前先修改一些我们需要的
<packaging>war</packaging> <build> <finalName>blog_system</finalName> </build>
- 1
- 2
- 3
- 4
点击打包
和之前操作一样,直接拖.然后tomcat会自动解压war包
大家可以访问登录页面康康, 用户名admin 密码123
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。