Linux安装Tomcat并部署项目
本文为瑞吉外卖项目的后续内容,在此特别感谢黑马程序员的课程
Linux安装
关于安装这里就不过多介绍了,安装版本是CentOS 7
,选择最小安装
即可
网卡配置
由于启动服务器的时候未加载网卡,所以这里我们要手动修改一下配置文件
- 进入到对应的目录
1 | cd /etc/sysconfig/network-scripts |
- 编辑
ifcfg-ens33
文件
1 | vi ifcfg-ens33 |
- 输入
i
进入编辑 - 修改
ONBOOT=yes
- 按ESC
- 输入
:wq
保存并退出 - 输入
ip addr
,查看到类似下图的ip地址即可
安装SSH连接工具
-
为啥要安装这个呢?
- 因为实际工作的时候,Linux操作系统都是安装在物理机上,而不是像我们现在使用的虚拟机
- 所以我们需要SSH连接工具,远程连接到物理机上
-
这里安装的是
FinalShell
,具体的安装与连接操作,这里就不过多叙述了 -
成功连接之后的效果如图
Linux的目录结构
目录 | 含义 |
---|---|
/bin | 存放二进制可执行文件 |
/boot | 存放系统引导时使用的各种文件 |
/dev | 存放设备文件 |
/etc | 存放系统配置文件 |
/home | 存放系统用户的文件 |
/lib | 存放程序运行所需的共享库和内核模块 |
/opt | 额外安装的可选应用程序包所放置的位置 |
/root | 超级用户目录 |
/sbin | 存放二进制可执行文件,只有root用户才能访问 |
/tmp | 存放临时文件 |
/usr | 存放系统应用程序 |
/var | 存放运行时需要改变数据的文件,例如日志文件 |
Linux常用命令
Linux命令常用技巧
- Tab键自动补全
- 连续按两次Tab键,给出操作提示
- 使用上下箭头快速调出曾经使用过的命令
- 使用Clear命令或者快捷键Ctrl+L实现清屏
Linux命令格式
- Linux命令格式如下
1 | command [-options] [parameter] |
文件目录操作命令
ls
- 作用:显示指定目录下的内容
- 语法:
ls [-al] [dir]
cd
- 作用:用户切换当前工作目录,即进入指定目录
- 语法
cd [dirName]
cat
- 作用:用于显示文件内容
- 语法:
cat [-n] fileName
more
- 作用:以分页的形式显示文件内容
- 语法:
more fileName
tail
- 作用:查看文件末尾的内容
- 语法:
tail [-f] fileName
mkdir
- 作用:创建目录
- 语法:
mkdir[-p] dirName
rmdir
- 作用:删除空目录
- 语法:
rmdir [-p] dirName
rm
- 作用:删除文件或者目录
- 语法:
rm [-rf] name
拷贝移动命令
cp
作用:用于复制文件或目录
语法:cp [-r] source dest
mv
作用:为文件或目录改名、或将文件或目录移动到其它位置
语法:mv source dest
打包压缩命令
tar
作用:对文件进行打包、解包、压缩、解压
语法:tar [-zcxvf] fileName [files]
包文件后缀为.tar
表示只是完成了打包,并没有压缩
包文件后缀为.tar.gz
表示打包的同时还进行了压缩,也可以用.tgz
作为简写
文本编辑命令
vi
作用:vi
命令是Linux
系统提供的一个文本编辑工具,可以对文件内容进行编辑,类似于windows
中的记事本
语法:vi fileName
vim
作用:对文件内容进行编辑,vim其实就是一个文本编辑器
语法:vim fileName
查找命令
find
作用:在指定目录下查找文件
语法:find dirName -option fileName
grep
作用:从指定文件中查找指定的文本内容
语法:grep word fileName
Linux软件安装
软件安装方式
- 二进制发布包安装
- 软件已经针对具体平台编译打包发布,只要解压,修改配置即可
- rpm安装
- 软件已经按照redhat的包管理规范进行打包,使用rpm命令进行安装,不能自行解决库依赖问题
- yum安装
- 一种在线软件安装方式,本质上还是rpm安装,自动下载安装包并安装,安装过程中自动解决库依赖问题
- 源码编译安装
- 软件以源码工程的形式发布,需要自己编译打包
安装JDK
操作步骤:
- 使用FinalShell自带的上传工具将jdk的二进制发布包上传到Linux
- 解压安装包,命令为
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local
- 这个解压缩命令在前面也说过了,注意将jdk换成你自己的版本,
-C /path
是解压到指定目录,不过我们自己安装软件的话,一般都放在/usr/local
目录下
- 这个解压缩命令在前面也说过了,注意将jdk换成你自己的版本,
- 配置环境变量,使用vim命令修改
/etc/profile
文件,或者使用echo
追加文件内容,在文件末尾添加如下配置1
2JAVA_HOME=/usr/local/jdk1.8.0_171
PATH=$JAVA_HOME/bin:$PATH- 追加
echo 'JAVA_HOME=/usr/local/jdk1.8.0_171' >> /etc/profile
echo 'PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile
- 查看
tail /etc/profile
- 追加
- 重新加载profile文件,使更改的配置立即生效
- 命令为
source /etc/profile
- 命令为
- 检查安装是否成功
- 命令为
java -version
- 命令为
- 看到jdk版本号则说明安装成功
1 | [root@localhost local]## java -version |
安装Tomcat
操作步骤:
- 使用
FinalShell
自带的上传工具将Tomcat
的二进制发布包上传到Linux - 解压安装包
- 命令为
tar -zxvf apache-tomcat-7.0.57.tar.gz-C /usr/local
- 命令为
- 进入Tomcat的bin目录启动服务,命令为
sh startup.sh
或者./startup.sh
- 验证Tomcat是否启动成功
- 查看进程
ps -ef | grep tomcat
1
2
3[root@localhost bin]## ps -ef | grep tomcat
root 71967 1 4 16:05 pts/0 00:00:02 /usr/local/jdk1.8.0_171/bin/java -Djava.util.logging.config.file=/usr/local/apache-tomcat-7.0.57/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/apache-tomcat-7.0.57/endorsed -classpath /usr/local/apache-tomcat-7.0.57/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.57/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/apache-tomcat-7.0.57 -Dcatalina.home=/usr/local/apache-tomcat-7.0.57 -Djava.io.tmpdir=/usr/local/apache-tomcat-7.0.57/temp org.apache.catalina.startup.Bootstrap start
root 73174 42704 0 16:06 pts/0 00:00:00 grep --color=auto tomcat - 查看日志
more /usr/local/ apache-tomcat-7.0.57/logs/catalina.out
tail -50 /usr/local/apache-tomcat-7.0.57/logs/catalina.out
- 查看进程
- 停止Tomcat
- 运行Tomcat的bin目录中提供的停止服务的脚本文件shutdowno.sh
./shutdown.sh
sh shutdown.sh
- 结束Tomcat进程
kill -9 71967
- 注意这里的
71967
是Tomcat的进程id
,是我们上面查看进程
查出来的
- 运行Tomcat的bin目录中提供的停止服务的脚本文件shutdowno.sh
防火墙操作
- 查看防火墙状态
- systemctl status firewalld、 firewall-cmd --state
- 暂时关闭防火墙
- systemctl stop firewalld
- 永久关闭防火墙
- systemctl disable firewalld
- 开启防火墙
- systemctl start firewalld
- 开放指定端口
- firewall-cmd --zone=public --add-port=8080/tcp --permanent
- 关闭指定端口
- firewall-cmd --zone=public --remove-port=8080/tcp --permanent
- 立即生效
- firewall-cmd --reload
- 查看开放的端口
- firewall-cmd --zone=public --list-ports
- 查看防火墙状态,这里是running的
1 | [root@localhost ~]## firewall-cmd --state |
- 那我们暂时关闭一下,测试能否访问Tomcat服务器
1 | [root@localhost ~]## firewall-cmd --state |
- 关了之后就能访问了,但是防火墙都没了,不安全
- 但是我们可以只开放一个8080端口
1 | [root@localhost ~]## firewall-cmd --zone=public --add-port=8080/tcp --permanent |
- 并设置立即生效
1 | [root@localhost ~]## firewall-cmd --reload |
- 刷新页面,尝试访问Tomcat服务器,依旧可以正常访问
安装MySQL
检查冲突
检测当前系统中是否安装MySQL数据库
rpm -qa
- 查询当前系统中安装的所有软件
rpm -qa | grep mysql
- 查询当前系统中安装的名称带mysql的软件
rpm -qa | grep mariadb
- 查询当前系统中安装的名称带mariadb的软件
RPM (Red-Hat Package Manager)RPM软件包管理器,是红帽Linux用于管理和安装软件的工具
解决冲突
- 如果发现有
mariadb
,那么我们把它卸载掉rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
- 然后看一下是不是真的卸掉了
rpm -qa | grep mariadb
解压MySQL
- 先创建要解压到的目录
mkdir /usr/local/mysql
- 随后解压
tar -zxvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz -C /usr/local/mysql
- 按顺序安装rpm包
1 | rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm |
启动MySQL
- 查看MySQL服务状态
systemctl status mysqld
- 启动MySQL服务
system start mysqld
- 查看已经启动的服务
netstat -tunlp
netstat -tunlp | grep mysql
- 查看MySQL进程
ps -df | grep mysql
登录MySQL
- 查看日志内容中包含password的行信息
cat /var/log/mysqld.log |grep 'A temporary password is generated'
- 根据查询到的密码来登录MySQL
mysql -uroot -p
- 登录成功之后修改密码
- 设置密码长度最低位数
set global validate_password_length=4;
- 设置密码安全等级低,便于密码可修改为root
set global validate_password_policy=LOW;
- 设置密码为root
set password = password('root');
- 开启访问权限
grant all on *.* to 'root'@'%' identified by 'root';
- 刷新权限
flush privileges;
- 设置密码长度最低位数
外部连接
- 使用Navicat或者SQLyog就可以连接到我们的数据库了,主机名就是ip地址,用户名和密码就是刚刚设置的
安装 lrzsz
操作步骤
- 搜索lrzsz安装包
- yum list lrzsz
- 使用yum命令在线安装
- yum install lrzsz.x86_64
- 安装完后输入
rz
,就会跳出一个窗口,选择文件后即可上传
项目部署
手动部署
操作步骤
- 在IDEA上将项目打包成jar包
- 通过IDEA自带的Maven面板的package指令打包即可
- 打完的包会放在target目录下
- 将jar包上传到linux服务器
- 最好还是创建一个对应的目录
- mkdir
/usr/local/app
- cd
/usr/local/app
- mkdir
- 然后使用
rz
命令上传打包好的jar包
- 最好还是创建一个对应的目录
- 启动项目
java -jar [打包好的jar包名]
- 我这里试着上传了前面做的瑞吉外卖的项目
java -jar reggie-0.0.1-SNAPSHOT.jar
- 检查防火墙
- 确保
8080
和3306
端口是开放的firewall-cmd --zone=public --list-ports
- 确保
- 测试
- 在浏览器访问
ip:端口/路径
- 在浏览器访问
通过Shell脚本自动部署
操作步骤
- 在Linux安装Git
- 列出git安装包
- yum list git
- 在线安装git
- yum install git
- 使用git克隆代码(在此之前随便编写一个boot项目,然后push到仓库里,controller层写一个GetMapping,随便写个方法返回字符串
Shell脚本部署测试
,方便我们启动服务器的时候查看)- git clone [仓库地址]
- 列出git安装包
- 在Linux安装Maven
- 切换到
/usr/local
目录- cd
/usr/local
- cd
- 上传maven的安装包
- 使用
rz
命令
- 使用
- 解压到当前位置
tar zxvf apache-maven-3.5.4-bin.tar.gz
- 编辑配置文件
/etc/profile
vim /etc/profile
- 加入以下两行配置
export MAVEN_HOME=/usr/local/apache-maven-3.5.4
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH - 编辑maven的
settings.xml
- 创建目录
mkdir /usr/local/repo
- 进入到对应目录修改文件
cd /usr/local/apache-maven-3.5.4/conf
vim settings.xml
- 在
settings
标签下加上这句话设置仓库位置
<localRepository>/usr/local/repo</localRepository>
- 创建目录
- 切换到
- 编写Shell脚本(拉取代码、编译、打包、启动)
这部分暂时不需要我们自己写,体验一下用Shell脚本部署就好了
1 | !/bin/sh |
-
为用户授予执行Shell脚本的权限
- 7表示rwx三个权限都有,现在我们把权限都给了方便测试
chmod 777 bootStart.sh
- 7表示rwx三个权限都有,现在我们把权限都给了方便测试
-
执行Shell脚本
./bootStart.sh
-
设置静态ip(可选)
- 首先进入到对应目录
cd /etc/sysconfig/network-scripts/
- 然后编辑
ifcfg-ens33
文件vim ifcfg-ens33
- 修改添加以下内容(改成你自己的子网IP)
BOOTPROTO=static
IPADDR=192.168.28.100
NETMASK=255.255.255.0
NM_CONTROLLED=noDNS1=8.8.8.8
DNS2=8.8.4.4
- 首先进入到对应目录
-
重启网络服务
systemctl restart network