Linux安装常用的软件(jdk,MySQL,nginx)并完成对前后端项目的部署发布
linux软件安装:
安装方式介绍:
二进制发布包安装:
- 软件已经针对具体平台编译打包发布,只要解压,修改配置即可
rpm安装:
- 软件已经按照redhat的包管理规范进行打包,使用rpm命令进行安装,不能自行解决库依赖问题
yum安装:
- 一种在线软件安装方式,本质上还是rpm安装,自动下载安装包并安装,安装过程中自动解决库依赖问题
源码编译安装:
软件以源码工程的形式发布,需要自己编译打包
安装JDK:
操作步骤:
- 1,使用FinalShell自带的上传工具将要jdk,的二进制发布包上传到Linux。
- 2,解压安装包,命令位 tar -zxvf jdk-21_linux-x64_bin.tar.gz -C /usr/local
- 3,配置环境变量,使用vim命令修改 /etc/profile文件,在文件末尾加入如下配置:export JAVA_HOME = /usr/local/jdk-21.0.1 export PATH=$JAVA_HOME/bin:$PATH
- 4,重新加载profile文件,使更改的配置立即生效,命令为source /etc/profile
- 5,检查安装是否成功,命令为java -version
把要安装的软件包上传到,Linux中。
cd ~ 进入到 root目录,然后,点击上传的按钮开始上传。

[root@bogon /]# cd ~
[root@bogon ~]#
召唤底栏出现:

看下效果:
隐藏底栏:

看下效果:

点击开始上传:

寻找文件:

看一下过程:
上传成功,点击刷新查看。

这次三个都看到了:

1,解压jdk安装包:
- 执行如下指令,将上传上来的压缩包进行解压,并通过-C参数指定解压文件存放目录为 /usr/local。
tar -zxvf jdk-21_linux-x64_bin.tar.gz -C /usr/local/

代码:
[root@bogon ~]# ll
总用量 779004
-rw-------. 1 root root 1241 12月 29 21:29 anaconda-ks.cfg
-rw-r--r--. 1 root root 197226694 12月 29 21:32 jdk-21_linux-x64_bin.tar.gz
-rw-r--r--. 1 root root 599400444 12月 29 21:32 mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
-rw-r--r--. 1 root root 1062124 12月 29 21:32 nginx-1.20.2.tar.gz
[root@bogon ~]# tar -zxvf jdk-21_linux-x64_bin.tar.gz -C /usr/local/
解压成功:

到 /usr/local目录查看:

[root@bogon ~]# cd /usr/local
[root@bogon local]# ll
总用量 0
drwxr-xr-x. 2 root root 6 4月 11 2018 bin
drwxr-xr-x. 2 root root 6 4月 11 2018 etc
drwxr-xr-x. 2 root root 6 4月 11 2018 games
drwxr-xr-x. 2 root root 6 4月 11 2018 include
drwxr-xr-x. 9 root root 136 12月 29 21:34 jdk-21.0.1
drwxr-xr-x. 2 root root 6 4月 11 2018 lib
drwxr-xr-x. 2 root root 6 4月 11 2018 lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 libexec
drwxr-xr-x. 2 root root 6 4月 11 2018 sbin
drwxr-xr-x. 5 root root 49 12月 29 21:25 share
drwxr-xr-x. 2 root root 6 4月 11 2018 src
[root@bogon local]#
2, 配置环境变量:
使用vim命令修改/etc/profile文件,在文件末尾加入如下配置
具体操作如下:
1). 编辑/etc/profile文件,进入命令模式
vim /etc/profile2). 在命令模式中,输入指令 G , 切换到文件最后
G3). 在命令模式中输入 i/a/o 进入插入模式,然后切换到文件最后一行
i4). 将上述的配置拷贝到文件中
export JAVA_HOME=/usr/local/jdk-21.0.1
export PATH=$JAVA_HOME/bin:$PATH
5). 从插入模式,切换到指令模式
ESC
6). 按:进入底行模式,然后输入wq,回车保存
:wq
export JAVA_HOME=/usr/local/jdk-21.0.1
export PATH=$JAVA_HOME/bin:$PATH
使用vim开始编辑:

[root@bogon local]# vim /etc/profile
成功进入:

进入插入模式:

配置jdk:

export JAVA_HOME=/usr/local/jdk-21.0.1export PATH=$JAVA_HOME/bin:$PATH
进入命令行模式:

进入低行模式,输入 wq保存并退出:

3,重新加载profile文件:
为了使更改的配置立即生效,需要重新加载profile文件,执行命令:
source /etc/profile
重新加载:

[root@bogon /]# source /etc/profile
[root@bogon /]#
4,检查安装是否成功:
和window里面检查方式一样:
java -version
[root@bogon /]# source /etc/profile
[root@bogon /]# java -version
java version "21.0.1" 2023-10-17 LTS
Java(TM) SE Runtime Environment (build 21.0.1+12-LTS-29)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.1+12-LTS-29, mixed mode, sharing)
[root@bogon /]#
安装MySQL:
1,准备工作:
- 在安装MySQL数据库之前,我们需要先检查一下当前Linux系统中,是否安装的有MySQL的相关服务(很多linux安装完毕之后,自带了低版本的mysql的依赖包),如果有,先需要卸载掉,然后再进行安装。
A. 通过rpm相关指令,来查询当前系统中是否存在已安装的mysql软件包,执行指令如下:
rpm -qa 查询当前系统中安装的所有软件
rpm -qa | grep mysql 查询当前系统中安装的名称带mysql的软件
rpm -qa | grep mariadb 查询当前系统中安装的名称带mariadb的软件
- 通过rpm -qa 查询到系统通过rpm安装的所有软件,太多了,不方便查看,所以我们可以通过管道符 | 配合着grep进行过滤查询。
- 通过查询,我们发现在当前系统中存在mariadb数据库,是CentOS7中自带的,而这个数据库和MySQL数据库是冲突的,所以要想保证MySQL成功安装,需要卸载mariadb数据库。
RPM介绍:
RPM:全称为 Red-Hat Package Manager,RPM软件包管理器,是红帽Linux用于管理和安装软件的工具。
1,卸载linux自带的一些其他数据库:

[root@bogon /]# rpm -qa | grep mysql
[root@bogon /]#
[root@bogon /]# rpm -qa | grep mariadb
mariadb-libs-5.5.64-1.el7.x86_64
[root@bogon /]#
查到了一个 mariadb数据库,进行删除。
那么,我们就可以通过指令,卸载 mariadb,具体指令为:
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
[root@localhost /]# rpm -qa | grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
[root@localhost /]# rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
我们看到执行完毕之后, 再次查询 mariadb,就查不到了,因为已经被成功卸载了。
2,解压MySQL数据库:
执行如下命令:
tar -xvf mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
代码:
[root@localhost ~]# tar -xvf mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
解压成功:

把解压好的文件夹移动到/usr/local目录下,并改名为mysql
mv mysql-8.0.30-linux-glibc2.12-x86_64 /usr/local/mysql
cd /usr/local/mysql
1,先移动,并重命名:

[root@localhost ~]# mv mysql-8.0.30-linux-glibc2.12-x86_64 /usr/local/mysql
2,进入到刚刚移动到的文件夹:

[root@localhost ~]# cd /usr/local/mysql
[root@localhost mysql]# ll
3,配置系统环境变量:
1,配置MySQL的环境变量, 通过vi编辑器编辑 /etc/profile 文件, 在尾部追加:
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH
2,并执行如下指令, 注册MySQL为系统服务:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chkconfig --add mysql
配置环境变量:
执行: vim /etc/profile

进入插入模式,复制要配置的信息:

注册MySQL为系统服务:

代码:
[root@localhost mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
[root@localhost mysql]# chkconfig --add mysql

配置完成之后,让配置文件立即生效:

[root@localhost mysql]# source /etc/profile
[root@localhost mysql]#
4,初始化数据库:
#创建一个用户组, 组名就叫mysql
groupadd mysql
#创建一个系统用户 mysql, 并归属于用户组 mysql ,
useradd -r -g mysql -s /bin/false mysql
#初始化mysql:
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
执行上述指令时, 会输入如下日志,在日志中就输出了MySQL中root用户的一个临时密码【记得复制出来,记录下来】:
1,创建一个叫mysql的用户组:

[root@localhost mysql]# groupadd mysql
[root@localhost mysql]#
创建一个系统用户mysql,并归属于mysql组:

[root@localhost mysql]# useradd -r -g mysql -s /bin/false mysql
[root@localhost mysql]#
2,初始化MySQL:

[root@localhost mysql]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/datav9_Krfsu%-lT
5,启动MySQL:
1,启动MySQL服务
systemctl start mysql
[root@localhost mysql]# systemctl start mysql
[root@localhost mysql]#
2,通过临时密码登录MySQL数据库:
#xxxxx 代表上述生成的root的临时密码
mysql -uroot -pxxxx
[root@localhost mysql]# mysql -uroot -pv9_Krfsu%-lT
6,配置MySQL:
1,修改root用户的密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
注意: 这个root账号仅仅能够在本机localhost上访问,我们在windows上是无法访问的。如果需要在window上或其他服务器上也能远程访问,需要创建一个账号,用于远程访问的。
2,创建账号, 并授权远程访问:
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'root';
Query OK, 0 rows affected (0.01 sec)mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
Query OK, 0 rows affected (0.00 sec)mysql> FLUSH PRIVILEGES;
我们已经开启了MySQL的远程访问的权限,为什么还是连接不上MySQL服务器呢?? 这是因为Linux系统的防火墙,将我们的访问拦截了。

C:\Users\13598>mysql -h192.168.70.129 -P3306 mysql -uroot -proot
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.70.129:3306' (10060)C:\Users\13598>
7,配置防火墙操作:
Linux系统安装完毕后,系统启动时,防火墙自动启动,防火墙拦截了所有端口的访问。接下来我们就需要学习一下,如何操作防火墙,具体指令如下:
| 操作 | 指令 | 备注 |
|---|---|---|
| 查看防火墙状态 | systemctl status firewalld / firewall-cmd --state | |
| 暂时关闭防火墙 | systemctl stop firewalld | |
| 永久关闭防火墙(禁用开机自启) | systemctl disable firewalld | 下次启动,才生效 |
| 暂时开启防火墙 | systemctl start firewalld | |
| 永久开启防火墙(启用开机自启) | systemctl enable 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 |
注意: 要想在windows上能够访问MySQL,需要开放防火墙的3306端口 或者 直接关闭防火墙 ,执行如下指令:
#开放防火墙的3306(mysql)端口号
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#开放防火墙的8080端口号
firewall-cmd --zone=public --add-port=8080/tcp --permanent
#重新加载
firewall-cmd --reload#查看开放的端口号
firewall-cmd --zone=public --list-ports
开放 防火墙3306端口号

[root@localhost mysql]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
[root@localhost mysql]#
重新加载:

[root@localhost mysql]# firewall-cmd --reload
success
[root@localhost mysql]#
查看开放端口号:

[root@localhost mysql]# firewall-cmd --zone=public --list-ports
3306/tcp
[root@localhost mysql]#
在window里面重新测试一下:
mysql -hxxxx -Pxxxx -uxxxx -pxxxx
-h后面跟的是 ip地址
-P后面跟的是端口号
-u后面跟的是用户名
-p后面跟的是密码

C:\Users\13598>mysql -h192.168.70.129 -P3306 -uroot -proot
通常我们都是直接关闭防火墙:

[root@localhost mysql]# systemctl stop firewalld
[root@localhost mysql]#
查看防火墙的状态:

systemctl status firewalld
开启防火墙:

[root@localhost mysql]# systemctl start firewalld
[root@localhost mysql]# systemctl status firewalld
我们还是选择永久关闭防火墙:

[root@localhost mysql]# systemctl disable firewalld
[root@localhost mysql]#
最后在看一次防火墙的状态:
永久关闭防火墙:
[root@localhost mysql]# systemctl status firewalld
安装Nginx:
Nginx的安装包,从官方下载下来的是c语言的源码包,我们需要自己编译安装。具体操作步骤如下:
1)安装Nginx运行时需要的依赖:
yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel

[root@localhost mysql]# yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel
安装C语言的编译环境:
yum install gcc-c++

[root@localhost mysql]# yum install gcc-c++
2)上传Nginx的源码包:前面的步骤我们已经上传过了。

3)解压源码包到当前目录:
tar -zxvf nginx-1.20.2.tar.gz

[root@localhost ~]# tar -zxvf nginx-1.20.2.tar.gz
4)进入到解压目录后,执行命令:
#进入解压目录
cd nginx-1.20.2#执行命令配置, 生成Makefile文件
./configure --prefix=/usr/local/nginx

[root@localhost ~]# cd nginx-1.20.2
[root@localhost nginx-1.20.2]#

[root@localhost nginx-1.20.2]# ./configure --prefix=/usr/local/nginx
5). 执行命令进行编译和安装:
#编译
make#编译安装
make install
1,执行make

[root@localhost nginx-1.20.2]# make
2,编译安装:

[root@localhost nginx-1.20.2]# make install
启动Nginx:
进入到nginx安装目录/usr/local/nginx,启动nginx服务
进入:
cd /usr/local/nginx/
启动:
sbin/nginx
进入到 /usr/local/nginx文件里面:

[root@localhost ~]# cd /usr/local/nginx/
[root@localhost nginx]# ll
启动:

[root@localhost nginx]# sbin/nginx
[root@localhost nginx]#
启动完毕之后,我们可以通过 `ps` 指令查询当前系统中的nginx进程,从而确认nginx是否启动 。
ps -et|grep nginx

[root@localhost nginx]# ps -et|grep nginx
然后,我们就可以打开浏览器,访问服务器上的nginx 。
http://IP地址:80
ip地址是我们Linux的IP地址
80端口是nginx默认端口

项目部署:
nginx服务常见操作指令:
- 启动: sbin/nginx
- 重载: sbin/nginx -s reload
- 停止: sbin/nginx -s stop
部署前端项目:
1,把后端打包好的dist文件夹里面的文件,上传到nginx目录里面的html文件夹里
先进入到nginx的html文件夹:

[root@localhost nginx]# cd html
[root@localhost html]# ll
进入后的效果:
删除html里面默认的两个以html为后缀的文件:
删除后的效果:
上传要部署的前端资源:

选择文件:

已经上传完成后的效果:

2,修改nginx.conf配置文件:
修改nginx的conf文件夹里面的nginx.conf配置文件:
下面是我提供的完整的要替换的nginx.conf配置文件:把它复制粘贴到nginx的conf文件夹,里面的nginx.conf配置文件中。
#user nobody;
worker_processes 1;#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;#log_format main '$remote_addr - $remote_user [$time_local] "$request" '# '$status $body_bytes_sent "$http_referer" '# '"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log main;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;server {listen 80;server_name localhost;client_max_body_size 10m;location / {root html;index index.html index.htm;}location ^~ /api/ {rewrite ^/api/(.*)$ /$1 break;proxy_pass http://localhost:8080;}}}
进入配置文件:

[root@localhost nginx]# cd conf
[root@localhost conf]# ll
替换:
打开了nginx.conf配置文件:

全选要替换的配置文件:
粘贴到nginx的conf文件夹里面的nginx.conf配置文件里面:

3,重新加载nginx服务的配置文件:
#重新加载配置文件
sbin/nginx -s reload
[root@localhost nginx]# sbin/nginx -s reload
[root@localhost nginx]#
4,在次访问nginx

前端部署成功了
部署后端项目:
1,环境准备:
那现在,项目要上线了,要部署到linux服务器上了,我们也需要使用linux服务器上所安装的mysql数据库。
那此时,我们就可以再准备一份文件
application.yml将里面的配置的mysql的ip地址及相关配置信息修改一下(配置Linux上安装的MySQL的信息):
我们的项目没有问题,可以正常启动。

后端打包成功了

在文件夹中找到刚刚打包好的jar包:

就是这个jar包:

2,上传jar包:
1,在Linux服务器上创建一个目录,将jar包上传到服务器 。
mkdir -p /usr/local/app

[root@localhost ~]# mkdir -p /usr/local/app
[root@localhost ~]#
查看app文件夹是否创建成功:

在刚刚创建好的app文件里面,上传jar包:

寻找jar包:


3,通过java命令,启动项目
#进入目录/usr/local/app
cd /usr/local/app#运行jar包
java -jar sky-server-1.0-SNAPSHOT.jar
进入到jar所在文件夹:

[root@localhost ~]# cd /usr/local/app
[root@localhost app]# ll
启动jar包:

[root@localhost app]# java -jar tilas-management-0.0.1-SNAPSHOT.jar
项目成功启动了
前后端联调成功了

当前程序中存在的问题:
线上程序不会采用控制台霸屏的形式运行程序,而是将程序在后台运行
线上程序不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息
要解决上述这两个问题,我们就可以通过 nohup 指令让程序在后台运行。
4,后台运行:
1, 后台运行程序
nohup java –jar tilas-management-0.0.1-RELEASE.jar &> tlias.log &
通过上述指令就可以后台运行服务,服务运行之后, 所有的日志信息都会输出到 tlias.log 文件中。

[root@localhost app]# nohup java -jar tilas-management-0.0.1-SNAPSHOT.jar &> tlias.log &
[1] 11156
看看效果:

可以看到在 app文件夹里面多了一个 tlias.log日志文件,我们查看一下这个文件里面的信息。

这些都是 执行 jar包生成的日志信息
2,停止服务:
#查看服务的进程信息
ps -ef|grep tlias#杀掉进程
kill -9 xxxxx
1,先查询进程

[root@localhost app]# ps -ef|grep tilas
root 11156 19030 2 22:15 pts/0 00:00:12 java -jar tilas-management-0.0.1-SNAPSHOT.jar
root 21823 19030 0 22:24 pts/0 00:00:00 grep --color=auto tilas
[root@localhost app]#
2,杀死进程

[root@localhost app]# kill -9 11156
[root@localhost app]#
在检查一下:

[root@localhost app]# ps -ef|grep tilas
root 24841 19030 0 22:27 pts/0 00:00:00 grep --color=auto tilas
[1]+ 已杀死 nohup java -jar tilas-management-0.0.1-SNAPSHOT.jar &>tlias.log
[root@localhost app]#
nohup命令说明:
nohup命令:英文全称 no hang up(不挂起),用于不挂断地运行指定命令,退出终端不会影响程序的运行
语法格式: nohup Command [ Arg … ] [&]
参数说明:
Command:要执行的命令
Arg:一些参数,可以指定输出文件
&:让命令在后台运行
举例:
- nohup java -jar boot工程.jar &> hello.log &
- 上述指令的含义为: 后台运行 java -jar 命令,并将日志输出到hello.log文件












